{"version":3,"file":"static/js/main.25881fbc.js","mappings":"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AAQ,CACJ49K,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ65G,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJuC,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ65G,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJuC,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,cAIZ96K,OAAQ,CACJ/C,OAAQ,CACJ49K,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJo8G,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJo8G,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,cAIZt7H,SAAU,CACNviD,OAAQ,CACJ49K,YAAa,CACT,KACA,KACA,KACA,MAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,KAEJo8G,KAAM,CACF,cACA,cACA,cACA,gBAGR,cAAe,CACXD,YAAa,CACT,KACA,KACA,KACA,MAEJn8G,OAAQ,CACJ,IACA,IACA,IACA,KAEJo8G,KAAM,CACF,cACA,cACA,cACA,iBAIZC,WAAY,CACR99K,OAAQ,CACJ49K,YAAa,CACTG,SAAU,WACVtpF,GAAI,KACJ,iBAAkB,KAClBupF,KAAM,OACNC,GAAI,KAC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","sources":["../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react/jsx-runtime.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/index.js","../node_modules/isarray/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/react-moment/dist/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/object-assign/index.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/invariant/browser.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/env/data.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/react/cjs/react.production.min.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react/index.js","../node_modules/prop-types/index.js","../node_modules/moment/moment.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/warning/warning.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/react-dom/server.browser.js","../node_modules/hammerjs/hammer.js","../node_modules/oidc-client/lib/oidc-client.min.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/react-router/node_modules/react-is/index.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/react-dom/index.js","../node_modules/path-to-regexp/index.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/classnames/index.js","../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/scheduler/index.js","../node_modules/prop-types-extra/lib/isRequiredForA11y.js","../node_modules/axios/lib/core/Axios.js","../node_modules/react-router/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types-extra/lib/all.js","../node_modules/axios/lib/defaults/transitional.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/react-bootstrap/esm/Row.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/dom-helpers/esm/matches.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/@restart/hooks/esm/useGlobalListener.js","../node_modules/@restart/hooks/esm/useEventListener.js","../node_modules/react-overlays/esm/DropdownContext.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/react-overlays/esm/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/react-overlays/esm/usePopper.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/react-overlays/esm/safeFindDOMNode.js","../node_modules/react-overlays/esm/useRootClose.js","../node_modules/react-overlays/esm/ownerDocument.js","../node_modules/react-overlays/esm/mergeOptionsWithPopperConfig.js","../node_modules/react-overlays/esm/DropdownMenu.js","../node_modules/react-overlays/esm/DropdownToggle.js","../node_modules/react-overlays/esm/Dropdown.js","../node_modules/react-bootstrap/esm/SelectableContext.js","../node_modules/react-bootstrap/esm/NavContext.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../node_modules/react-bootstrap/esm/SafeAnchor.js","../node_modules/react-bootstrap/esm/DropdownItem.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/react-bootstrap/esm/usePopperMarginModifiers.js","../node_modules/react-bootstrap/esm/DropdownMenu.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/react-bootstrap/esm/DropdownToggle.js","../node_modules/dom-helpers/esm/camelize.js","../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../node_modules/react-bootstrap/esm/Dropdown.js","../node_modules/react-bootstrap/esm/DropdownButton.js","../node_modules/react-bootstrap/esm/NavbarBrand.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/Collapse.js","../node_modules/react-bootstrap/esm/NavbarCollapse.js","../node_modules/react-bootstrap/esm/NavbarToggle.js","../node_modules/react-bootstrap/esm/Navbar.js","../node_modules/react-bootstrap/esm/CardContext.js","../node_modules/react-bootstrap/esm/TabContext.js","../node_modules/react-bootstrap/esm/AbstractNav.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/react-bootstrap/esm/AbstractNavItem.js","../node_modules/react-bootstrap/esm/NavLink.js","../node_modules/react-bootstrap/esm/Nav.js","services/AppContext.ts","services/LocalStorage.ts","services/RBACService.ts","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/index.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/oidc-client/src/Log.js","../node_modules/oidc-client/src/ClockService.js","../node_modules/oidc-client/src/Global.js","../node_modules/oidc-client/src/WebStorageStateStore.js","../node_modules/oidc-client/src/JsonService.js","../node_modules/oidc-client/src/MetadataService.js","../node_modules/oidc-client/jsrsasign/dist/jsrsasign.js","../node_modules/oidc-client/src/JoseUtil.js","../node_modules/oidc-client/src/JoseUtilImpl.js","../node_modules/oidc-client/src/crypto/jsrsasign.js","../node_modules/oidc-client/src/UserInfoService.js","../node_modules/oidc-client/src/TokenClient.js","../node_modules/oidc-client/src/ErrorResponse.js","../node_modules/oidc-client/src/ResponseValidator.js","../node_modules/oidc-client/src/OidcClientSettings.js","../node_modules/oidc-client/src/UrlUtility.js","../node_modules/oidc-client/src/random.js","../node_modules/oidc-client/src/State.js","../node_modules/oidc-client/src/SigninState.js","../node_modules/oidc-client/src/SigninRequest.js","../node_modules/oidc-client/src/SigninResponse.js","../node_modules/oidc-client/src/SignoutRequest.js","../node_modules/oidc-client/src/SignoutResponse.js","../node_modules/oidc-client/src/OidcClient.js","../node_modules/oidc-client/src/RedirectNavigator.js","../node_modules/oidc-client/src/PopupWindow.js","../node_modules/oidc-client/src/PopupNavigator.js","../node_modules/oidc-client/src/IFrameWindow.js","../node_modules/oidc-client/src/IFrameNavigator.js","../node_modules/oidc-client/src/UserManagerSettings.js","../node_modules/oidc-client/src/User.js","../node_modules/oidc-client/src/Event.js","../node_modules/oidc-client/src/Timer.js","../node_modules/oidc-client/src/AccessTokenEvents.js","../node_modules/oidc-client/src/UserManagerEvents.js","../node_modules/oidc-client/src/SilentRenewService.js","../node_modules/oidc-client/src/CheckSessionIFrame.js","../node_modules/oidc-client/src/SessionMonitor.js","../node_modules/oidc-client/src/TokenRevocationClient.js","../node_modules/oidc-client/src/UserManager.js","services/oidc/LMIAuthService.js","services/BaseService.ts","services/AnnouncementService.ts","../node_modules/@progress/kendo-data-query/dist/es/utils.js","../node_modules/@progress/kendo-data-query/dist/es/funcs.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-descriptor.interface.js","../node_modules/@progress/kendo-data-query/dist/es/accessor.js","../node_modules/@progress/kendo-data-query/dist/es/odata.operators.js","../node_modules/@progress/kendo-data-query/dist/es/mvc/operators.js","../node_modules/@progress/kendo-data-query/dist/es/filter-serialization.common.js","../node_modules/@progress/kendo-data-query/dist/es/mvc/deserialization.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/@progress/kendo-data-query/dist/es/sorting/sort-array.operator.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/operators.enum.js","../node_modules/@progress/kendo-data-query/dist/es/transducers.js","../node_modules/@progress/kendo-data-query/dist/es/grouping/aggregate.operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter.operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-no-eval.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-expression.factory.js","../node_modules/@progress/kendo-data-query/dist/es/grouping/group.operators.js","../node_modules/@progress/kendo-data-query/dist/es/array.operators.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItem.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItemGroup.js","../node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-common/dist/es/noop.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/@progress/kendo-react-animation/dist/es/util.js","../node_modules/@progress/kendo-react-animation/dist/es/AnimationChild.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@progress/kendo-licensing/dist/index.mjs","../node_modules/@progress/kendo-react-common/dist/es/validate-package.js","../node_modules/@progress/kendo-react-animation/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-animation/dist/es/Animation.js","../node_modules/@progress/kendo-react-animation/dist/es/Reveal.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItemContent.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/default-data.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-string.js","../node_modules/@telerik/kendo-intl/dist/es/errors.js","../node_modules/@telerik/kendo-intl/dist/es/error-details.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/info.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/territory.js","../node_modules/@telerik/kendo-intl/dist/es/common/constants.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/date-format-names.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/parse-range-date.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/currency.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/constants.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/first-day.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/weekend-range.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-negative-zero.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/format-currency-symbol.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/group-integer.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/is-currency-style.js","../node_modules/@telerik/kendo-intl/dist/es/common/pad.js","../node_modules/@telerik/kendo-intl/dist/es/common/round.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/standard-number-format.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/utils.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/custom-number-format.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/format-options.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/format-number.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-number.js","../node_modules/@telerik/kendo-intl/dist/es/numbers/parse-number.js","../node_modules/@telerik/kendo-intl/dist/es/common/format-string.js","../node_modules/@telerik/kendo-intl/dist/es/dates/date-pattern.js","../node_modules/@telerik/kendo-intl/dist/es/dates/date-name-type.js","../node_modules/@telerik/kendo-intl/dist/es/dates/format-names.js","../node_modules/@telerik/kendo-intl/dist/es/common/is-date.js","../node_modules/@telerik/kendo-intl/dist/es/dates/constants.js","../node_modules/@telerik/kendo-intl/dist/es/dates/format-date.js","../node_modules/@telerik/kendo-intl/dist/es/dates/time-utils.js","../node_modules/@telerik/kendo-intl/dist/es/dates/parse-date.js","../node_modules/@telerik/kendo-intl/dist/es/dates/split-date-format.js","../node_modules/@telerik/kendo-intl/dist/es/format.js","../node_modules/@progress/kendo-react-intl/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-grid/dist/es/messages/index.js","../node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlService.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/date-field-name.js","../node_modules/@telerik/kendo-intl/dist/es/cldr/number-symbols.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/messages.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationService.js","../node_modules/@progress/kendo-react-intl/dist/es/globalization/GlobalizationContext.js","../node_modules/@progress/kendo-react-intl/dist/es/intlUtils.js","../node_modules/@progress/kendo-react-grid/dist/es/filterCommon.js","../node_modules/@progress/kendo-react-labels/dist/es/messages/index.js","../node_modules/@progress/kendo-react-common/dist/es/getTabIndex.js","../node_modules/@progress/kendo-react-common/dist/es/keys.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/usePropsContext.js","../node_modules/@progress/kendo-react-common/dist/es/hocs/withPropsContext.js","../node_modules/@progress/kendo-react-labels/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-labels/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-popup/dist/es/animation.js","../node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","../node_modules/@progress/kendo-react-common/dist/es/contexts/ZIndexContext.js","../node_modules/@progress/kendo-popup-common/dist/es/align-point.js","../node_modules/@progress/kendo-popup-common/dist/es/align.js","../node_modules/@progress/kendo-popup-common/dist/es/collision.js","../node_modules/@progress/kendo-popup-common/dist/es/restrict-to-view.js","../node_modules/@progress/kendo-popup-common/dist/es/utils.js","../node_modules/@progress/kendo-popup-common/dist/es/owner-document.js","../node_modules/@progress/kendo-popup-common/dist/es/window.js","../node_modules/@progress/kendo-popup-common/dist/es/document.js","../node_modules/@progress/kendo-popup-common/dist/es/scrollbar-width.js","../node_modules/@progress/kendo-popup-common/dist/es/window-viewport.js","../node_modules/@progress/kendo-popup-common/dist/es/scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/offset.js","../node_modules/@progress/kendo-popup-common/dist/es/element-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/offset-parent.js","../node_modules/@progress/kendo-popup-common/dist/es/offset-parent-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/parent-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/position.js","../node_modules/@progress/kendo-popup-common/dist/es/parents.js","../node_modules/@progress/kendo-popup-common/dist/es/siblings.js","../node_modules/@progress/kendo-popup-common/dist/es/dom-utils.js","../node_modules/@progress/kendo-popup-common/dist/es/add-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/bounding-offset.js","../node_modules/@progress/kendo-popup-common/dist/es/position-with-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/remove-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/sibling-container.js","../node_modules/@progress/kendo-popup-common/dist/es/align-element.js","../node_modules/@progress/kendo-popup-common/dist/es/position-element.js","../node_modules/@progress/kendo-react-popup/dist/es/util.js","../node_modules/@progress/kendo-react-popup/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-popup/dist/es/PopupWithoutContext.js","../node_modules/@progress/kendo-react-popup/dist/es/Popup.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListContainer.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListFilter.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/utils.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListDefaultItem.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListItem.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/messages/index.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/List.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/VirtualScroll.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/Navigation.js","../node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/DropDownBase.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/DropDownList/DropDownList.js","../node_modules/@progress/kendo-react-intl/dist/es/hooks/useInternationalization.js","../node_modules/@progress/kendo-react-intl/dist/es/hooks/useLocalization.js","../node_modules/@progress/kendo-react-common/dist/es/events/dispatchEvent.js","../node_modules/@progress/kendo-react-inputs/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-inputs/dist/es/messages/index.js","../node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/utils/index.js","../node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/NumericTextBox.js","../node_modules/@progress/kendo-date-math/dist/es/clone-date.js","../node_modules/@progress/kendo-date-math/dist/es/adjust-dst.js","../node_modules/@progress/kendo-date-math/dist/es/create-date.js","../node_modules/@progress/kendo-date-math/dist/es/get-date.js","../node_modules/@progress/kendo-react-common/dist/es/hocs/AsyncFocusBlur.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useAsyncFocusBlur.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/package-metadata.js","../node_modules/@progress/kendo-date-math/dist/es/is-equal.js","../node_modules/@progress/kendo-date-math/dist/es/add-days.js","../node_modules/@progress/kendo-date-math/dist/es/last-day-of-month.js","../node_modules/@progress/kendo-date-math/dist/es/add-months.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/mask.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/kendo-date.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/SelectionRange.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/messages/index.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/models/TimePart.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/defaults.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/DateInput.js","../node_modules/@progress/kendo-date-math/dist/es/is-equal-date.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/Virtualization.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/RowHeightService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/ScrollerService.js","../node_modules/@progress/kendo-date-math/dist/es/day.enum.js","../node_modules/@progress/kendo-date-math/dist/es/direction.enum.js","../node_modules/@progress/kendo-date-math/dist/es/day-of-week.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/CalendarViewEnum.js","../node_modules/@progress/kendo-date-math/dist/es/week-in-year.js","../node_modules/@progress/kendo-date-math/dist/es/prev-day-of-week.js","../node_modules/@progress/kendo-date-math/dist/es/constants.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarCell.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarWeekCell.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/WeekNamesService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/View.js","../node_modules/@progress/kendo-react-buttons/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-buttons/dist/es/util.js","../node_modules/@progress/kendo-react-buttons/dist/es/Button.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarHeaderTitle.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Header.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/TodayCommand.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/ViewList.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarNavigationItem.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/NavigationAction.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/CenturyViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Navigation.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DOMService.js","../node_modules/@progress/kendo-date-math/dist/es/set-year.js","../node_modules/@progress/kendo-date-math/dist/es/add-years.js","../node_modules/@progress/kendo-date-math/dist/es/add-decades.js","../node_modules/@progress/kendo-date-math/dist/es/add-centuries.js","../node_modules/@progress/kendo-date-math/dist/es/normalize-year.js","../node_modules/@progress/kendo-date-math/dist/es/first-decade-of-century.js","../node_modules/@progress/kendo-date-math/dist/es/last-decade-of-century.js","../node_modules/@progress/kendo-date-math/dist/es/first-year-of-decade.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-centuries.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DecadeViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/MonthViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/YearViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/BusViewService.js","../node_modules/@progress/kendo-date-math/dist/es/last-year-of-decade.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-decades.js","../node_modules/@progress/kendo-date-math/dist/es/add-weeks.js","../node_modules/@progress/kendo-date-math/dist/es/first-day-of-month.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-months.js","../node_modules/@progress/kendo-date-math/dist/es/set-month.js","../node_modules/@progress/kendo-date-math/dist/es/first-month-of-year.js","../node_modules/@progress/kendo-date-math/dist/es/last-month-of-year.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-years.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/NavigationService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/ScrollSyncService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Calendar.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/ToggleButton.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/common/PickerWrap.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/hooks/usePickerFloatingLabel.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/DatePicker.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilterCell.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilterUI.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilter.js","../node_modules/@progress/kendo-react-common/dist/es/browser-support.service.js","../node_modules/@progress/kendo-react-common/dist/es/scrollbarWidth.js","../node_modules/@progress/kendo-react-common/dist/es/constants/index.js","../node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/constants.js","../node_modules/@progress/kendo-react-common/dist/es/fieldList.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/utils.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/TableKeyboardNavigation.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/constants.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/utils.js","../node_modules/@progress/kendo-react-common/dist/es/hasRelativeStackingContext.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/utils/index.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerNumericButtons.js","../node_modules/@progress/kendo-react-data-tools/dist/es/messages/index.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerInput.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerPageSizes.js","../node_modules/@progress/kendo-react-data-tools/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/Pager.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/TableKeyboardNavigationContext.js","../node_modules/@progress/kendo-draggable-common/dist/es/algorithms/intersect.js","../node_modules/@progress/kendo-draggable-common/dist/es/drag-n-drop.js","../node_modules/@progress/kendo-draggable-common/dist/es/utils/index.js","../node_modules/@progress/kendo-draggable-common/dist/es/auto-scroll.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useInheritedState.js","../node_modules/@progress/kendo-react-common/dist/es/drag-n-drop/context/index.js","../node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useDraggable.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/TableSelection.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/DropClue.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/DragClue.js","../node_modules/@progress/kendo-react-grid/dist/es/GridColumn.js","../node_modules/@progress/kendo-react-grid/dist/es/utils/index.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/hooks.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridSelectionCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridHierarchyCell.js","../node_modules/@progress/kendo-react-grid/dist/es/constants/index.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridEditCell.js","../node_modules/@progress/kendo-react-grid/dist/es/header/Header.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnResizer.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnDraggable.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuWrapper.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderCell.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/HeaderThElement.js","../node_modules/@progress/kendo-react-grid/dist/es/header/HeaderRow.js","../node_modules/@progress/kendo-react-grid/dist/es/interfaces/GridSortSettings.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridFilterCell.js","../node_modules/@progress/kendo-react-grid/dist/es/header/FilterRow.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/GroupingIndicator.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GroupPanel.js","../node_modules/@progress/kendo-react-grid/dist/es/footer/Footer.js","../node_modules/@progress/kendo-react-grid/dist/es/VirtualScroll.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnResize.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/CommonDragLogic.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridGroupCell.js","../node_modules/@progress/kendo-react-grid/dist/es/rows/GridRow.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderSelectionCell.js","../node_modules/@progress/kendo-react-grid/dist/es/GridNoRecords.js","../node_modules/@progress/kendo-react-grid/dist/es/footer/FooterRow.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/@progress/kendo-react-grid/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridDetailCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridDetailHierarchyCell.js","../node_modules/@progress/kendo-react-grid/dist/es/Grid.js","../node_modules/@progress/kendo-react-data-tools/dist/es/virtualization/columns.js","../node_modules/@progress/kendo-react-grid/dist/es/paging/GridPagerSettings.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/dom-helpers/esm/isWindow.js","../node_modules/dom-helpers/esm/isDocument.js","../node_modules/react-overlays/esm/isOverflowing.js","../node_modules/react-overlays/esm/manageAriaHidden.js","../node_modules/react-overlays/esm/ModalManager.js","../node_modules/react-overlays/esm/useWaitForDOMRef.js","../node_modules/react-overlays/esm/Modal.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/react-bootstrap/esm/Modal.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/FormFileInput.js","../node_modules/react-bootstrap/esm/FormFileLabel.js","../node_modules/react-bootstrap/esm/FormFile.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/Form.js","services/Utility.ts","components/adminManagement/announcementManagement/AnnouncementManage.tsx","components/announcement/AnnouncementDisplay.tsx","../node_modules/@progress/kendo-charts/dist/es/common/constants.js","../node_modules/@progress/kendo-charts/dist/es/common/is-array.js","../node_modules/@progress/kendo-charts/dist/es/common/add-class.js","../node_modules/@progress/kendo-charts/dist/es/common/remove-class.js","../node_modules/@progress/kendo-drawing/dist/es/util/defined.js","../node_modules/@progress/kendo-charts/dist/es/common/align-path-to-pixel.js","../node_modules/@progress/kendo-charts/dist/es/common/clockwise.js","../node_modules/@progress/kendo-charts/dist/es/common/is-number.js","../node_modules/@progress/kendo-charts/dist/es/common/is-string.js","../node_modules/@progress/kendo-charts/dist/es/common/convertable-to-number.js","../node_modules/@progress/kendo-charts/dist/es/common/is-function.js","../node_modules/@progress/kendo-charts/dist/es/common/deep-extend.js","../node_modules/@progress/kendo-charts/dist/es/common/is-object.js","../node_modules/@progress/kendo-charts/dist/es/common/style-value.js","../node_modules/@progress/kendo-charts/dist/es/common/element-styles.js","../node_modules/@progress/kendo-charts/dist/es/common/get-spacing.js","../node_modules/@progress/kendo-charts/dist/es/services/template-service.js","../node_modules/@progress/kendo-charts/dist/es/common/get-template.js","../node_modules/@progress/kendo-charts/dist/es/common/getter.js","../node_modules/@progress/kendo-charts/dist/es/common/grep.js","../node_modules/@progress/kendo-charts/dist/es/common/has-classes.js","../node_modules/@progress/kendo-charts/dist/es/common/hash-map.js","../node_modules/@progress/kendo-charts/dist/es/common/in-array.js","../node_modules/@progress/kendo-drawing/dist/es/util/round.js","../node_modules/@progress/kendo-charts/dist/es/common/interpolate-value.js","../node_modules/@progress/kendo-charts/dist/es/common/instance-observer.js","../node_modules/@progress/kendo-charts/dist/es/common/map.js","../node_modules/@progress/kendo-drawing/dist/es/common/support.js","../node_modules/@progress/kendo-charts/dist/es/common/mousewheel-delta.js","../node_modules/@progress/kendo-drawing/dist/es/common/class.js","../node_modules/@progress/kendo-drawing/dist/es/common/log-to-console.js","../node_modules/@progress/kendo-drawing/dist/es/util/append.js","../node_modules/@progress/kendo-drawing/dist/es/util/arabic-to-roman.js","../node_modules/@progress/kendo-drawing/dist/es/util/create-promise.js","../node_modules/@progress/kendo-drawing/dist/es/util/definition-id.js","../node_modules/@progress/kendo-drawing/dist/es/util/constants.js","../node_modules/@progress/kendo-drawing/dist/es/util/deg.js","../node_modules/@progress/kendo-drawing/dist/es/util/encode-utf.js","../node_modules/@progress/kendo-drawing/dist/es/util/encode-base64.js","../node_modules/@progress/kendo-drawing/dist/es/util/event-coordinates.js","../node_modules/@progress/kendo-drawing/dist/es/util/event-element.js","../node_modules/@progress/kendo-drawing/dist/es/util/is-transparent.js","../node_modules/@progress/kendo-drawing/dist/es/util/last.js","../node_modules/@progress/kendo-drawing/dist/es/util/limit-value.js","../node_modules/@progress/kendo-drawing/dist/es/util/merge-sort.js","../node_modules/@progress/kendo-drawing/dist/es/util/now.js","../node_modules/@progress/kendo-drawing/dist/es/util/promise-all.js","../node_modules/@progress/kendo-drawing/dist/es/util/rad.js","../node_modules/@progress/kendo-drawing/dist/es/util/value-or-default.js","../node_modules/@progress/kendo-drawing/dist/es/util/bind-events.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-offset.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-styles.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-size.js","../node_modules/@progress/kendo-drawing/dist/es/util/unbind-events.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-padding.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/matrix.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-scale.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/lru-cache.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/util.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/text-metrics.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/measure-text.js","../node_modules/@progress/kendo-charts/dist/es/drawing-utils.js","../node_modules/@progress/kendo-charts/dist/es/common/font-loader.js","../node_modules/@progress/kendo-charts/dist/es/common/set-default-options.js","../node_modules/@progress/kendo-charts/dist/es/common/render-icon.js","../node_modules/@progress/kendo-charts/dist/es/common/is-plain-object.js","../node_modules/@progress/kendo-charts/dist/es/common/sparse-array-limits.js","../node_modules/@progress/kendo-charts/dist/es/common/find.js","../node_modules/@progress/kendo-charts/dist/es/common/element-scale.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/named-colors.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/parse-color.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/color.js","../node_modules/@progress/kendo-charts/dist/es/common/auto-text-color.js","../node_modules/@progress/kendo-charts/dist/es/common/create-hash-set.js","../node_modules/@progress/kendo-charts/dist/es/common/default-error-handler.js","../node_modules/@progress/kendo-charts/dist/es/common/keys.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-major-unit.js","../node_modules/@progress/kendo-charts/dist/es/core/point.js","../node_modules/@progress/kendo-drawing/dist/es/core/has-observers.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-accessors.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/to-matrix.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/point.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/size.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/rect.js","../node_modules/@progress/kendo-charts/dist/es/core/box.js","../node_modules/@progress/kendo-charts/dist/es/core/ring.js","../node_modules/@progress/kendo-charts/dist/es/core/sector.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/constants.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close-or-less.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/ellipse-extreme-angles.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/transformation.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/transform.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/arc.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersection.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/elements-array.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/geometry-elements-array.js","../node_modules/@progress/kendo-drawing/dist/es/core/options-store.js","../node_modules/@progress/kendo-drawing/dist/es/core/constants.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/element.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/is-out-of-end-point.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/calculate-curve-at.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/to-cubic-polynomial.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/complex-number.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/solve-cubic-equation.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/has-roots-in-range.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersections-count.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-points.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/segment.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/curve-intersections-count.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/points-to-curve.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/paintable.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/measurable.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/shape-map.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/parse-path.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-bounding-box.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-clippend-bounding-box.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/path.js","../node_modules/@progress/kendo-charts/dist/es/core/shape-builder.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/circle.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-geometry.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/circle.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/traversable.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/group.js","../node_modules/@progress/kendo-drawing/dist/es/animations/easing-functions.js","../node_modules/@progress/kendo-drawing/dist/es/common/animation-frame.js","../node_modules/@progress/kendo-drawing/dist/es/animations/animation-factory.js","../node_modules/@progress/kendo-drawing/dist/es/animations/animation.js","../node_modules/@progress/kendo-charts/dist/es/core/chart-element.js","../node_modules/@progress/kendo-charts/dist/es/core/box-element.js","../node_modules/@progress/kendo-charts/dist/es/core/shape-element.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/stops-array.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-options.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient-stop.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/linear-gradient.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/radial-gradient.js","../node_modules/@progress/kendo-charts/dist/es/core/gradients.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/box-diff.js","../node_modules/@progress/kendo-charts/dist/es/core/root-element.js","../node_modules/@progress/kendo-charts/dist/es/core/float-element.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/text.js","../node_modules/@progress/kendo-charts/dist/es/core/text.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/rect-to-box.js","../node_modules/@progress/kendo-charts/dist/es/core/text-box.js","../node_modules/@progress/kendo-charts/dist/es/core/title.js","../node_modules/@progress/kendo-charts/dist/es/core/axis-label.js","../node_modules/@progress/kendo-charts/dist/es/core/note.js","../node_modules/@progress/kendo-charts/dist/es/services/intl-service.js","../node_modules/@progress/kendo-charts/dist/es/services/format-service.js","../node_modules/@progress/kendo-charts/dist/es/services/chart-service.js","../node_modules/@progress/kendo-charts/dist/es/services/dom-events-builder.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/create-axis-tick.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/create-axis-grid-line.js","../node_modules/@progress/kendo-charts/dist/es/core/axis.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/constants.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/absolute-date-diff.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/add-ticks.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/to-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/add-duration.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/start-of-week.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/floor-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/ceil-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-comparer.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-diff.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/to-time.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-equals.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-index.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/duration.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/parse-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/parse-dates.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/first-day.js","../node_modules/@progress/kendo-charts/dist/es/core/category-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/constants.js","../node_modules/@progress/kendo-charts/dist/es/core/date-category-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/floor.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/ceil.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/limit-coordinate.js","../node_modules/@progress/kendo-charts/dist/es/core/numeric-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-axis-min.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-axis-max.js","../node_modules/@progress/kendo-charts/dist/es/core/date-value-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/logarithmic-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/mixins/grid-lines-mixin.js","../node_modules/@progress/kendo-charts/dist/es/core/radar-category-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/polar-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/mixins/radar-numeric-axis-mixin.js","../node_modules/@progress/kendo-charts/dist/es/core/radar-numeric-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/radar-logarithmic-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/curve-processor.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-axis.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/find-axis-by-name.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-pane.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/count-numbers.js","../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/aggregates.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/get-field.js","../node_modules/@progress/kendo-charts/dist/es/chart/series-binder.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/error-range-calculator.js","../node_modules/@progress/kendo-charts/dist/es/chart/constants.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/error-bar-base.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/categorical-error-bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/any-has-z-index.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/append-if-not-null.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/are-numbers.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/segment-visible.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/bind-segments.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/categories-count.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/equals-ignore-case.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/eval-options.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/filter-series-by-type.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/get-date-field.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/has-gradient-overlay.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/has-value.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/is-date-axis.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/single-item-or-array.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/create-out-of-range-points.js","../node_modules/@progress/kendo-charts/dist/es/chart/categorical-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/point-events-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/note-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/step-line-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/step-line-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/spline-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/line-chart-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/clip-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/clip-animation-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/step-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/spline-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/axis-group-range-tracker.js","../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar-label.js","../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/utils.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/cluster-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/stack-wrap.js","../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/candlestick-chart/candlestick.js","../node_modules/@progress/kendo-charts/dist/es/chart/candlestick-chart/candlestick-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/box-plot.js","../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/vertical-box-plot.js","../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/box-plot-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/scatter-error-bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/scatter-charts/scatter-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/bubble-chart/bubble.js","../node_modules/@progress/kendo-charts/dist/es/chart/bubble-chart/bubble-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/target.js","../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/bullet.js","../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/bullet-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/base-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/crosshair/crosshair-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/crosshair/crosshair.js","../node_modules/@progress/kendo-charts/dist/es/chart/chart-container.js","../node_modules/@progress/kendo-charts/dist/es/chart/pane.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/plotarea-base.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/plotarea-events-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/series-aggregator.js","../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/default-aggregates.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-bar-chart/range-bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-bar-chart/range-bar-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-line-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/spline-range-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/step-range-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/ohlc-chart/ohlc-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/ohlc-chart/ohlc-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/waterfall-chart/waterfall-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/waterfall-chart/waterfall-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/trendline-factory.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/calculate-slope.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/linear-trendline.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/calculate-moving-average.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/moving-average.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/trendline-registry.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/categorical-plotarea.js","../node_modules/@progress/kendo-drawing/dist/es/common/observable.js","../node_modules/@progress/kendo-drawing/dist/es/core/surface.js","../node_modules/@progress/kendo-drawing/dist/es/core/base-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-attribute.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-all-attributes.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-style.js","../node_modules/@progress/kendo-drawing/dist/es/svg/node-map.js","../node_modules/@progress/kendo-common/dist/es/util.js","../node_modules/@progress/kendo-common/dist/es/support.js","../node_modules/@progress/kendo-common/dist/es/accessors/getter.js","../node_modules/@progress/kendo-common/dist/es/parse-style.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-set-styles-safe.js","../node_modules/@progress/kendo-drawing/dist/es/svg/constants.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-svg.js","../node_modules/@progress/kendo-drawing/dist/es/common/html-encode.js","../node_modules/@progress/kendo-drawing/dist/es/svg/node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/gradient-stop-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/linear-gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/radial-gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/pattern-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/clip-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/definition-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/root-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/path-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/arc-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/circle-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/group-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/image-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/multi-path-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/rect-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/text-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/surface.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/node-map.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/group-node.js","../node_modules/@progress/kendo-drawing/dist/es/common/throttle.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/root-node.js","../node_modules/@progress/kendo-drawing/dist/es/search/quad-root.js","../node_modules/@progress/kendo-drawing/dist/es/search/quad-node.js","../node_modules/@progress/kendo-drawing/dist/es/search/shapes-quad-tree.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/surface-cursor.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/utils/render-path.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/path-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/arc-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/circle-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/image-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/multi-path-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/rect-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/text-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/surface.js","../node_modules/@progress/kendo-drawing/dist/es/surface-factory.js","../node_modules/@progress/kendo-drawing/dist/es/surface.js","../node_modules/@progress/kendo-charts/dist/es/chart/highlight.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/accept-key.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/to-chart-axis-ranges.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/pannable.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/zoom-selection.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/mousewheel-zoom.js","../node_modules/@progress/kendo-drawing/dist/es/alignment/align-start.js","../node_modules/@progress/kendo-drawing/dist/es/alignment/align-start-reverse.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/layout.js","../node_modules/@progress/kendo-drawing/dist/es/alignment/translate-to-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-item.js","../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/plotarea-factory.js","../node_modules/@progress/kendo-charts/dist/es/chart/selection.js","../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/shared-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/bar-chart-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/bubble-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/fade-in-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/pie-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/scatter-charts/scatter-line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-value-getter.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-linear-trendline.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-moving-average.js","../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-trendline-registry.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/xy-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/pie-chart/pie-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/pie-chart-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/pie-chart/pie-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/pie-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/donut-chart/donut-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/donut-chart/donut-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/donut-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/polar-plotarea-base.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-scatter-chart/polar-scatter-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-line-chart/polar-line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/spline-polar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/polar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/polar-area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/polar-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-line-chart/radar-line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/spline-radar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/radar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/radar-area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-bar-chart/radar-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/radar-cluster-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/radar-stack-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-bar-chart/radar-bar-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/radar-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/funnel-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/funnel-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/pyramid-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/funnel-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/color-scale.js","../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/heatmap-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/heatmap-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/heatmap-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/register-charts.js","../node_modules/@progress/kendo-charts/dist/es/chart/chart.js","../node_modules/@progress/kendo-charts/dist/es/sparkline/shared-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/sparkline/sparkline.js","../node_modules/@progress/kendo-charts/dist/es/stock/fade-out-animation.js","../node_modules/@progress/kendo-charts/dist/es/stock/navigator-hint.js","../node_modules/@progress/kendo-charts/dist/es/stock/constants.js","../node_modules/@progress/kendo-charts/dist/es/stock/navigator.js","../node_modules/@progress/kendo-charts/dist/es/stock/stock-chart.js","../node_modules/@progress/kendo-charts/dist/es/gauges/constants.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/pad.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/build-label-element.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/get-range.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/unpad.js","../node_modules/@progress/kendo-charts/dist/es/gauges/gauge.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-scale.js","../node_modules/@progress/kendo-charts/dist/es/gauges/pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/arrow-linear-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/arrow-linear-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/bar-linear-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/bar-linear-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-gauge.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/arc.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-scale.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-gauge.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/arc-scale.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/range-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/range-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/arc-gauge.js","../node_modules/@progress/kendo-charts/dist/es/gauges/circular/circular-gauge.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/encoding.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code11.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code39.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code39-extended.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code93.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code93-extended.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/postnet.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code128.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/msi.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/ean13.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/ean8.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/main.js","../node_modules/@progress/kendo-charts/dist/es/barcode/surface-size.js","../node_modules/@progress/kendo-charts/dist/es/barcode/barcode.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/image.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/utils.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/free-cell-visitor.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoding-result.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoders/iso-encoder.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoding.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/qr-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/numeric-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/alpha-numeric-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/byte-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/data-mode-instances.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoders/utf8-encoder.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/version-codewords.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/qrcode.js","../node_modules/@progress/kendo-charts/dist/es/map/datums.js","../node_modules/@progress/kendo-charts/dist/es/map/location.js","../node_modules/@progress/kendo-charts/dist/es/map/crs.js","../node_modules/@progress/kendo-charts/dist/es/map/utils.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/observable.js","../node_modules/@progress/kendo-charts/dist/es/map/attribution.js","../node_modules/@progress/kendo-charts/dist/es/map/navigator.js","../node_modules/@progress/kendo-charts/dist/es/map/zoom.js","../node_modules/@progress/kendo-charts/dist/es/map/extent.js","../node_modules/@progress/kendo-charts/dist/es/map/constants.js","../node_modules/@progress/kendo-charts/dist/es/map/tooltip/tooltip.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/layer.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/tile.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/draggable.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/shape.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/bubble.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/marker.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/fx.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/user-events.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/scroller.js","../node_modules/@progress/kendo-charts/dist/es/services/map-service.js","../node_modules/@progress/kendo-charts/dist/es/map/map.js","../node_modules/@progress/kendo-charts/dist/es/chart/base-theme.js","../node_modules/@progress/kendo-react-charts/dist/es/utils/main.js","../node_modules/@progress/kendo-react-charts/dist/es/events/dom-events.js","../node_modules/@progress/kendo-react-charts/dist/es/events/dom-events-builder.js","../node_modules/@progress/kendo-react-charts/dist/es/events/base-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/axis-label-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/preventable-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/drag-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/drag-end-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/drag-start-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-leave-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/navigator-filter-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/note-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/note-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/plot-area-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/plot-area-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/render-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/select-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/select-end-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/select-start-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/series-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/series-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/zoom-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/zoom-end-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/zoom-start-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/chart-event-builder.js","../node_modules/@progress/kendo-react-charts/dist/es/events/dom-event.js","../node_modules/@progress/kendo-react-charts/dist/es/theming/theme-service.js","../node_modules/@progress/kendo-react-charts/dist/es/store/store.js","../node_modules/@progress/kendo-react-charts/dist/es/store/reducer.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Point.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/SharedTooltipContent.js","../node_modules/@progress/kendo-react-charts/dist/es/ChartContext.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Popup.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Series.js","../node_modules/@progress/kendo-react-charts/dist/es/Container.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Crosshair.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/CrosshairContainer.js","../node_modules/@progress/kendo-react-charts/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-charts/dist/es/BaseChart.js","../node_modules/@progress/kendo-react-charts/dist/es/DonutCenter.js","../node_modules/@progress/kendo-react-charts/dist/es/Chart.js","../node_modules/@progress/kendo-react-charts/dist/es/components/base/CollectionConfigurationComponent.js","../node_modules/@progress/kendo-react-charts/dist/es/components/base/ConfigurationComponent.js","../node_modules/@progress/kendo-react-charts/dist/es/components/SeriesItem.js","../node_modules/@progress/kendo-react-charts/dist/es/components/Series.js","../node_modules/@progress/kendo-react-charts/dist/es/components/Legend.js","helpers/helper.ts","components/charts/licenseChart.tsx","components/charts/CourseChart.tsx","services/CoursesService.ts","services/LicenseAllocation.ts","components/Dashboard.tsx","services/SchoolService.ts","components/SchoolDropDown.tsx","services/SchoolYearService.ts","components/SchoolYearDropDown.tsx","services/MenuService.ts","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","shared/GlobalMenu.tsx","services/SchoolInfoService.ts","components/SchoolBanner.tsx","shared/VendorDetail.tsx","components/vendorLicenseAllocation/VendorContentDisplay.tsx","../node_modules/@progress/kendo-react-inputs/dist/es/radiobutton/RadioButton.js","../node_modules/@progress/kendo-react-dialogs/dist/es/DialogTitleBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/DialogActionsBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-dialogs/dist/es/constants.js","../node_modules/@progress/kendo-react-dialogs/dist/es/utils.js","../node_modules/@progress/kendo-react-dialogs/dist/es/Dialog.js","services/SchoolListService.ts","components/vendorLicenseAllocation/VendorManageContent.tsx","components/vendorLicenseAllocation/VendorEditContent.tsx","shared/GridHierarchyExpand.tsx","assets/icons/icon-window-gear.tsx","components/vendorLicenseAllocation/VendorContent.tsx","../node_modules/@restart/hooks/esm/useTimeout.js","../node_modules/react-overlays/esm/Overlay.js","../node_modules/react-bootstrap/esm/Overlay.js","../node_modules/react-bootstrap/esm/OverlayTrigger.js","../node_modules/react-bootstrap/esm/Tooltip.js","../node_modules/react-bootstrap/esm/CardImg.js","../node_modules/react-bootstrap/esm/Card.js","../node_modules/react-bootstrap/esm/InputGroup.js","assets/icons/icon-envelop-course.tsx","shared/SplashScreen.tsx","shared/SharedCoursesList.tsx","components/courses/IndividualCourses.tsx","services/TeacherService.ts","assets/icons/icon-person-circle.tsx","components/courses/AssingedTeachers.tsx","services/AdditionalStaffService.ts","components/courses/AssignedAdditionalStaff.tsx","components/courses/CourseVendorContent.tsx","services/StudentService.ts","assets/icons/icon-student-outline.tsx","../node_modules/@progress/kendo-react-common/dist/es/treeDataOperations.js","../node_modules/@progress/kendo-react-data-tools/dist/es/utils/group-operations.js","components/courses/EnrolledStudent.tsx","components/courses/AddNewCourse.tsx","components/courses/MergeCourses.tsx","components/courses/MergeError.tsx","components/courses/LicenseSummary.tsx","services/CodesetService.ts","components/courses/CourseDetail.tsx","services/VendorContentService.ts","components/courses/AddCoursesForVendorContent.tsx","../node_modules/@progress/kendo-react-inputs/dist/es/checkbox/Checkbox.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useDir.js","components/courses/Courses.tsx","services/PurchaseOrderService.ts","services/VendorService.ts","services/ProductService.ts","components/PurchaseOrder.tsx","services/ReportsService.ts","../node_modules/@progress/kendo-file-saver/dist/es/save-as.js","../node_modules/@progress/kendo-file-saver/dist/es/base64.js","../node_modules/@progress/kendo-ooxml/dist/es/services/template-service.js","../node_modules/@progress/kendo-ooxml/dist/es/utils/getter.js","../node_modules/@progress/kendo-ooxml/dist/es/utils/map.js","../node_modules/@progress/kendo-ooxml/dist/es/excel-exporter.js","../node_modules/@progress/pako-esm/dist/pako-esm5.js","../node_modules/@progress/jszip-esm/dist/jszip-esm5.js","../node_modules/@progress/kendo-ooxml/dist/es/services/intl-service.js","../node_modules/@progress/kendo-ooxml/dist/es/utils/time.js","../node_modules/@progress/kendo-ooxml/dist/es/ooxml.js","../node_modules/@progress/kendo-ooxml/dist/es/utils/create-zip.js","../node_modules/@progress/kendo-react-excel-export/dist/es/ooxml/ExporterColumns.js","../node_modules/@progress/kendo-react-excel-export/dist/es/ooxml/workbook.js","../node_modules/@progress/kendo-react-excel-export/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-excel-export/dist/es/ExcelExport.js","components/Reports/LicenseUsageReport.tsx","components/Reports/LicenseAllocationReport.tsx","components/Reports/PublishedCoursesReport.tsx","components/Reports/TotalCountsReport.tsx","components/Reports/StatusWiseReport.tsx","components/Reports/LicenseTransferHistoryReport.tsx","components/Reports/DailyReport.tsx","components/Reports/MissingTORReport.tsx","../node_modules/@progress/kendo-react-excel-export/dist/es/ExcelExportColumn.js","../node_modules/react-bootstrap/esm/ListGroupItem.js","../node_modules/react-bootstrap/esm/ListGroup.js","components/Reports/TeacherCreatedCourseReport.tsx","components/Reports/SharedInstructionCourseReport.tsx","components/Reports/CourseEnrollmentSummary.tsx","components/Reports/Reports.tsx","shared/ProfileMenu.tsx","components/adminManagement/VendorManagement/VendorContentManagement.tsx","components/adminManagement/VendorManagement/Product.tsx","components/adminManagement/VendorManagement/VendorManage.tsx","services/SchoolLeaderService.ts","components/adminManagement/schoolManagement/SchoolManage.tsx","services/StudentAndStaffService.ts","components/studentAndStaff/StudentCoursesDetails.tsx","components/studentAndStaff/Student.tsx","components/studentAndStaff/StaffCoursesDetails.tsx","components/studentAndStaff/Staff.tsx","components/studentAndStaff/studentAndStaff.tsx","shared/ErrorDisplay.tsx","assets/icons/icon-doe-logo.tsx","shared/Header.tsx","assets/icons/icon-school.tsx","assets/icons/icon-home.tsx","components/adminManagement/schoolYearManage/SchoolYearManage.tsx","shared/ILearnLayout.tsx","services/openid/AuthService.js","shared/Login.tsx","shared/Home.tsx","services/openid/SigninCallback.js","shared/Footer.tsx","shared/ProtectedRoute.tsx","services/oidc/authProvider.jsx","services/oidc/silentRenew.js","App.tsx","reportWebVitals.ts","registerServiceWorker.js","index.tsx"],"sourcesContent":["'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\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\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/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};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\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 var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var 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 var 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);\n","module.exports = require('./lib/axios');","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","'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 * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"react\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"react\"],t):\"object\"==typeof exports?exports[\"react-moment\"]=t(require(\"moment\"),require(\"react\")):e[\"react-moment\"]=t(e.moment,e.react)}(this,(function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=6)}([function(e,t,n){e.exports=n(3)()},function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t,n){\"use strict\";var r=n(4);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var l=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw l.name=\"Invariant Violation\",l}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){var r,o,i,a,l;\n/*! Moment Duration Format v2.2.2\n * https://github.com/jsmreese/moment-duration-format\n * Date: 2018-02-16\n *\n * Duration format plugin function for the Moment.js library\n * http://momentjs.com/\n *\n * Copyright 2018 John Madhavan-Reese\n * Released under the MIT license\n */a=this,l=function(e){var t=!1,n=!1,r=!1,o=!1,i=\"escape years months weeks days hours minutes seconds milliseconds general\".split(\" \"),a=[{type:\"seconds\",targets:[{type:\"minutes\",value:60},{type:\"hours\",value:3600},{type:\"days\",value:86400},{type:\"weeks\",value:604800},{type:\"months\",value:2678400},{type:\"years\",value:31536e3}]},{type:\"minutes\",targets:[{type:\"hours\",value:60},{type:\"days\",value:1440},{type:\"weeks\",value:10080},{type:\"months\",value:44640},{type:\"years\",value:525600}]},{type:\"hours\",targets:[{type:\"days\",value:24},{type:\"weeks\",value:168},{type:\"months\",value:744},{type:\"years\",value:8760}]},{type:\"days\",targets:[{type:\"weeks\",value:7},{type:\"months\",value:31},{type:\"years\",value:365}]},{type:\"months\",targets:[{type:\"years\",value:12}]}];function l(e,t){return!(t.length>e.length)&&-1!==e.indexOf(t)}function u(e){for(var t=\"\";e;)t+=\"0\",e-=1;return t}function s(e,t){var n=e+\"+\"+v(V(t).sort(),(function(e){return e+\":\"+t[e]})).join(\",\");return s.cache[n]||(s.cache[n]=Intl.NumberFormat(e,t)),s.cache[n]}function c(e,t,i){var a,l,f,m=t.useToLocaleString,p=t.useGrouping,g=p&&t.grouping.slice(),y=t.maximumSignificantDigits,h=t.minimumIntegerDigits||1,d=t.fractionDigits||0,v=t.groupingSeparator,b=t.decimalSeparator;if(m&&i){var w,S={minimumIntegerDigits:h,useGrouping:p};return d&&(S.maximumFractionDigits=d,S.minimumFractionDigits=d),y&&e>0&&(S.maximumSignificantDigits=y),r?(o||((w=x({},t)).useGrouping=!1,w.decimalSeparator=\".\",e=parseFloat(c(e,w),10)),s(i,S).format(e)):(n||((w=x({},t)).useGrouping=!1,w.decimalSeparator=\".\",e=parseFloat(c(e,w),10)),e.toLocaleString(i,S))}var T=(y?e.toPrecision(y+1):e.toFixed(d+1)).split(\"e\");f=T[1]||\"\",l=(T=T[0].split(\".\"))[1]||\"\";var O=(a=T[0]||\"\").length,_=l.length,V=O+_,D=a+l;(y&&V===y+1||!y&&_===d+1)&&((D=function(e){for(var t=e.split(\"\").reverse(),n=0,r=!0;r&&n<t.length;)n?\"9\"===t[n]?t[n]=\"0\":(t[n]=(parseInt(t[n],10)+1).toString(),r=!1):(parseInt(t[n],10)<5&&(r=!1),t[n]=\"0\"),n+=1;return r&&t.push(\"1\"),t.reverse().join(\"\")}(D)).length===V+1&&(O+=1),_&&(D=D.slice(0,-1)),a=D.slice(0,O),l=D.slice(O)),y&&(l=l.replace(/0*$/,\"\"));var j=parseInt(f,10);j>0?l.length<=j?(a+=l+=u(j-l.length),l=\"\"):(a+=l.slice(0,j),l=l.slice(j)):j<0&&(l=u(Math.abs(j)-a.length)+a+l,a=\"0\"),y||((l=l.slice(0,d)).length<d&&(l+=u(d-l.length)),a.length<h&&(a=u(h-a.length)+a));var M,P=\"\";if(p)for(T=a;T.length;)g.length&&(M=g.shift()),P&&(P=v+P),P=T.slice(-M)+P,T=T.slice(0,-M);else P=a;return l&&(P=P+b+l),P}function f(e,t){return e.label.length>t.label.length?-1:e.label.length<t.label.length?1:0}function m(e,t){var n=[];return d(V(t),(function(r){if(\"_durationLabels\"===r.slice(0,15)){var o=r.slice(15).toLowerCase();d(V(t[r]),(function(i){i.slice(0,1)===e&&n.push({type:o,key:i,label:t[r][i]})}))}})),n}s.cache={};var p={durationLabelsStandard:{S:\"millisecond\",SS:\"milliseconds\",s:\"second\",ss:\"seconds\",m:\"minute\",mm:\"minutes\",h:\"hour\",hh:\"hours\",d:\"day\",dd:\"days\",w:\"week\",ww:\"weeks\",M:\"month\",MM:\"months\",y:\"year\",yy:\"years\"},durationLabelsShort:{S:\"msec\",SS:\"msecs\",s:\"sec\",ss:\"secs\",m:\"min\",mm:\"mins\",h:\"hr\",hh:\"hrs\",d:\"dy\",dd:\"dys\",w:\"wk\",ww:\"wks\",M:\"mo\",MM:\"mos\",y:\"yr\",yy:\"yrs\"},durationTimeTemplates:{HMS:\"h:mm:ss\",HM:\"h:mm\",MS:\"m:ss\"},durationLabelTypes:[{type:\"standard\",string:\"__\"},{type:\"short\",string:\"_\"}],durationPluralKey:function(e,t,n){return 1===t&&null===n?e:e+e}};function g(e){return\"[object Array]\"===Object.prototype.toString.call(e)}function y(e){return\"[object Object]\"===Object.prototype.toString.call(e)}function h(e,t){var n,r=0,o=e&&e.length||0;for(\"function\"!=typeof t&&(n=t,t=function(e){return e===n});r<o;){if(t(e[r]))return e[r];r+=1}}function d(e,t){var n=0,r=e.length;if(e&&r)for(;n<r;){if(!1===t(e[n],n))return;n+=1}}function v(e,t){var n=0,r=e.length,o=[];if(!e||!r)return o;for(;n<r;)o[n]=t(e[n],n),n+=1;return o}function b(e,t){return v(e,(function(e){return e[t]}))}function w(e){var t=[];return d(e,(function(e){e&&t.push(e)})),t}function S(e){var t=[];return d(e,(function(e){h(t,e)||t.push(e)})),t}function T(e,t){var n=[];return d(e,(function(e){d(t,(function(t){e===t&&n.push(e)}))})),S(n)}function O(e,t){var n=[];return d(e,(function(r,o){if(!t(r))return n=e.slice(o),!1})),n}function _(e,t){return O(e.slice().reverse(),t).reverse()}function x(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function V(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t}function D(e,t){var n=0,r=e.length;if(!e||!r)return!1;for(;n<r;){if(!0===t(e[n],n))return!0;n+=1}return!1}function j(e){var t=[];return d(e,(function(e){t=t.concat(e)})),t}function M(e){return\"3.6\"===e(3.55,\"en\",{useGrouping:!1,minimumIntegerDigits:1,minimumFractionDigits:1,maximumFractionDigits:1})}function P(e){var t=!0;return!!((t=(t=(t=t&&\"1\"===e(1,\"en\",{minimumIntegerDigits:1}))&&\"01\"===e(1,\"en\",{minimumIntegerDigits:2}))&&\"001\"===e(1,\"en\",{minimumIntegerDigits:3}))&&(t=(t=(t=(t=t&&\"100\"===e(99.99,\"en\",{maximumFractionDigits:0,minimumFractionDigits:0}))&&\"100.0\"===e(99.99,\"en\",{maximumFractionDigits:1,minimumFractionDigits:1}))&&\"99.99\"===e(99.99,\"en\",{maximumFractionDigits:2,minimumFractionDigits:2}))&&\"99.990\"===e(99.99,\"en\",{maximumFractionDigits:3,minimumFractionDigits:3}))&&(t=(t=(t=(t=(t=t&&\"100\"===e(99.99,\"en\",{maximumSignificantDigits:1}))&&\"100\"===e(99.99,\"en\",{maximumSignificantDigits:2}))&&\"100\"===e(99.99,\"en\",{maximumSignificantDigits:3}))&&\"99.99\"===e(99.99,\"en\",{maximumSignificantDigits:4}))&&\"99.99\"===e(99.99,\"en\",{maximumSignificantDigits:5}))&&(t=(t=t&&\"1,000\"===e(1e3,\"en\",{useGrouping:!0}))&&\"1000\"===e(1e3,\"en\",{useGrouping:!1})))}function k(){var e,t=[].slice.call(arguments),n={};if(d(t,(function(t,r){if(!r){if(!g(t))throw\"Expected array as the first argument to durationsFormat.\";e=t}\"string\"!=typeof t&&\"function\"!=typeof t?\"number\"!=typeof t?y(t)&&x(n,t):n.precision=t:n.template=t})),!e||!e.length)return[];n.returnMomentTypes=!0;var r=v(e,(function(e){return e.format(n)})),o=T(i,S(b(j(r),\"type\"))),a=n.largest;return a&&(o=o.slice(0,a)),n.returnMomentTypes=!1,n.outputTypes=o,v(e,(function(e){return e.format(n)}))}function E(){var n=[].slice.call(arguments),o=x({},this.format.defaults),u=this.asMilliseconds(),s=this.asMonths();\"function\"==typeof this.isValid&&!1===this.isValid()&&(u=0,s=0);var j=u<0,M=e.duration(Math.abs(u),\"milliseconds\"),P=e.duration(Math.abs(s),\"months\");d(n,(function(e){\"string\"!=typeof e&&\"function\"!=typeof e?\"number\"!=typeof e?y(e)&&x(o,e):o.precision=e:o.template=e}));var k={years:\"y\",months:\"M\",weeks:\"w\",days:\"d\",hours:\"h\",minutes:\"m\",seconds:\"s\",milliseconds:\"S\"},E={escape:/\\[(.+?)\\]/,years:/\\*?[Yy]+/,months:/\\*?M+/,weeks:/\\*?[Ww]+/,days:/\\*?[Dd]+/,hours:/\\*?[Hh]+/,minutes:/\\*?m+/,seconds:/\\*?s+/,milliseconds:/\\*?S+/,general:/.+?/};o.types=i;var L=function(e){return h(i,(function(t){return E[t].test(e)}))},F=new RegExp(v(i,(function(e){return E[e].source})).join(\"|\"),\"g\");o.duration=this;var I=\"function\"==typeof o.template?o.template.apply(o):o.template,N=o.outputTypes,C=o.returnMomentTypes,R=o.largest,G=[];N||(g(o.stopTrim)&&(o.stopTrim=o.stopTrim.join(\"\")),o.stopTrim&&d(o.stopTrim.match(F),(function(e){var t=L(e);\"escape\"!==t&&\"general\"!==t&&G.push(t)})));var U=e.localeData();U||(U={}),d(V(p),(function(e){\"function\"!=typeof p[e]?U[\"_\"+e]||(U[\"_\"+e]=p[e]):U[e]||(U[e]=p[e])})),d(V(U._durationTimeTemplates),(function(e){I=I.replace(\"_\"+e+\"_\",U._durationTimeTemplates[e])}));var q=o.userLocale||e.locale(),z=o.useLeftUnits,H=o.usePlural,W=o.precision,$=o.forceLength,A=o.useGrouping,B=o.trunc,K=o.useSignificantDigits&&W>0,Y=K?o.precision:0,J=Y,Q=o.minValue,X=!1,Z=o.maxValue,ee=!1,te=o.useToLocaleString,ne=o.groupingSeparator,re=o.decimalSeparator,oe=o.grouping;te=te&&(t||r);var ie=o.trim;g(ie)&&(ie=ie.join(\" \")),null===ie&&(R||Z||K)&&(ie=\"all\"),null!==ie&&!0!==ie&&\"left\"!==ie&&\"right\"!==ie||(ie=\"large\"),!1===ie&&(ie=\"\");var ae=function(e){return e.test(ie)},le=/large/,ue=/small/,se=/both/,ce=/mid/,fe=/^all|[^sm]all/,me=/final/,pe=R>0||D([le,se,fe],ae),ge=D([ue,se,fe],ae),ye=D([ce,fe],ae),he=D([me,fe],ae),de=v(I.match(F),(function(e,t){var n=L(e);return\"*\"===e.slice(0,1)&&(e=e.slice(1),\"escape\"!==n&&\"general\"!==n&&G.push(n)),{index:t,length:e.length,text:\"\",token:\"escape\"===n?e.replace(E.escape,\"$1\"):e,type:\"escape\"===n||\"general\"===n?null:n}})),ve={index:0,length:0,token:\"\",text:\"\",type:null},be=[];z&&de.reverse(),d(de,(function(e){if(e.type)return(ve.type||ve.text)&&be.push(ve),void(ve=e);z?ve.text=e.token+ve.text:ve.text+=e.token})),(ve.type||ve.text)&&be.push(ve),z&&be.reverse();var we=T(i,S(w(b(be,\"type\"))));if(!we.length)return b(be,\"text\").join(\"\");we=v(we,(function(e,t){var n,r=t+1===we.length,i=!t;n=\"years\"===e||\"months\"===e?P.as(e):M.as(e);var a=Math.floor(n),l=n-a,u=h(be,(function(t){return e===t.type}));return i&&Z&&n>Z&&(ee=!0),r&&Q&&Math.abs(o.duration.as(e))<Q&&(X=!0),i&&null===$&&u.length>1&&($=!0),M.subtract(a,e),P.subtract(a,e),{rawValue:n,wholeValue:a,decimalValue:r?l:0,isSmallest:r,isLargest:i,type:e,tokenLength:u.length}}));var Se=B?Math.floor:Math.round,Te=function(e,t){var n=Math.pow(10,t);return Se(e*n)/n},Oe=!1,_e=!1,xe=function(e,t){var n={useGrouping:A,groupingSeparator:ne,decimalSeparator:re,grouping:oe,useToLocaleString:te};return K&&(Y<=0?(e.rawValue=0,e.wholeValue=0,e.decimalValue=0):(n.maximumSignificantDigits=Y,e.significantDigits=Y)),ee&&!_e&&(e.isLargest?(e.wholeValue=Z,e.decimalValue=0):(e.wholeValue=0,e.decimalValue=0)),X&&!_e&&(e.isSmallest?(e.wholeValue=Q,e.decimalValue=0):(e.wholeValue=0,e.decimalValue=0)),e.isSmallest||e.significantDigits&&e.significantDigits-e.wholeValue.toString().length<=0?W<0?e.value=Te(e.wholeValue,W):0===W?e.value=Se(e.wholeValue+e.decimalValue):K?(e.value=B?Te(e.rawValue,Y-e.wholeValue.toString().length):e.rawValue,e.wholeValue&&(Y-=e.wholeValue.toString().length)):(n.fractionDigits=W,e.value=B?e.wholeValue+Te(e.decimalValue,W):e.wholeValue+e.decimalValue):K&&e.wholeValue?(e.value=Math.round(Te(e.wholeValue,e.significantDigits-e.wholeValue.toString().length)),Y-=e.wholeValue.toString().length):e.value=e.wholeValue,e.tokenLength>1&&($||Oe)&&(n.minimumIntegerDigits=e.tokenLength,_e&&n.maximumSignificantDigits<e.tokenLength&&delete n.maximumSignificantDigits),!Oe&&(e.value>0||\"\"===ie||h(G,e.type)||h(N,e.type))&&(Oe=!0),e.formattedValue=c(e.value,n,q),n.useGrouping=!1,n.decimalSeparator=\".\",e.formattedValueEn=c(e.value,n,\"en\"),2===e.tokenLength&&\"milliseconds\"===e.type&&(e.formattedValueMS=c(e.value,{minimumIntegerDigits:3,useGrouping:!1},\"en\").slice(0,2)),e};if((we=w(we=v(we,xe))).length>1){var Ve=function(e){return h(we,(function(t){return t.type===e}))},De=function(e){var t=Ve(e.type);t&&d(e.targets,(function(e){var n=Ve(e.type);n&&parseInt(t.formattedValueEn,10)===e.value&&(t.rawValue=0,t.wholeValue=0,t.decimalValue=0,n.rawValue+=1,n.wholeValue+=1,n.decimalValue=0,n.formattedValueEn=n.wholeValue.toString(),_e=!0)}))};d(a,De)}return _e&&(Oe=!1,Y=J,we=w(we=v(we,xe))),!N||ee&&!o.trim?(pe&&(we=O(we,(function(e){return!e.isSmallest&&!e.wholeValue&&!h(G,e.type)}))),R&&we.length&&(we=we.slice(0,R)),ge&&we.length>1&&(we=_(we,(function(e){return!e.wholeValue&&!h(G,e.type)&&!e.isLargest}))),ye&&(we=w(we=v(we,(function(e,t){return t>0&&t<we.length-1&&!e.wholeValue?null:e})))),!he||1!==we.length||we[0].wholeValue||!B&&we[0].isSmallest&&we[0].rawValue<Q||(we=[])):we=w(we=v(we,(function(e){return h(N,(function(t){return e.type===t}))?e:null}))),C?we:(d(be,(function(e){var t=k[e.type],n=h(we,(function(t){return t.type===e.type}));if(t&&n){var r=n.formattedValueEn.split(\".\");r[0]=parseInt(r[0],10),r[1]?r[1]=parseFloat(\"0.\"+r[1],10):r[1]=null;var o=U.durationPluralKey(t,r[0],r[1]),i=m(t,U),a=!1,u={};d(U._durationLabelTypes,(function(t){var n=h(i,(function(e){return e.type===t.type&&e.key===o}));n&&(u[n.type]=n.label,l(e.text,t.string)&&(e.text=e.text.replace(t.string,n.label),a=!0))})),H&&!a&&(i.sort(f),d(i,(function(t){return u[t.type]===t.label?!l(e.text,t.label)&&void 0:l(e.text,t.label)?(e.text=e.text.replace(t.label,u[t.type]),!1):void 0})))}})),(be=v(be,(function(e){if(!e.type)return e.text;var t=h(we,(function(t){return t.type===e.type}));if(!t)return\"\";var n=\"\";return z&&(n+=e.text),(j&&ee||!j&&X)&&(n+=\"< \",ee=!1,X=!1),(j&&X||!j&&ee)&&(n+=\"> \",ee=!1,X=!1),j&&(t.value>0||\"\"===ie||h(G,t.type)||h(N,t.type))&&(n+=\"-\",j=!1),\"milliseconds\"===e.type&&t.formattedValueMS?n+=t.formattedValueMS:n+=t.formattedValue,z||(n+=e.text),n}))).join(\"\").replace(/(,| |:|\\.)*$/,\"\").replace(/^(,| |:|\\.)*/,\"\"))}function L(){var e=this.duration,t=function(t){return e._data[t]},n=h(this.types,t),r=function(e,t){for(var n=e.length;n-=1;)if(t(e[n]))return e[n]}(this.types,t);switch(n){case\"milliseconds\":return\"S __\";case\"seconds\":case\"minutes\":return\"*_MS_\";case\"hours\":return\"_HMS_\";case\"days\":if(n===r)return\"d __\";case\"weeks\":return n===r?\"w __\":(null===this.trim&&(this.trim=\"both\"),\"w __, d __, h __\");case\"months\":if(n===r)return\"M __\";case\"years\":return n===r?\"y __\":(null===this.trim&&(this.trim=\"both\"),\"y __, M __, d __\");default:return null===this.trim&&(this.trim=\"both\"),\"y __, d __, h __, m __, s __\"}}function F(e){if(!e)throw\"Moment Duration Format init cannot find moment instance.\";e.duration.format=k,e.duration.fn.format=E,e.duration.fn.format.defaults={trim:null,stopTrim:null,largest:null,maxValue:null,minValue:null,precision:0,trunc:!1,forceLength:null,userLocale:null,usePlural:!0,useLeftUnits:!1,useGrouping:!0,useSignificantDigits:!1,template:L,useToLocaleString:!0,groupingSeparator:\",\",decimalSeparator:\".\",grouping:[3]},e.updateLocale(\"en\",p)}var I=function(e,t,n){return e.toLocaleString(t,n)};t=function(){try{(0).toLocaleString(\"i\")}catch(e){return\"RangeError\"===e.name}return!1}()&&P(I),n=t&&M(I);var N=function(e,t,n){if(\"undefined\"!=typeof window&&window&&window.Intl&&window.Intl.NumberFormat)return window.Intl.NumberFormat(t,n).format(e)};return r=P(N),o=r&&M(N),F(e),F},o=[n(1)],void 0===(i=\"function\"==typeof(r=l)?r.apply(t,o):r)||(e.exports=i),a&&(a.momentDurationFormatSetup=a.moment?l(a.moment):l)},function(e,t,n){\"use strict\";n.r(t),n.d(t,\"default\",(function(){return _}));var r=n(2),o=n.n(r),i=n(0),a=n.n(i),l=n(1),u=n.n(l);n(5);function s(e){return(s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function m(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e,t,n){return t&&m(e.prototype,t),n&&m(e,n),e}function g(e,t){return(g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=v(e);if(t){var o=v(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return h(this,n)}}function h(e,t){return!t||\"object\"!==s(t)&&\"function\"!=typeof t?d(e):t}function d(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function v(e){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var w=[a.a.string,a.a.number,a.a.array,a.a.object],S=[a.a.string,a.a.array],T=[a.a.object,a.a.bool],O=[a.a.string,a.a.bool],_=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&g(e,t)}(n,e);var t=y(n);function n(e){var r;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),b(d(r=t.call(this,e)),\"setTimer\",(function(){var e=r.props.interval;r.clearTimer(),n.pooledTimer||0===e||(r.timer=setInterval((function(){r.update(r.props)}),e))})),b(d(r),\"getTitle\",(function(){var e=r.props.titleFormat,t=n.getDatetime(r.props),o=e||n.globalFormat;return t.format(o)})),b(d(r),\"clearTimer\",(function(){!n.pooledTimer&&r.timer&&(clearInterval(r.timer),r.timer=null),n.pooledTimer&&!r.timer&&n.removePooledElement(d(r))})),n.globalMoment||(n.globalMoment=u.a),r.state={content:\"\"},r.timer=null,r}return p(n,null,[{key:\"startPooledTimer\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6e4;n.clearPooledTimer(),n.pooledTimer=setInterval((function(){n.pooledElements.forEach((function(e){0!==e.props.interval&&e.update()}))}),e)}},{key:\"clearPooledTimer\",value:function(){n.pooledTimer&&(clearInterval(n.pooledTimer),n.pooledTimer=null,n.pooledElements=[])}},{key:\"pushPooledElement\",value:function(e){e instanceof n?-1===n.pooledElements.indexOf(e)&&n.pooledElements.push(e):console.error(\"Element not an instance of Moment.\")}},{key:\"removePooledElement\",value:function(e){var t=n.pooledElements.indexOf(e);-1!==t&&n.pooledElements.splice(t,1)}},{key:\"getDatetime\",value:function(e){var t=e.utc,r=e.unix,o=e.date,i=e.locale,a=e.parse,l=e.tz,u=e.local;o=o||e.children,a=a||n.globalParse,u=u||n.globalLocal,l=l||n.globalTimezone,i=n.globalLocale?n.globalLocale:i||n.globalMoment.locale();var s=null;return s=t?n.globalMoment.utc(o,a,i):r?n.globalMoment(1e3*o,a,i):n.globalMoment(o,a,i),l?s=s.tz(l):u&&(s=s.local()),s}},{key:\"getContent\",value:function(e){var t=e.fromNow,r=e.fromNowDuring,o=e.from,i=e.add,a=e.subtract,l=e.toNow,s=e.to,c=e.ago,f=e.calendar,m=e.diff,p=e.duration,g=e.durationFromNow,y=e.unit,h=e.decimal,d=e.trim,v=e.format;v=v||n.globalFormat;var b=n.getDatetime(e);i&&b.add(i),a&&b.subtract(a);var w=Boolean(r)&&-b.diff(u()())<r,S=\"\";return S=!v||w||g||p?o?b.from(o,c):t||w?b.fromNow(c):s?b.to(s,c):l?b.toNow(c):f?b.calendar(null,f):m?b.diff(m,y,h):p?b.diff(p):g?u()().diff(b):b.toString():b.format(v),(p||g)&&(S=(S=u.a.duration(S)).format(v,{trim:d})),S=(n.globalFilter||e.filter)(S)}}]),p(n,[{key:\"componentDidMount\",value:function(){this.setTimer(),n.pooledTimer&&n.pushPooledElement(this)}},{key:\"componentDidUpdate\",value:function(e){var t=this.props.interval;e.interval!==t&&this.setTimer()}},{key:\"componentWillUnmount\",value:function(){this.clearTimer()}},{key:\"update\",value:function(e){var t=e||this.props,r=t.onChange,o=n.getContent(t);this.setState({content:o},(function(){r(o)}))}},{key:\"render\",value:function(){var e,t,r,i,a=this.props,l=a.withTitle,u=a.element,s=f(a,[\"withTitle\",\"element\"]),m=this.state.content,p=(e=s,t=n.propTypes,r=Object.keys(t),i=Object.assign({},e),Object.keys(i).filter((function(e){return-1!==r.indexOf(e)})).forEach((function(e){return delete i[e]})),i);return l&&(p.title=this.getTitle()),o.a.createElement(u||n.globalElement,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({dateTime:n.getDatetime(this.props)},p),m)}}],[{key:\"getDerivedStateFromProps\",value:function(e){return{content:n.getContent(e)}}}]),n}(o.a.Component);b(_,\"propTypes\",{element:a.a.any,date:a.a.oneOfType(w),parse:a.a.oneOfType(S),format:a.a.string,add:a.a.object,subtract:a.a.object,ago:a.a.bool,fromNow:a.a.bool,fromNowDuring:a.a.number,from:a.a.oneOfType(w),toNow:a.a.bool,to:a.a.oneOfType(w),calendar:a.a.oneOfType(T),unix:a.a.bool,utc:a.a.bool,local:a.a.bool,tz:a.a.string,withTitle:a.a.bool,titleFormat:a.a.string,locale:a.a.string,interval:a.a.number,diff:a.a.oneOfType(w),duration:a.a.oneOfType(w),durationFromNow:a.a.bool,trim:a.a.oneOfType(O),unit:a.a.string,decimal:a.a.bool,filter:a.a.func,onChange:a.a.func}),b(_,\"defaultProps\",{element:null,fromNow:!1,toNow:!1,calendar:!1,ago:!1,unix:!1,utc:!1,local:!1,unit:null,withTitle:!1,trim:!1,decimal:!1,titleFormat:\"\",interval:6e4,filter:function(e){return e},onChange:function(){}}),b(_,\"globalMoment\",null),b(_,\"globalLocale\",null),b(_,\"globalLocal\",null),b(_,\"globalFormat\",null),b(_,\"globalParse\",null),b(_,\"globalFilter\",null),b(_,\"globalElement\",\"time\"),b(_,\"globalTimezone\",null),b(_,\"pooledElements\",[]),b(_,\"pooledTimer\",null)}])}));","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var 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 if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var 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 var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: 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, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var 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 (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\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', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : 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 if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].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);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\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 * @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 function(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 * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\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 var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var 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\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar utils = require('../utils');\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 * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\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: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar 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// eslint-disable-next-line func-names\n].forEach(function(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 = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=Zc(0);this.expirationTimes=Zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Zc(0);this.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.2\";\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" 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\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\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\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n 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 setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\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: require('./env/FormData')\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 }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\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} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\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 */\nmodule.exports = function settle(resolve, reject, response) {\n var 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\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\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();\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 * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = 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 response.data,\n response.headers,\n config.transformResponse\n );\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 reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\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 && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var 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 {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar 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 * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\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 */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\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 */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\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 (var 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 for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\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 * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n 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 * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\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 * @return {string} content value without BOM\n */\nfunction 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\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\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} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.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 * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction 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 var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","'use strict';\n\nvar utils = require('../utils');\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 * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(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(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var 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 '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 };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\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 */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: 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 */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\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 */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\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 * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom-server.browser.development.js');\n}\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","!function t(e,r){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=r();else if(\"function\"==typeof define&&define.amd)define([],r);else{var n=r();for(var i in n)(\"object\"==typeof exports?exports:e)[i]=n[i]}}(this,(function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function e(){return t.default}:function e(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=22)}([function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}();var i={debug:function t(){},info:function t(){},warn:function t(){},error:function t(){}},o=void 0,s=void 0;(e.Log=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.reset=function t(){s=3,o=i},t.debug=function t(){if(s>=4){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.debug.apply(o,Array.from(r))}},t.info=function t(){if(s>=3){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.info.apply(o,Array.from(r))}},t.warn=function t(){if(s>=2){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.warn.apply(o,Array.from(r))}},t.error=function t(){if(s>=1){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];o.error.apply(o,Array.from(r))}},n(t,null,[{key:\"NONE\",get:function t(){return 0}},{key:\"ERROR\",get:function t(){return 1}},{key:\"WARN\",get:function t(){return 2}},{key:\"INFO\",get:function t(){return 3}},{key:\"DEBUG\",get:function t(){return 4}},{key:\"level\",get:function t(){return s},set:function t(e){if(!(0<=e&&e<=4))throw new Error(\"Invalid log level\");s=e}},{key:\"logger\",get:function t(){return o},set:function t(e){if(!e.debug&&e.info&&(e.debug=e.info),!(e.debug&&e.info&&e.warn&&e.error))throw new Error(\"Invalid logger\");o=e}}]),t}()).reset()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}();var i={setInterval:function(t){function e(e,r){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t,e){return setInterval(t,e)})),clearInterval:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){return clearInterval(t)}))},o=!1,s=null;e.Global=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t._testing=function t(){o=!0},t.setXMLHttpRequest=function t(e){s=e},n(t,null,[{key:\"location\",get:function t(){if(!o)return location}},{key:\"localStorage\",get:function t(){if(!o&&\"undefined\"!=typeof window)return localStorage}},{key:\"sessionStorage\",get:function t(){if(!o&&\"undefined\"!=typeof window)return sessionStorage}},{key:\"XMLHttpRequest\",get:function t(){if(!o&&\"undefined\"!=typeof window)return s||XMLHttpRequest}},{key:\"timer\",get:function t(){if(!o)return i}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.MetadataService=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(7);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var a=\".well-known/openid-configuration\";e.MetadataService=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.JsonService;if(s(this,t),!e)throw i.Log.error(\"MetadataService: No settings passed to MetadataService\"),new Error(\"settings\");this._settings=e,this._jsonService=new r([\"application/jwk-set+json\"])}return t.prototype.resetSigningKeys=function t(){this._settings=this._settings||{},this._settings.signingKeys=void 0},t.prototype.getMetadata=function t(){var e=this;return this._settings.metadata?(i.Log.debug(\"MetadataService.getMetadata: Returning metadata from settings\"),Promise.resolve(this._settings.metadata)):this.metadataUrl?(i.Log.debug(\"MetadataService.getMetadata: getting metadata from\",this.metadataUrl),this._jsonService.getJson(this.metadataUrl).then((function(t){i.Log.debug(\"MetadataService.getMetadata: json received\");var r=e._settings.metadataSeed||{};return e._settings.metadata=Object.assign({},r,t),e._settings.metadata}))):(i.Log.error(\"MetadataService.getMetadata: No authority or metadataUrl configured on settings\"),Promise.reject(new Error(\"No authority or metadataUrl configured on settings\")))},t.prototype.getIssuer=function t(){return this._getMetadataProperty(\"issuer\")},t.prototype.getAuthorizationEndpoint=function t(){return this._getMetadataProperty(\"authorization_endpoint\")},t.prototype.getUserInfoEndpoint=function t(){return this._getMetadataProperty(\"userinfo_endpoint\")},t.prototype.getTokenEndpoint=function t(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._getMetadataProperty(\"token_endpoint\",e)},t.prototype.getCheckSessionIframe=function t(){return this._getMetadataProperty(\"check_session_iframe\",!0)},t.prototype.getEndSessionEndpoint=function t(){return this._getMetadataProperty(\"end_session_endpoint\",!0)},t.prototype.getRevocationEndpoint=function t(){return this._getMetadataProperty(\"revocation_endpoint\",!0)},t.prototype.getKeysEndpoint=function t(){return this._getMetadataProperty(\"jwks_uri\",!0)},t.prototype._getMetadataProperty=function t(e){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return i.Log.debug(\"MetadataService.getMetadataProperty for: \"+e),this.getMetadata().then((function(t){if(i.Log.debug(\"MetadataService.getMetadataProperty: metadata recieved\"),void 0===t[e]){if(!0===r)return void i.Log.warn(\"MetadataService.getMetadataProperty: Metadata does not contain optional property \"+e);throw i.Log.error(\"MetadataService.getMetadataProperty: Metadata does not contain property \"+e),new Error(\"Metadata does not contain property \"+e)}return t[e]}))},t.prototype.getSigningKeys=function t(){var e=this;return this._settings.signingKeys?(i.Log.debug(\"MetadataService.getSigningKeys: Returning signingKeys from settings\"),Promise.resolve(this._settings.signingKeys)):this._getMetadataProperty(\"jwks_uri\").then((function(t){return i.Log.debug(\"MetadataService.getSigningKeys: jwks_uri received\",t),e._jsonService.getJson(t).then((function(t){if(i.Log.debug(\"MetadataService.getSigningKeys: key set received\",t),!t.keys)throw i.Log.error(\"MetadataService.getSigningKeys: Missing keys on keyset\"),new Error(\"Missing keys on keyset\");return e._settings.signingKeys=t.keys,e._settings.signingKeys}))}))},n(t,[{key:\"metadataUrl\",get:function t(){return this._metadataUrl||(this._settings.metadataUrl?this._metadataUrl=this._settings.metadataUrl:(this._metadataUrl=this._settings.authority,this._metadataUrl&&this._metadataUrl.indexOf(a)<0&&(\"/\"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+=\"/\"),this._metadataUrl+=a))),this._metadataUrl}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UrlUtility=void 0;var n=r(0),i=r(1);e.UrlUtility=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.addQueryParam=function t(e,r,n){return e.indexOf(\"?\")<0&&(e+=\"?\"),\"?\"!==e[e.length-1]&&(e+=\"&\"),e+=encodeURIComponent(r),e+=\"=\",e+=encodeURIComponent(n)},t.parseUrlFragment=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#\",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.Global;\"string\"!=typeof e&&(e=o.location.href);var s=e.lastIndexOf(r);s>=0&&(e=e.substr(s+1)),\"?\"===r&&(s=e.indexOf(\"#\"))>=0&&(e=e.substr(0,s));for(var a,u={},c=/([^&=]+)=([^&]*)/g,h=0;a=c.exec(e);)if(u[decodeURIComponent(a[1])]=decodeURIComponent(a[2].replace(/\\+/g,\" \")),h++>50)return n.Log.error(\"UrlUtility.parseUrlFragment: response exceeded expected number of parameters\",e),{error:\"Response exceeded expected number of parameters\"};for(var l in u)return u;return{}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.JoseUtil=void 0;var n=r(26),i=function o(t){return t&&t.__esModule?t:{default:t}}(r(33));e.JoseUtil=(0,i.default)({jws:n.jws,KeyUtil:n.KeyUtil,X509:n.X509,crypto:n.crypto,hextob64u:n.hextob64u,b64tohex:n.b64tohex,AllowedSigningAlgs:n.AllowedSigningAlgs})},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OidcClientSettings=void 0;var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),o=r(0),s=r(23),a=r(6),u=r(24),c=r(2);function h(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var l=\".well-known/openid-configuration\",f=\"id_token\",g=\"openid\",d=\"client_secret_post\";e.OidcClientSettings=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.authority,i=e.metadataUrl,o=e.metadata,l=e.signingKeys,p=e.metadataSeed,v=e.client_id,y=e.client_secret,m=e.response_type,_=void 0===m?f:m,S=e.scope,b=void 0===S?g:S,w=e.redirect_uri,F=e.post_logout_redirect_uri,E=e.client_authentication,x=void 0===E?d:E,A=e.prompt,k=e.display,P=e.max_age,C=e.ui_locales,T=e.acr_values,R=e.resource,I=e.response_mode,D=e.filterProtocolClaims,L=void 0===D||D,N=e.loadUserInfo,U=void 0===N||N,B=e.staleStateAge,O=void 0===B?900:B,j=e.clockSkew,M=void 0===j?300:j,H=e.clockService,V=void 0===H?new s.ClockService:H,K=e.userInfoJwtIssuer,q=void 0===K?\"OP\":K,J=e.mergeClaims,W=void 0!==J&&J,z=e.stateStore,Y=void 0===z?new a.WebStorageStateStore:z,G=e.ResponseValidatorCtor,X=void 0===G?u.ResponseValidator:G,$=e.MetadataServiceCtor,Q=void 0===$?c.MetadataService:$,Z=e.extraQueryParams,tt=void 0===Z?{}:Z,et=e.extraTokenParams,rt=void 0===et?{}:et;h(this,t),this._authority=r,this._metadataUrl=i,this._metadata=o,this._metadataSeed=p,this._signingKeys=l,this._client_id=v,this._client_secret=y,this._response_type=_,this._scope=b,this._redirect_uri=w,this._post_logout_redirect_uri=F,this._client_authentication=x,this._prompt=A,this._display=k,this._max_age=P,this._ui_locales=C,this._acr_values=T,this._resource=R,this._response_mode=I,this._filterProtocolClaims=!!L,this._loadUserInfo=!!U,this._staleStateAge=O,this._clockSkew=M,this._clockService=V,this._userInfoJwtIssuer=q,this._mergeClaims=!!W,this._stateStore=Y,this._validator=new X(this),this._metadataService=new Q(this),this._extraQueryParams=\"object\"===(void 0===tt?\"undefined\":n(tt))?tt:{},this._extraTokenParams=\"object\"===(void 0===rt?\"undefined\":n(rt))?rt:{}}return t.prototype.getEpochTime=function t(){return this._clockService.getEpochTime()},i(t,[{key:\"client_id\",get:function t(){return this._client_id},set:function t(e){if(this._client_id)throw o.Log.error(\"OidcClientSettings.set_client_id: client_id has already been assigned.\"),new Error(\"client_id has already been assigned.\");this._client_id=e}},{key:\"client_secret\",get:function t(){return this._client_secret}},{key:\"response_type\",get:function t(){return this._response_type}},{key:\"scope\",get:function t(){return this._scope}},{key:\"redirect_uri\",get:function t(){return this._redirect_uri}},{key:\"post_logout_redirect_uri\",get:function t(){return this._post_logout_redirect_uri}},{key:\"client_authentication\",get:function t(){return this._client_authentication}},{key:\"prompt\",get:function t(){return this._prompt}},{key:\"display\",get:function t(){return this._display}},{key:\"max_age\",get:function t(){return this._max_age}},{key:\"ui_locales\",get:function t(){return this._ui_locales}},{key:\"acr_values\",get:function t(){return this._acr_values}},{key:\"resource\",get:function t(){return this._resource}},{key:\"response_mode\",get:function t(){return this._response_mode}},{key:\"authority\",get:function t(){return this._authority},set:function t(e){if(this._authority)throw o.Log.error(\"OidcClientSettings.set_authority: authority has already been assigned.\"),new Error(\"authority has already been assigned.\");this._authority=e}},{key:\"metadataUrl\",get:function t(){return this._metadataUrl||(this._metadataUrl=this.authority,this._metadataUrl&&this._metadataUrl.indexOf(l)<0&&(\"/\"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+=\"/\"),this._metadataUrl+=l)),this._metadataUrl}},{key:\"metadata\",get:function t(){return this._metadata},set:function t(e){this._metadata=e}},{key:\"metadataSeed\",get:function t(){return this._metadataSeed},set:function t(e){this._metadataSeed=e}},{key:\"signingKeys\",get:function t(){return this._signingKeys},set:function t(e){this._signingKeys=e}},{key:\"filterProtocolClaims\",get:function t(){return this._filterProtocolClaims}},{key:\"loadUserInfo\",get:function t(){return this._loadUserInfo}},{key:\"staleStateAge\",get:function t(){return this._staleStateAge}},{key:\"clockSkew\",get:function t(){return this._clockSkew}},{key:\"userInfoJwtIssuer\",get:function t(){return this._userInfoJwtIssuer}},{key:\"mergeClaims\",get:function t(){return this._mergeClaims}},{key:\"stateStore\",get:function t(){return this._stateStore}},{key:\"validator\",get:function t(){return this._validator}},{key:\"metadataService\",get:function t(){return this._metadataService}},{key:\"extraQueryParams\",get:function t(){return this._extraQueryParams},set:function t(e){\"object\"===(void 0===e?\"undefined\":n(e))?this._extraQueryParams=e:this._extraQueryParams={}}},{key:\"extraTokenParams\",get:function t(){return this._extraTokenParams},set:function t(e){\"object\"===(void 0===e?\"undefined\":n(e))?this._extraTokenParams=e:this._extraTokenParams={}}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.WebStorageStateStore=void 0;var n=r(0),i=r(1);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.WebStorageStateStore=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.prefix,n=void 0===r?\"oidc.\":r,s=e.store,a=void 0===s?i.Global.localStorage:s;o(this,t),this._store=a,this._prefix=n}return t.prototype.set=function t(e,r){return n.Log.debug(\"WebStorageStateStore.set\",e),e=this._prefix+e,this._store.setItem(e,r),Promise.resolve()},t.prototype.get=function t(e){n.Log.debug(\"WebStorageStateStore.get\",e),e=this._prefix+e;var r=this._store.getItem(e);return Promise.resolve(r)},t.prototype.remove=function t(e){n.Log.debug(\"WebStorageStateStore.remove\",e),e=this._prefix+e;var r=this._store.getItem(e);return this._store.removeItem(e),Promise.resolve(r)},t.prototype.getAllKeys=function t(){n.Log.debug(\"WebStorageStateStore.getAllKeys\");for(var e=[],r=0;r<this._store.length;r++){var i=this._store.key(r);0===i.indexOf(this._prefix)&&e.push(i.substr(this._prefix.length))}return Promise.resolve(e)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.JsonService=void 0;var n=r(0),i=r(1);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.JsonService=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.Global.XMLHttpRequest,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;o(this,t),e&&Array.isArray(e)?this._contentTypes=e.slice():this._contentTypes=[],this._contentTypes.push(\"application/json\"),n&&this._contentTypes.push(\"application/jwt\"),this._XMLHttpRequest=r,this._jwtHandler=n}return t.prototype.getJson=function t(e,r){var i=this;if(!e)throw n.Log.error(\"JsonService.getJson: No url passed\"),new Error(\"url\");return n.Log.debug(\"JsonService.getJson, url: \",e),new Promise((function(t,o){var s=new i._XMLHttpRequest;s.open(\"GET\",e);var a=i._contentTypes,u=i._jwtHandler;s.onload=function(){if(n.Log.debug(\"JsonService.getJson: HTTP response received, status\",s.status),200===s.status){var r=s.getResponseHeader(\"Content-Type\");if(r){var i=a.find((function(t){if(r.startsWith(t))return!0}));if(\"application/jwt\"==i)return void u(s).then(t,o);if(i)try{return void t(JSON.parse(s.responseText))}catch(t){return n.Log.error(\"JsonService.getJson: Error parsing JSON response\",t.message),void o(t)}}o(Error(\"Invalid response Content-Type: \"+r+\", from URL: \"+e))}else o(Error(s.statusText+\" (\"+s.status+\")\"))},s.onerror=function(){n.Log.error(\"JsonService.getJson: network error\"),o(Error(\"Network Error\"))},r&&(n.Log.debug(\"JsonService.getJson: token passed, setting Authorization header\"),s.setRequestHeader(\"Authorization\",\"Bearer \"+r)),s.send()}))},t.prototype.postForm=function t(e,r,i){var o=this;if(!e)throw n.Log.error(\"JsonService.postForm: No url passed\"),new Error(\"url\");return n.Log.debug(\"JsonService.postForm, url: \",e),new Promise((function(t,s){var a=new o._XMLHttpRequest;a.open(\"POST\",e);var u=o._contentTypes;a.onload=function(){if(n.Log.debug(\"JsonService.postForm: HTTP response received, status\",a.status),200!==a.status){if(400===a.status)if(i=a.getResponseHeader(\"Content-Type\"))if(u.find((function(t){if(i.startsWith(t))return!0})))try{var r=JSON.parse(a.responseText);if(r&&r.error)return n.Log.error(\"JsonService.postForm: Error from server: \",r.error),void s(new Error(r.error))}catch(t){return n.Log.error(\"JsonService.postForm: Error parsing JSON response\",t.message),void s(t)}s(Error(a.statusText+\" (\"+a.status+\")\"))}else{var i;if((i=a.getResponseHeader(\"Content-Type\"))&&u.find((function(t){if(i.startsWith(t))return!0})))try{return void t(JSON.parse(a.responseText))}catch(t){return n.Log.error(\"JsonService.postForm: Error parsing JSON response\",t.message),void s(t)}s(Error(\"Invalid response Content-Type: \"+i+\", from URL: \"+e))}},a.onerror=function(){n.Log.error(\"JsonService.postForm: network error\"),s(Error(\"Network Error\"))};var c=\"\";for(var h in r){var l=r[h];l&&(c.length>0&&(c+=\"&\"),c+=encodeURIComponent(h),c+=\"=\",c+=encodeURIComponent(l))}a.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),void 0!==i&&a.setRequestHeader(\"Authorization\",\"Basic \"+btoa(i)),a.send(c)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninRequest=void 0;var n=r(0),i=r(3),o=r(13);e.SigninRequest=function(){function t(e){var r=e.url,s=e.client_id,a=e.redirect_uri,u=e.response_type,c=e.scope,h=e.authority,l=e.data,f=e.prompt,g=e.display,d=e.max_age,p=e.ui_locales,v=e.id_token_hint,y=e.login_hint,m=e.acr_values,_=e.resource,S=e.response_mode,b=e.request,w=e.request_uri,F=e.extraQueryParams,E=e.request_type,x=e.client_secret,A=e.extraTokenParams,k=e.skipUserInfo;if(function P(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),!r)throw n.Log.error(\"SigninRequest.ctor: No url passed\"),new Error(\"url\");if(!s)throw n.Log.error(\"SigninRequest.ctor: No client_id passed\"),new Error(\"client_id\");if(!a)throw n.Log.error(\"SigninRequest.ctor: No redirect_uri passed\"),new Error(\"redirect_uri\");if(!u)throw n.Log.error(\"SigninRequest.ctor: No response_type passed\"),new Error(\"response_type\");if(!c)throw n.Log.error(\"SigninRequest.ctor: No scope passed\"),new Error(\"scope\");if(!h)throw n.Log.error(\"SigninRequest.ctor: No authority passed\"),new Error(\"authority\");var C=t.isOidc(u),T=t.isCode(u);S||(S=t.isCode(u)?\"query\":null),this.state=new o.SigninState({nonce:C,data:l,client_id:s,authority:h,redirect_uri:a,code_verifier:T,request_type:E,response_mode:S,client_secret:x,scope:c,extraTokenParams:A,skipUserInfo:k}),r=i.UrlUtility.addQueryParam(r,\"client_id\",s),r=i.UrlUtility.addQueryParam(r,\"redirect_uri\",a),r=i.UrlUtility.addQueryParam(r,\"response_type\",u),r=i.UrlUtility.addQueryParam(r,\"scope\",c),r=i.UrlUtility.addQueryParam(r,\"state\",this.state.id),C&&(r=i.UrlUtility.addQueryParam(r,\"nonce\",this.state.nonce)),T&&(r=i.UrlUtility.addQueryParam(r,\"code_challenge\",this.state.code_challenge),r=i.UrlUtility.addQueryParam(r,\"code_challenge_method\",\"S256\"));var R={prompt:f,display:g,max_age:d,ui_locales:p,id_token_hint:v,login_hint:y,acr_values:m,resource:_,request:b,request_uri:w,response_mode:S};for(var I in R)R[I]&&(r=i.UrlUtility.addQueryParam(r,I,R[I]));for(var D in F)r=i.UrlUtility.addQueryParam(r,D,F[D]);this.url=r}return t.isOidc=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"id_token\"===t}))[0]},t.isOAuth=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"token\"===t}))[0]},t.isCode=function t(e){return!!e.split(/\\s+/g).filter((function(t){return\"code\"===t}))[0]},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.State=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=function s(t){return t&&t.__esModule?t:{default:t}}(r(14));function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.State=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.id,n=e.data,i=e.created,s=e.request_type;a(this,t),this._id=r||(0,o.default)(),this._data=n,this._created=\"number\"==typeof i&&i>0?i:parseInt(Date.now()/1e3),this._request_type=s}return t.prototype.toStorageString=function t(){return i.Log.debug(\"State.toStorageString\"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type})},t.fromStorageString=function e(r){return i.Log.debug(\"State.fromStorageString\"),new t(JSON.parse(r))},t.clearStaleState=function e(r,n){var o=Date.now()/1e3-n;return r.getAllKeys().then((function(e){i.Log.debug(\"State.clearStaleState: got keys\",e);for(var n=[],s=function s(a){var c=e[a];u=r.get(c).then((function(e){var n=!1;if(e)try{var s=t.fromStorageString(e);i.Log.debug(\"State.clearStaleState: got item from key: \",c,s.created),s.created<=o&&(n=!0)}catch(t){i.Log.error(\"State.clearStaleState: Error parsing state for key\",c,t.message),n=!0}else i.Log.debug(\"State.clearStaleState: no item in storage for key: \",c),n=!0;if(n)return i.Log.debug(\"State.clearStaleState: removed item for key: \",c),r.remove(c)})),n.push(u)},a=0;a<e.length;a++){var u;s(a)}return i.Log.debug(\"State.clearStaleState: waiting on promise count:\",n.length),Promise.all(n)}))},n(t,[{key:\"id\",get:function t(){return this._id}},{key:\"data\",get:function t(){return this._data}},{key:\"created\",get:function t(){return this._created}},{key:\"request_type\",get:function t(){return this._request_type}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.OidcClient=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(5),s=r(12),a=r(8),u=r(34),c=r(35),h=r(36),l=r(13),f=r(9);function g(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.OidcClient=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};g(this,t),e instanceof o.OidcClientSettings?this._settings=e:this._settings=new o.OidcClientSettings(e)}return t.prototype.createSigninRequest=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.response_type,o=r.scope,s=r.redirect_uri,u=r.data,c=r.state,h=r.prompt,l=r.display,f=r.max_age,g=r.ui_locales,d=r.id_token_hint,p=r.login_hint,v=r.acr_values,y=r.resource,m=r.request,_=r.request_uri,S=r.response_mode,b=r.extraQueryParams,w=r.extraTokenParams,F=r.request_type,E=r.skipUserInfo,x=arguments[1];i.Log.debug(\"OidcClient.createSigninRequest\");var A=this._settings.client_id;n=n||this._settings.response_type,o=o||this._settings.scope,s=s||this._settings.redirect_uri,h=h||this._settings.prompt,l=l||this._settings.display,f=f||this._settings.max_age,g=g||this._settings.ui_locales,v=v||this._settings.acr_values,y=y||this._settings.resource,S=S||this._settings.response_mode,b=b||this._settings.extraQueryParams,w=w||this._settings.extraTokenParams;var k=this._settings.authority;return a.SigninRequest.isCode(n)&&\"code\"!==n?Promise.reject(new Error(\"OpenID Connect hybrid flow is not supported\")):this._metadataService.getAuthorizationEndpoint().then((function(t){i.Log.debug(\"OidcClient.createSigninRequest: Received authorization endpoint\",t);var r=new a.SigninRequest({url:t,client_id:A,redirect_uri:s,response_type:n,scope:o,data:u||c,authority:k,prompt:h,display:l,max_age:f,ui_locales:g,id_token_hint:d,login_hint:p,acr_values:v,resource:y,request:m,request_uri:_,extraQueryParams:b,extraTokenParams:w,request_type:F,response_mode:S,client_secret:e._settings.client_secret,skipUserInfo:E}),P=r.state;return(x=x||e._stateStore).set(P.id,P.toStorageString()).then((function(){return r}))}))},t.prototype.readSigninResponseState=function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug(\"OidcClient.readSigninResponseState\");var o=\"query\"===this._settings.response_mode||!this._settings.response_mode&&a.SigninRequest.isCode(this._settings.response_type),s=o?\"?\":\"#\",c=new u.SigninResponse(e,s);if(!c.state)return i.Log.error(\"OidcClient.readSigninResponseState: No state in response\"),Promise.reject(new Error(\"No state in response\"));r=r||this._stateStore;var h=n?r.remove.bind(r):r.get.bind(r);return h(c.state).then((function(t){if(!t)throw i.Log.error(\"OidcClient.readSigninResponseState: No matching state found in storage\"),new Error(\"No matching state found in storage\");return{state:l.SigninState.fromStorageString(t),response:c}}))},t.prototype.processSigninResponse=function t(e,r){var n=this;return i.Log.debug(\"OidcClient.processSigninResponse\"),this.readSigninResponseState(e,r,!0).then((function(t){var e=t.state,r=t.response;return i.Log.debug(\"OidcClient.processSigninResponse: Received state from storage; validating response\"),n._validator.validateSigninResponse(e,r)}))},t.prototype.createSignoutRequest=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.id_token_hint,o=r.data,s=r.state,a=r.post_logout_redirect_uri,u=r.extraQueryParams,h=r.request_type,l=arguments[1];return i.Log.debug(\"OidcClient.createSignoutRequest\"),a=a||this._settings.post_logout_redirect_uri,u=u||this._settings.extraQueryParams,this._metadataService.getEndSessionEndpoint().then((function(t){if(!t)throw i.Log.error(\"OidcClient.createSignoutRequest: No end session endpoint url returned\"),new Error(\"no end session endpoint\");i.Log.debug(\"OidcClient.createSignoutRequest: Received end session endpoint\",t);var r=new c.SignoutRequest({url:t,id_token_hint:n,post_logout_redirect_uri:a,data:o||s,extraQueryParams:u,request_type:h}),f=r.state;return f&&(i.Log.debug(\"OidcClient.createSignoutRequest: Signout request has state to persist\"),(l=l||e._stateStore).set(f.id,f.toStorageString())),r}))},t.prototype.readSignoutResponseState=function t(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug(\"OidcClient.readSignoutResponseState\");var o=new h.SignoutResponse(e);if(!o.state)return i.Log.debug(\"OidcClient.readSignoutResponseState: No state in response\"),o.error?(i.Log.warn(\"OidcClient.readSignoutResponseState: Response was error: \",o.error),Promise.reject(new s.ErrorResponse(o))):Promise.resolve({state:void 0,response:o});var a=o.state;r=r||this._stateStore;var u=n?r.remove.bind(r):r.get.bind(r);return u(a).then((function(t){if(!t)throw i.Log.error(\"OidcClient.readSignoutResponseState: No matching state found in storage\"),new Error(\"No matching state found in storage\");return{state:f.State.fromStorageString(t),response:o}}))},t.prototype.processSignoutResponse=function t(e,r){var n=this;return i.Log.debug(\"OidcClient.processSignoutResponse\"),this.readSignoutResponseState(e,r,!0).then((function(t){var e=t.state,r=t.response;return e?(i.Log.debug(\"OidcClient.processSignoutResponse: Received state from storage; validating response\"),n._validator.validateSignoutResponse(e,r)):(i.Log.debug(\"OidcClient.processSignoutResponse: No state from storage; skipping validating response\"),r)}))},t.prototype.clearStaleState=function t(e){return i.Log.debug(\"OidcClient.clearStaleState\"),e=e||this._stateStore,f.State.clearStaleState(e,this.settings.staleStateAge)},n(t,[{key:\"_stateStore\",get:function t(){return this.settings.stateStore}},{key:\"_validator\",get:function t(){return this.settings.validator}},{key:\"_metadataService\",get:function t(){return this.settings.metadataService}},{key:\"settings\",get:function t(){return this._settings}},{key:\"metadataService\",get:function t(){return this._metadataService}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenClient=void 0;var n=r(7),i=r(2),o=r(0);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.TokenClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw o.Log.error(\"TokenClient.ctor: No settings passed\"),new Error(\"settings\");this._settings=e,this._jsonService=new r,this._metadataService=new a(this._settings)}return t.prototype.exchangeCode=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).grant_type=r.grant_type||\"authorization_code\",r.client_id=r.client_id||this._settings.client_id,r.client_secret=r.client_secret||this._settings.client_secret,r.redirect_uri=r.redirect_uri||this._settings.redirect_uri;var n=void 0,i=r._client_authentication||this._settings._client_authentication;return delete r._client_authentication,r.code?r.redirect_uri?r.code_verifier?r.client_id?r.client_secret||\"client_secret_basic\"!=i?(\"client_secret_basic\"==i&&(n=r.client_id+\":\"+r.client_secret,delete r.client_id,delete r.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(t){return o.Log.debug(\"TokenClient.exchangeCode: Received token endpoint\"),e._jsonService.postForm(t,r,n).then((function(t){return o.Log.debug(\"TokenClient.exchangeCode: response received\"),t}))}))):(o.Log.error(\"TokenClient.exchangeCode: No client_secret passed\"),Promise.reject(new Error(\"A client_secret is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No client_id passed\"),Promise.reject(new Error(\"A client_id is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No code_verifier passed\"),Promise.reject(new Error(\"A code_verifier is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No redirect_uri passed\"),Promise.reject(new Error(\"A redirect_uri is required\"))):(o.Log.error(\"TokenClient.exchangeCode: No code passed\"),Promise.reject(new Error(\"A code is required\")))},t.prototype.exchangeRefreshToken=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).grant_type=r.grant_type||\"refresh_token\",r.client_id=r.client_id||this._settings.client_id,r.client_secret=r.client_secret||this._settings.client_secret;var n=void 0,i=r._client_authentication||this._settings._client_authentication;return delete r._client_authentication,r.refresh_token?r.client_id?(\"client_secret_basic\"==i&&(n=r.client_id+\":\"+r.client_secret,delete r.client_id,delete r.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(t){return o.Log.debug(\"TokenClient.exchangeRefreshToken: Received token endpoint\"),e._jsonService.postForm(t,r,n).then((function(t){return o.Log.debug(\"TokenClient.exchangeRefreshToken: response received\"),t}))}))):(o.Log.error(\"TokenClient.exchangeRefreshToken: No client_id passed\"),Promise.reject(new Error(\"A client_id is required\"))):(o.Log.error(\"TokenClient.exchangeRefreshToken: No refresh_token passed\"),Promise.reject(new Error(\"A refresh_token is required\")))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ErrorResponse=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function o(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.ErrorResponse=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=r.error,a=r.error_description,u=r.error_uri,c=r.state,h=r.session_state;if(i(this,e),!s)throw n.Log.error(\"No error passed to ErrorResponse\"),new Error(\"error\");var l=o(this,t.call(this,a||s));return l.name=\"ErrorResponse\",l.error=s,l.error_description=a,l.error_uri=u,l.state=c,l.session_state=h,l}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(Error)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninState=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(9),s=r(4),a=function u(t){return t&&t.__esModule?t:{default:t}}(r(14));function c(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function h(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.SigninState=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.nonce,i=r.authority,o=r.client_id,u=r.redirect_uri,l=r.code_verifier,f=r.response_mode,g=r.client_secret,d=r.scope,p=r.extraTokenParams,v=r.skipUserInfo;c(this,e);var y=h(this,t.call(this,arguments[0]));if(!0===n?y._nonce=(0,a.default)():n&&(y._nonce=n),!0===l?y._code_verifier=(0,a.default)()+(0,a.default)()+(0,a.default)():l&&(y._code_verifier=l),y.code_verifier){var m=s.JoseUtil.hashString(y.code_verifier,\"SHA256\");y._code_challenge=s.JoseUtil.hexToBase64Url(m)}return y._redirect_uri=u,y._authority=i,y._client_id=o,y._response_mode=f,y._client_secret=g,y._scope=d,y._extraTokenParams=p,y._skipUserInfo=v,y}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.toStorageString=function t(){return i.Log.debug(\"SigninState.toStorageString\"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,nonce:this.nonce,code_verifier:this.code_verifier,redirect_uri:this.redirect_uri,authority:this.authority,client_id:this.client_id,response_mode:this.response_mode,client_secret:this.client_secret,scope:this.scope,extraTokenParams:this.extraTokenParams,skipUserInfo:this.skipUserInfo})},e.fromStorageString=function t(r){return i.Log.debug(\"SigninState.fromStorageString\"),new e(JSON.parse(r))},n(e,[{key:\"nonce\",get:function t(){return this._nonce}},{key:\"authority\",get:function t(){return this._authority}},{key:\"client_id\",get:function t(){return this._client_id}},{key:\"redirect_uri\",get:function t(){return this._redirect_uri}},{key:\"code_verifier\",get:function t(){return this._code_verifier}},{key:\"code_challenge\",get:function t(){return this._code_challenge}},{key:\"response_mode\",get:function t(){return this._response_mode}},{key:\"client_secret\",get:function t(){return this._client_secret}},{key:\"scope\",get:function t(){return this._scope}},{key:\"extraTokenParams\",get:function t(){return this._extraTokenParams}},{key:\"skipUserInfo\",get:function t(){return this._skipUserInfo}}]),e}(o.State)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function n(){return(\"undefined\"!=i&&null!==i&&void 0!==i.getRandomValues?o:s)().replace(/-/g,\"\")};var i=\"undefined\"!=typeof window?window.crypto||window.msCrypto:null;function o(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^i.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function s(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^16*Math.random()>>t/4).toString(16)}))}t.exports=e.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.User=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.User=function(){function t(e){var r=e.id_token,n=e.session_state,i=e.access_token,o=e.refresh_token,s=e.token_type,a=e.scope,u=e.profile,c=e.expires_at,h=e.state;!function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.id_token=r,this.session_state=n,this.access_token=i,this.refresh_token=o,this.token_type=s,this.scope=a,this.profile=u,this.expires_at=c,this.state=h}return t.prototype.toStorageString=function t(){return i.Log.debug(\"User.toStorageString\"),JSON.stringify({id_token:this.id_token,session_state:this.session_state,access_token:this.access_token,refresh_token:this.refresh_token,token_type:this.token_type,scope:this.scope,profile:this.profile,expires_at:this.expires_at})},t.fromStorageString=function e(r){return i.Log.debug(\"User.fromStorageString\"),new t(JSON.parse(r))},n(t,[{key:\"expires_in\",get:function t(){if(this.expires_at){var e=parseInt(Date.now()/1e3);return this.expires_at-e}},set:function t(e){var r=parseInt(e);if(\"number\"==typeof r&&r>0){var n=parseInt(Date.now()/1e3);this.expires_at=n+r}}},{key:\"expired\",get:function t(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:\"scopes\",get:function t(){return(this.scope||\"\").split(\" \")}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AccessTokenEvents=void 0;var n=r(0),i=r(46);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.AccessTokenEvents=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.accessTokenExpiringNotificationTime,n=void 0===r?60:r,s=e.accessTokenExpiringTimer,a=void 0===s?new i.Timer(\"Access token expiring\"):s,u=e.accessTokenExpiredTimer,c=void 0===u?new i.Timer(\"Access token expired\"):u;o(this,t),this._accessTokenExpiringNotificationTime=n,this._accessTokenExpiring=a,this._accessTokenExpired=c}return t.prototype.load=function t(e){if(e.access_token&&void 0!==e.expires_in){var r=e.expires_in;if(n.Log.debug(\"AccessTokenEvents.load: access token present, remaining duration:\",r),r>0){var i=r-this._accessTokenExpiringNotificationTime;i<=0&&(i=1),n.Log.debug(\"AccessTokenEvents.load: registering expiring timer in:\",i),this._accessTokenExpiring.init(i)}else n.Log.debug(\"AccessTokenEvents.load: canceling existing expiring timer becase we're past expiration.\"),this._accessTokenExpiring.cancel();var o=r+1;n.Log.debug(\"AccessTokenEvents.load: registering expired timer in:\",o),this._accessTokenExpired.init(o)}else this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.unload=function t(){n.Log.debug(\"AccessTokenEvents.unload: canceling existing access token timers\"),this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.addAccessTokenExpiring=function t(e){this._accessTokenExpiring.addHandler(e)},t.prototype.removeAccessTokenExpiring=function t(e){this._accessTokenExpiring.removeHandler(e)},t.prototype.addAccessTokenExpired=function t(e){this._accessTokenExpired.addHandler(e)},t.prototype.removeAccessTokenExpired=function t(e){this._accessTokenExpired.removeHandler(e)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Event=void 0;var n=r(0);e.Event=function(){function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._name=e,this._callbacks=[]}return t.prototype.addHandler=function t(e){this._callbacks.push(e)},t.prototype.removeHandler=function t(e){var r=this._callbacks.findIndex((function(t){return t===e}));r>=0&&this._callbacks.splice(r,1)},t.prototype.raise=function t(){n.Log.debug(\"Event: Raising event: \"+this._name);for(var e=0;e<this._callbacks.length;e++){var r;(r=this._callbacks)[e].apply(r,arguments)}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SessionMonitor=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(19),s=r(1);function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.SessionMonitor=function(){function t(e){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.CheckSessionIFrame,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.Global.timer;if(a(this,t),!e)throw i.Log.error(\"SessionMonitor.ctor: No user manager passed to SessionMonitor\"),new Error(\"userManager\");this._userManager=e,this._CheckSessionIFrameCtor=n,this._timer=u,this._userManager.events.addUserLoaded(this._start.bind(this)),this._userManager.events.addUserUnloaded(this._stop.bind(this)),Promise.resolve(this._userManager.getUser().then((function(t){t?r._start(t):r._settings.monitorAnonymousSession&&r._userManager.querySessionStatus().then((function(t){var e={session_state:t.session_state};t.sub&&t.sid&&(e.profile={sub:t.sub,sid:t.sid}),r._start(e)})).catch((function(t){i.Log.error(\"SessionMonitor ctor: error from querySessionStatus:\",t.message)}))})).catch((function(t){i.Log.error(\"SessionMonitor ctor: error from getUser:\",t.message)})))}return t.prototype._start=function t(e){var r=this,n=e.session_state;n&&(e.profile?(this._sub=e.profile.sub,this._sid=e.profile.sid,i.Log.debug(\"SessionMonitor._start: session_state:\",n,\", sub:\",this._sub)):(this._sub=void 0,this._sid=void 0,i.Log.debug(\"SessionMonitor._start: session_state:\",n,\", anonymous user\")),this._checkSessionIFrame?this._checkSessionIFrame.start(n):this._metadataService.getCheckSessionIframe().then((function(t){if(t){i.Log.debug(\"SessionMonitor._start: Initializing check session iframe\");var e=r._client_id,o=r._checkSessionInterval,s=r._stopCheckSessionOnError;r._checkSessionIFrame=new r._CheckSessionIFrameCtor(r._callback.bind(r),e,t,o,s),r._checkSessionIFrame.load().then((function(){r._checkSessionIFrame.start(n)}))}else i.Log.warn(\"SessionMonitor._start: No check session iframe found in the metadata\")})).catch((function(t){i.Log.error(\"SessionMonitor._start: Error from getCheckSessionIframe:\",t.message)})))},t.prototype._stop=function t(){var e=this;if(this._sub=void 0,this._sid=void 0,this._checkSessionIFrame&&(i.Log.debug(\"SessionMonitor._stop\"),this._checkSessionIFrame.stop()),this._settings.monitorAnonymousSession)var r=this._timer.setInterval((function(){e._timer.clearInterval(r),e._userManager.querySessionStatus().then((function(t){var r={session_state:t.session_state};t.sub&&t.sid&&(r.profile={sub:t.sub,sid:t.sid}),e._start(r)})).catch((function(t){i.Log.error(\"SessionMonitor: error from querySessionStatus:\",t.message)}))}),1e3)},t.prototype._callback=function t(){var e=this;this._userManager.querySessionStatus().then((function(t){var r=!0;t?t.sub===e._sub?(r=!1,e._checkSessionIFrame.start(t.session_state),t.sid===e._sid?i.Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, restarting check session iframe; session_state:\",t.session_state):(i.Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, session state has changed, restarting check session iframe; session_state:\",t.session_state),e._userManager.events._raiseUserSessionChanged())):i.Log.debug(\"SessionMonitor._callback: Different subject signed into OP:\",t.sub):i.Log.debug(\"SessionMonitor._callback: Subject no longer signed into OP\"),r&&(e._sub?(i.Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed out event\"),e._userManager.events._raiseUserSignedOut()):(i.Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed in event\"),e._userManager.events._raiseUserSignedIn()))})).catch((function(t){e._sub&&(i.Log.debug(\"SessionMonitor._callback: Error calling queryCurrentSigninSession; raising signed out event\",t.message),e._userManager.events._raiseUserSignedOut())}))},n(t,[{key:\"_settings\",get:function t(){return this._userManager.settings}},{key:\"_metadataService\",get:function t(){return this._userManager.metadataService}},{key:\"_client_id\",get:function t(){return this._settings.client_id}},{key:\"_checkSessionInterval\",get:function t(){return this._settings.checkSessionInterval}},{key:\"_stopCheckSessionOnError\",get:function t(){return this._settings.stopCheckSessionOnError}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CheckSessionIFrame=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.CheckSessionIFrame=function(){function t(e,r,n,o){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];i(this,t),this._callback=e,this._client_id=r,this._url=n,this._interval=o||2e3,this._stopOnError=s;var a=n.indexOf(\"/\",n.indexOf(\"//\")+2);this._frame_origin=n.substr(0,a),this._frame=window.document.createElement(\"iframe\"),this._frame.style.visibility=\"hidden\",this._frame.style.position=\"absolute\",this._frame.style.display=\"none\",this._frame.width=0,this._frame.height=0,this._frame.src=n}return t.prototype.load=function t(){var e=this;return new Promise((function(t){e._frame.onload=function(){t()},window.document.body.appendChild(e._frame),e._boundMessageEvent=e._message.bind(e),window.addEventListener(\"message\",e._boundMessageEvent,!1)}))},t.prototype._message=function t(e){e.origin===this._frame_origin&&e.source===this._frame.contentWindow&&(\"error\"===e.data?(n.Log.error(\"CheckSessionIFrame: error message from check session op iframe\"),this._stopOnError&&this.stop()):\"changed\"===e.data?(n.Log.debug(\"CheckSessionIFrame: changed message from check session op iframe\"),this.stop(),this._callback()):n.Log.debug(\"CheckSessionIFrame: \"+e.data+\" message from check session op iframe\"))},t.prototype.start=function t(e){var r=this;if(this._session_state!==e){n.Log.debug(\"CheckSessionIFrame.start\"),this.stop(),this._session_state=e;var i=function t(){r._frame.contentWindow.postMessage(r._client_id+\" \"+r._session_state,r._frame_origin)};i(),this._timer=window.setInterval(i,this._interval)}},t.prototype.stop=function t(){this._session_state=null,this._timer&&(n.Log.debug(\"CheckSessionIFrame.stop\"),window.clearInterval(this._timer),this._timer=null)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.TokenRevocationClient=void 0;var n=r(0),i=r(2),o=r(1);function s(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var a=\"access_token\",u=\"refresh_token\";e.TokenRevocationClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Global.XMLHttpRequest,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw n.Log.error(\"TokenRevocationClient.ctor: No settings provided\"),new Error(\"No settings provided.\");this._settings=e,this._XMLHttpRequestCtor=r,this._metadataService=new a(this._settings)}return t.prototype.revoke=function t(e,r){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"access_token\";if(!e)throw n.Log.error(\"TokenRevocationClient.revoke: No token provided\"),new Error(\"No token provided.\");if(o!==a&&o!=u)throw n.Log.error(\"TokenRevocationClient.revoke: Invalid token type\"),new Error(\"Invalid token type.\");return this._metadataService.getRevocationEndpoint().then((function(t){if(t){n.Log.debug(\"TokenRevocationClient.revoke: Revoking \"+o);var s=i._settings.client_id,a=i._settings.client_secret;return i._revoke(t,s,a,e,o)}if(r)throw n.Log.error(\"TokenRevocationClient.revoke: Revocation not supported\"),new Error(\"Revocation not supported\")}))},t.prototype._revoke=function t(e,r,i,o,s){var a=this;return new Promise((function(t,u){var c=new a._XMLHttpRequestCtor;c.open(\"POST\",e),c.onload=function(){n.Log.debug(\"TokenRevocationClient.revoke: HTTP response received, status\",c.status),200===c.status?t():u(Error(c.statusText+\" (\"+c.status+\")\"))},c.onerror=function(){n.Log.debug(\"TokenRevocationClient.revoke: Network Error.\"),u(\"Network Error\")};var h=\"client_id=\"+encodeURIComponent(r);i&&(h+=\"&client_secret=\"+encodeURIComponent(i)),h+=\"&token_type_hint=\"+encodeURIComponent(s),h+=\"&token=\"+encodeURIComponent(o),c.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),c.send(h)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CordovaPopupWindow=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.CordovaPopupWindow=function(){function t(e){var r=this;!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._promise=new Promise((function(t,e){r._resolve=t,r._reject=e})),this.features=e.popupWindowFeatures||\"location=no,toolbar=no,zoom=no\",this.target=e.popupWindowTarget||\"_blank\",this.redirect_uri=e.startUrl,i.Log.debug(\"CordovaPopupWindow.ctor: redirect_uri: \"+this.redirect_uri)}return t.prototype._isInAppBrowserInstalled=function t(e){return[\"cordova-plugin-inappbrowser\",\"cordova-plugin-inappbrowser.inappbrowser\",\"org.apache.cordova.inappbrowser\"].some((function(t){return e.hasOwnProperty(t)}))},t.prototype.navigate=function t(e){if(e&&e.url){if(!window.cordova)return this._error(\"cordova is undefined\");var r=window.cordova.require(\"cordova/plugin_list\").metadata;if(!1===this._isInAppBrowserInstalled(r))return this._error(\"InAppBrowser plugin not found\");this._popup=cordova.InAppBrowser.open(e.url,this.target,this.features),this._popup?(i.Log.debug(\"CordovaPopupWindow.navigate: popup successfully created\"),this._exitCallbackEvent=this._exitCallback.bind(this),this._loadStartCallbackEvent=this._loadStartCallback.bind(this),this._popup.addEventListener(\"exit\",this._exitCallbackEvent,!1),this._popup.addEventListener(\"loadstart\",this._loadStartCallbackEvent,!1)):this._error(\"Error opening popup window\")}else this._error(\"No url provided\");return this.promise},t.prototype._loadStartCallback=function t(e){0===e.url.indexOf(this.redirect_uri)&&this._success({url:e.url})},t.prototype._exitCallback=function t(e){this._error(e)},t.prototype._success=function t(e){this._cleanup(),i.Log.debug(\"CordovaPopupWindow: Successful response from cordova popup window\"),this._resolve(e)},t.prototype._error=function t(e){this._cleanup(),i.Log.error(e),this._reject(new Error(e))},t.prototype.close=function t(){this._cleanup()},t.prototype._cleanup=function t(){this._popup&&(i.Log.debug(\"CordovaPopupWindow: cleaning up popup\"),this._popup.removeEventListener(\"exit\",this._exitCallbackEvent,!1),this._popup.removeEventListener(\"loadstart\",this._loadStartCallbackEvent,!1),this._popup.close()),this._popup=null},n(t,[{key:\"promise\",get:function t(){return this._promise}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=r(0),i=r(10),o=r(5),s=r(6),a=r(37),u=r(38),c=r(16),h=r(2),l=r(48),f=r(49),g=r(19),d=r(20),p=r(18),v=r(1),y=r(15),m=r(50);e.default={Version:m.Version,Log:n.Log,OidcClient:i.OidcClient,OidcClientSettings:o.OidcClientSettings,WebStorageStateStore:s.WebStorageStateStore,InMemoryWebStorage:a.InMemoryWebStorage,UserManager:u.UserManager,AccessTokenEvents:c.AccessTokenEvents,MetadataService:h.MetadataService,CordovaPopupNavigator:l.CordovaPopupNavigator,CordovaIFrameNavigator:f.CordovaIFrameNavigator,CheckSessionIFrame:g.CheckSessionIFrame,TokenRevocationClient:d.TokenRevocationClient,SessionMonitor:p.SessionMonitor,Global:v.Global,User:y.User},t.exports=e.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.ClockService=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.getEpochTime=function t(){return Promise.resolve(Date.now()/1e3|0)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ResponseValidator=void 0;var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},i=r(0),o=r(2),s=r(25),a=r(11),u=r(12),c=r(4);function h(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var l=[\"nonce\",\"at_hash\",\"iat\",\"nbf\",\"exp\",\"aud\",\"iss\",\"c_hash\"];e.ResponseValidator=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.MetadataService,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.UserInfoService,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:c.JoseUtil,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:a.TokenClient;if(h(this,t),!e)throw i.Log.error(\"ResponseValidator.ctor: No settings passed to ResponseValidator\"),new Error(\"settings\");this._settings=e,this._metadataService=new r(this._settings),this._userInfoService=new n(this._settings),this._joseUtil=u,this._tokenClient=new l(this._settings)}return t.prototype.validateSigninResponse=function t(e,r){var n=this;return i.Log.debug(\"ResponseValidator.validateSigninResponse\"),this._processSigninParams(e,r).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: state processed\"),n._validateTokens(e,t).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: tokens validated\"),n._processClaims(e,t).then((function(t){return i.Log.debug(\"ResponseValidator.validateSigninResponse: claims processed\"),t}))}))}))},t.prototype.validateSignoutResponse=function t(e,r){return e.id!==r.state?(i.Log.error(\"ResponseValidator.validateSignoutResponse: State does not match\"),Promise.reject(new Error(\"State does not match\"))):(i.Log.debug(\"ResponseValidator.validateSignoutResponse: state validated\"),r.state=e.data,r.error?(i.Log.warn(\"ResponseValidator.validateSignoutResponse: Response was error\",r.error),Promise.reject(new u.ErrorResponse(r))):Promise.resolve(r))},t.prototype._processSigninParams=function t(e,r){if(e.id!==r.state)return i.Log.error(\"ResponseValidator._processSigninParams: State does not match\"),Promise.reject(new Error(\"State does not match\"));if(!e.client_id)return i.Log.error(\"ResponseValidator._processSigninParams: No client_id on state\"),Promise.reject(new Error(\"No client_id on state\"));if(!e.authority)return i.Log.error(\"ResponseValidator._processSigninParams: No authority on state\"),Promise.reject(new Error(\"No authority on state\"));if(this._settings.authority){if(this._settings.authority&&this._settings.authority!==e.authority)return i.Log.error(\"ResponseValidator._processSigninParams: authority mismatch on settings vs. signin state\"),Promise.reject(new Error(\"authority mismatch on settings vs. signin state\"))}else this._settings.authority=e.authority;if(this._settings.client_id){if(this._settings.client_id&&this._settings.client_id!==e.client_id)return i.Log.error(\"ResponseValidator._processSigninParams: client_id mismatch on settings vs. signin state\"),Promise.reject(new Error(\"client_id mismatch on settings vs. signin state\"))}else this._settings.client_id=e.client_id;return i.Log.debug(\"ResponseValidator._processSigninParams: state validated\"),r.state=e.data,r.error?(i.Log.warn(\"ResponseValidator._processSigninParams: Response was error\",r.error),Promise.reject(new u.ErrorResponse(r))):e.nonce&&!r.id_token?(i.Log.error(\"ResponseValidator._processSigninParams: Expecting id_token in response\"),Promise.reject(new Error(\"No id_token in response\"))):!e.nonce&&r.id_token?(i.Log.error(\"ResponseValidator._processSigninParams: Not expecting id_token in response\"),Promise.reject(new Error(\"Unexpected id_token in response\"))):e.code_verifier&&!r.code?(i.Log.error(\"ResponseValidator._processSigninParams: Expecting code in response\"),Promise.reject(new Error(\"No code in response\"))):!e.code_verifier&&r.code?(i.Log.error(\"ResponseValidator._processSigninParams: Not expecting code in response\"),Promise.reject(new Error(\"Unexpected code in response\"))):(r.scope||(r.scope=e.scope),Promise.resolve(r))},t.prototype._processClaims=function t(e,r){var n=this;if(r.isOpenIdConnect){if(i.Log.debug(\"ResponseValidator._processClaims: response is OIDC, processing claims\"),r.profile=this._filterProtocolClaims(r.profile),!0!==e.skipUserInfo&&this._settings.loadUserInfo&&r.access_token)return i.Log.debug(\"ResponseValidator._processClaims: loading user info\"),this._userInfoService.getClaims(r.access_token).then((function(t){return i.Log.debug(\"ResponseValidator._processClaims: user info claims received from user info endpoint\"),t.sub!==r.profile.sub?(i.Log.error(\"ResponseValidator._processClaims: sub from user info endpoint does not match sub in id_token\"),Promise.reject(new Error(\"sub from user info endpoint does not match sub in id_token\"))):(r.profile=n._mergeClaims(r.profile,t),i.Log.debug(\"ResponseValidator._processClaims: user info claims received, updated profile:\",r.profile),r)}));i.Log.debug(\"ResponseValidator._processClaims: not loading user info\")}else i.Log.debug(\"ResponseValidator._processClaims: response is not OIDC, not processing claims\");return Promise.resolve(r)},t.prototype._mergeClaims=function t(e,r){var i=Object.assign({},e);for(var o in r){var s=r[o];Array.isArray(s)||(s=[s]);for(var a=0;a<s.length;a++){var u=s[a];i[o]?Array.isArray(i[o])?i[o].indexOf(u)<0&&i[o].push(u):i[o]!==u&&(\"object\"===(void 0===u?\"undefined\":n(u))&&this._settings.mergeClaims?i[o]=this._mergeClaims(i[o],u):i[o]=[i[o],u]):i[o]=u}}return i},t.prototype._filterProtocolClaims=function t(e){i.Log.debug(\"ResponseValidator._filterProtocolClaims, incoming claims:\",e);var r=Object.assign({},e);return this._settings._filterProtocolClaims?(l.forEach((function(t){delete r[t]})),i.Log.debug(\"ResponseValidator._filterProtocolClaims: protocol claims filtered\",r)):i.Log.debug(\"ResponseValidator._filterProtocolClaims: protocol claims not filtered\"),r},t.prototype._validateTokens=function t(e,r){return r.code?(i.Log.debug(\"ResponseValidator._validateTokens: Validating code\"),this._processCode(e,r)):r.id_token?r.access_token?(i.Log.debug(\"ResponseValidator._validateTokens: Validating id_token and access_token\"),this._validateIdTokenAndAccessToken(e,r)):(i.Log.debug(\"ResponseValidator._validateTokens: Validating id_token\"),this._validateIdToken(e,r)):(i.Log.debug(\"ResponseValidator._validateTokens: No code to process or id_token to validate\"),Promise.resolve(r))},t.prototype._processCode=function t(e,r){var o=this,s={client_id:e.client_id,client_secret:e.client_secret,code:r.code,redirect_uri:e.redirect_uri,code_verifier:e.code_verifier};return e.extraTokenParams&&\"object\"===n(e.extraTokenParams)&&Object.assign(s,e.extraTokenParams),this._tokenClient.exchangeCode(s).then((function(t){for(var n in t)r[n]=t[n];return r.id_token?(i.Log.debug(\"ResponseValidator._processCode: token response successful, processing id_token\"),o._validateIdTokenAttributes(e,r)):(i.Log.debug(\"ResponseValidator._processCode: token response successful, returning response\"),r)}))},t.prototype._validateIdTokenAttributes=function t(e,r){var n=this;return this._metadataService.getIssuer().then((function(t){var o=e.client_id,s=n._settings.clockSkew;return i.Log.debug(\"ResponseValidator._validateIdTokenAttributes: Validaing JWT attributes; using clock skew (in seconds) of: \",s),n._settings.getEpochTime().then((function(a){return n._joseUtil.validateJwtAttributes(r.id_token,t,o,s,a).then((function(t){return e.nonce&&e.nonce!==t.nonce?(i.Log.error(\"ResponseValidator._validateIdTokenAttributes: Invalid nonce in id_token\"),Promise.reject(new Error(\"Invalid nonce in id_token\"))):t.sub?(r.profile=t,r):(i.Log.error(\"ResponseValidator._validateIdTokenAttributes: No sub present in id_token\"),Promise.reject(new Error(\"No sub present in id_token\")))}))}))}))},t.prototype._validateIdTokenAndAccessToken=function t(e,r){var n=this;return this._validateIdToken(e,r).then((function(t){return n._validateAccessToken(t)}))},t.prototype._getSigningKeyForJwt=function t(e){var r=this;return this._metadataService.getSigningKeys().then((function(t){var n=e.header.kid;if(!t)return i.Log.error(\"ResponseValidator._validateIdToken: No signing keys from metadata\"),Promise.reject(new Error(\"No signing keys from metadata\"));i.Log.debug(\"ResponseValidator._validateIdToken: Received signing keys\");var o=void 0;if(n)o=t.filter((function(t){return t.kid===n}))[0];else{if((t=r._filterByAlg(t,e.header.alg)).length>1)return i.Log.error(\"ResponseValidator._validateIdToken: No kid found in id_token and more than one key found in metadata\"),Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));o=t[0]}return Promise.resolve(o)}))},t.prototype._getSigningKeyForJwtWithSingleRetry=function t(e){var r=this;return this._getSigningKeyForJwt(e).then((function(t){return t?Promise.resolve(t):(r._metadataService.resetSigningKeys(),r._getSigningKeyForJwt(e))}))},t.prototype._validateIdToken=function t(e,r){var n=this;if(!e.nonce)return i.Log.error(\"ResponseValidator._validateIdToken: No nonce on state\"),Promise.reject(new Error(\"No nonce on state\"));var o=this._joseUtil.parseJwt(r.id_token);return o&&o.header&&o.payload?e.nonce!==o.payload.nonce?(i.Log.error(\"ResponseValidator._validateIdToken: Invalid nonce in id_token\"),Promise.reject(new Error(\"Invalid nonce in id_token\"))):this._metadataService.getIssuer().then((function(t){return i.Log.debug(\"ResponseValidator._validateIdToken: Received issuer\"),n._getSigningKeyForJwtWithSingleRetry(o).then((function(s){if(!s)return i.Log.error(\"ResponseValidator._validateIdToken: No key matching kid or alg found in signing keys\"),Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));var a=e.client_id,u=n._settings.clockSkew;return i.Log.debug(\"ResponseValidator._validateIdToken: Validaing JWT; using clock skew (in seconds) of: \",u),n._joseUtil.validateJwt(r.id_token,s,t,a,u).then((function(){return i.Log.debug(\"ResponseValidator._validateIdToken: JWT validation successful\"),o.payload.sub?(r.profile=o.payload,r):(i.Log.error(\"ResponseValidator._validateIdToken: No sub present in id_token\"),Promise.reject(new Error(\"No sub present in id_token\")))}))}))})):(i.Log.error(\"ResponseValidator._validateIdToken: Failed to parse id_token\",o),Promise.reject(new Error(\"Failed to parse id_token\")))},t.prototype._filterByAlg=function t(e,r){var n=null;if(r.startsWith(\"RS\"))n=\"RSA\";else if(r.startsWith(\"PS\"))n=\"PS\";else{if(!r.startsWith(\"ES\"))return i.Log.debug(\"ResponseValidator._filterByAlg: alg not supported: \",r),[];n=\"EC\"}return i.Log.debug(\"ResponseValidator._filterByAlg: Looking for keys that match kty: \",n),e=e.filter((function(t){return t.kty===n})),i.Log.debug(\"ResponseValidator._filterByAlg: Number of keys that match kty: \",n,e.length),e},t.prototype._validateAccessToken=function t(e){if(!e.profile)return i.Log.error(\"ResponseValidator._validateAccessToken: No profile loaded from id_token\"),Promise.reject(new Error(\"No profile loaded from id_token\"));if(!e.profile.at_hash)return i.Log.error(\"ResponseValidator._validateAccessToken: No at_hash in id_token\"),Promise.reject(new Error(\"No at_hash in id_token\"));if(!e.id_token)return i.Log.error(\"ResponseValidator._validateAccessToken: No id_token\"),Promise.reject(new Error(\"No id_token\"));var r=this._joseUtil.parseJwt(e.id_token);if(!r||!r.header)return i.Log.error(\"ResponseValidator._validateAccessToken: Failed to parse id_token\",r),Promise.reject(new Error(\"Failed to parse id_token\"));var n=r.header.alg;if(!n||5!==n.length)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n),Promise.reject(new Error(\"Unsupported alg: \"+n));var o=n.substr(2,3);if(!o)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n,o),Promise.reject(new Error(\"Unsupported alg: \"+n));if(256!==(o=parseInt(o))&&384!==o&&512!==o)return i.Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\",n,o),Promise.reject(new Error(\"Unsupported alg: \"+n));var s=\"sha\"+o,a=this._joseUtil.hashString(e.access_token,s);if(!a)return i.Log.error(\"ResponseValidator._validateAccessToken: access_token hash failed:\",s),Promise.reject(new Error(\"Failed to validate at_hash\"));var u=a.substr(0,a.length/2),c=this._joseUtil.hexToBase64Url(u);return c!==e.profile.at_hash?(i.Log.error(\"ResponseValidator._validateAccessToken: Failed to validate at_hash\",c,e.profile.at_hash),Promise.reject(new Error(\"Failed to validate at_hash\"))):(i.Log.debug(\"ResponseValidator._validateAccessToken: success\"),Promise.resolve(e))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserInfoService=void 0;var n=r(7),i=r(2),o=r(0),s=r(4);function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.UserInfoService=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService,c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:s.JoseUtil;if(a(this,t),!e)throw o.Log.error(\"UserInfoService.ctor: No settings passed\"),new Error(\"settings\");this._settings=e,this._jsonService=new r(void 0,void 0,this._getClaimsFromJwt.bind(this)),this._metadataService=new u(this._settings),this._joseUtil=c}return t.prototype.getClaims=function t(e){var r=this;return e?this._metadataService.getUserInfoEndpoint().then((function(t){return o.Log.debug(\"UserInfoService.getClaims: received userinfo url\",t),r._jsonService.getJson(t,e).then((function(t){return o.Log.debug(\"UserInfoService.getClaims: claims received\",t),t}))})):(o.Log.error(\"UserInfoService.getClaims: No token passed\"),Promise.reject(new Error(\"A token is required\")))},t.prototype._getClaimsFromJwt=function t(e){var r=this;try{var n=this._joseUtil.parseJwt(e.responseText);if(!n||!n.header||!n.payload)return o.Log.error(\"UserInfoService._getClaimsFromJwt: Failed to parse JWT\",n),Promise.reject(new Error(\"Failed to parse id_token\"));var i=n.header.kid,s=void 0;switch(this._settings.userInfoJwtIssuer){case\"OP\":s=this._metadataService.getIssuer();break;case\"ANY\":s=Promise.resolve(n.payload.iss);break;default:s=Promise.resolve(this._settings.userInfoJwtIssuer)}return s.then((function(t){return o.Log.debug(\"UserInfoService._getClaimsFromJwt: Received issuer:\"+t),r._metadataService.getSigningKeys().then((function(s){if(!s)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No signing keys from metadata\"),Promise.reject(new Error(\"No signing keys from metadata\"));o.Log.debug(\"UserInfoService._getClaimsFromJwt: Received signing keys\");var a=void 0;if(i)a=s.filter((function(t){return t.kid===i}))[0];else{if((s=r._filterByAlg(s,n.header.alg)).length>1)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No kid found in id_token and more than one key found in metadata\"),Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));a=s[0]}if(!a)return o.Log.error(\"UserInfoService._getClaimsFromJwt: No key matching kid or alg found in signing keys\"),Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));var u=r._settings.client_id,c=r._settings.clockSkew;return o.Log.debug(\"UserInfoService._getClaimsFromJwt: Validaing JWT; using clock skew (in seconds) of: \",c),r._joseUtil.validateJwt(e.responseText,a,t,u,c,void 0,!0).then((function(){return o.Log.debug(\"UserInfoService._getClaimsFromJwt: JWT validation successful\"),n.payload}))}))}))}catch(t){return o.Log.error(\"UserInfoService._getClaimsFromJwt: Error parsing JWT response\",t.message),void reject(t)}},t.prototype._filterByAlg=function t(e,r){var n=null;if(r.startsWith(\"RS\"))n=\"RSA\";else if(r.startsWith(\"PS\"))n=\"PS\";else{if(!r.startsWith(\"ES\"))return o.Log.debug(\"UserInfoService._filterByAlg: alg not supported: \",r),[];n=\"EC\"}return o.Log.debug(\"UserInfoService._filterByAlg: Looking for keys that match kty: \",n),e=e.filter((function(t){return t.kty===n})),o.Log.debug(\"UserInfoService._filterByAlg: Number of keys that match kty: \",n,e.length),e},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.AllowedSigningAlgs=e.b64tohex=e.hextob64u=e.crypto=e.X509=e.KeyUtil=e.jws=void 0;var n=r(27);e.jws=n.jws,e.KeyUtil=n.KEYUTIL,e.X509=n.X509,e.crypto=n.crypto,e.hextob64u=n.hextob64u,e.b64tohex=n.b64tohex,e.AllowedSigningAlgs=[\"RS256\",\"RS384\",\"RS512\",\"PS256\",\"PS384\",\"PS512\",\"ES256\",\"ES384\",\"ES512\"]},function(t,e,r){\"use strict\";(function(t){Object.defineProperty(e,\"__esModule\",{value:!0});var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n={userAgent:!1},i={};\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nif(void 0===o)var o={};o.lang={extend:function t(e,r,i){if(!r||!e)throw new Error(\"YAHOO.lang.extend failed, please check that all dependencies are included.\");var o=function t(){};if(o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e,e.superclass=r.prototype,r.prototype.constructor==Object.prototype.constructor&&(r.prototype.constructor=r),i){var s;for(s in i)e.prototype[s]=i[s];var a=function t(){},u=[\"toString\",\"valueOf\"];try{/MSIE/.test(n.userAgent)&&(a=function t(e,r){for(s=0;s<u.length;s+=1){var n=u[s],i=r[n];\"function\"==typeof i&&i!=Object.prototype[n]&&(e[n]=i)}})}catch(t){}a(e.prototype,i)}}};\n/*! CryptoJS v3.1.2 core-fix.js\n * code.google.com/p/crypto-js\n * (c) 2009-2013 by Jeff Mott. All rights reserved.\n * code.google.com/p/crypto-js/wiki/License\n * THIS IS FIX of 'core.js' to fix Hmac issue.\n * https://code.google.com/p/crypto-js/issues/detail?id=84\n * https://crypto-js.googlecode.com/svn-history/r667/branches/3.x/src/core.js\n */\nvar s,a,u,c,h,l,f,g,d,p,v,y=y||(s=Math,u=(a={}).lib={},c=u.Base=function(){function t(){}return{extend:function e(r){t.prototype=this;var n=new t;return r&&n.mixIn(r),n.hasOwnProperty(\"init\")||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function t(){var e=this.extend();return e.init.apply(e,arguments),e},init:function t(){},mixIn:function t(e){for(var r in e)e.hasOwnProperty(r)&&(this[r]=e[r]);e.hasOwnProperty(\"toString\")&&(this.toString=e.toString)},clone:function t(){return this.init.prototype.extend(this)}}}(),h=u.WordArray=c.extend({init:function t(e,r){e=this.words=e||[],this.sigBytes=null!=r?r:4*e.length},toString:function t(e){return(e||f).stringify(this)},concat:function t(e){var r=this.words,n=e.words,i=this.sigBytes,o=e.sigBytes;if(this.clamp(),i%4)for(var s=0;s<o;s++){var a=n[s>>>2]>>>24-s%4*8&255;r[i+s>>>2]|=a<<24-(i+s)%4*8}else for(s=0;s<o;s+=4)r[i+s>>>2]=n[s>>>2];return this.sigBytes+=o,this},clamp:function t(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=s.ceil(r/4)},clone:function t(){var e=c.clone.call(this);return e.words=this.words.slice(0),e},random:function t(e){for(var r=[],n=0;n<e;n+=4)r.push(4294967296*s.random()|0);return new h.init(r,e)}}),l=a.enc={},f=l.Hex={stringify:function t(e){for(var r=e.words,n=e.sigBytes,i=[],o=0;o<n;o++){var s=r[o>>>2]>>>24-o%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join(\"\")},parse:function t(e){for(var r=e.length,n=[],i=0;i<r;i+=2)n[i>>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new h.init(n,r/2)}},g=l.Latin1={stringify:function t(e){for(var r=e.words,n=e.sigBytes,i=[],o=0;o<n;o++){var s=r[o>>>2]>>>24-o%4*8&255;i.push(String.fromCharCode(s))}return i.join(\"\")},parse:function t(e){for(var r=e.length,n=[],i=0;i<r;i++)n[i>>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new h.init(n,r)}},d=l.Utf8={stringify:function t(e){try{return decodeURIComponent(escape(g.stringify(e)))}catch(t){throw new Error(\"Malformed UTF-8 data\")}},parse:function t(e){return g.parse(unescape(encodeURIComponent(e)))}},p=u.BufferedBlockAlgorithm=c.extend({reset:function t(){this._data=new h.init,this._nDataBytes=0},_append:function t(e){\"string\"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function t(e){var r=this._data,n=r.words,i=r.sigBytes,o=this.blockSize,a=i/(4*o),u=(a=e?s.ceil(a):s.max((0|a)-this._minBufferSize,0))*o,c=s.min(4*u,i);if(u){for(var l=0;l<u;l+=o)this._doProcessBlock(n,l);var f=n.splice(0,u);r.sigBytes-=c}return new h.init(f,c)},clone:function t(){var e=c.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0}),u.Hasher=p.extend({cfg:c.extend(),init:function t(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function t(){p.reset.call(this),this._doReset()},update:function t(e){return this._append(e),this._process(),this},finalize:function t(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function t(e){return function(t,r){return new e.init(r).finalize(t)}},_createHmacHelper:function t(e){return function(t,r){return new v.HMAC.init(e,r).finalize(t)}}}),v=a.algo={},a);!function(t){var e,r=(e=y).lib,n=r.Base,i=r.WordArray;(e=e.x64={}).Word=n.extend({init:function t(e,r){this.high=e,this.low=r}}),e.WordArray=n.extend({init:function t(e,r){e=this.words=e||[],this.sigBytes=null!=r?r:8*e.length},toX32:function t(){for(var e=this.words,r=e.length,n=[],o=0;o<r;o++){var s=e[o];n.push(s.high),n.push(s.low)}return i.create(n,this.sigBytes)},clone:function t(){for(var e=n.clone.call(this),r=e.words=this.words.slice(0),i=r.length,o=0;o<i;o++)r[o]=r[o].clone();return e}})}(),function(){var t=y,e=t.lib.WordArray;t.enc.Base64={stringify:function t(e){var r=e.words,n=e.sigBytes,i=this._map;e.clamp(),e=[];for(var o=0;o<n;o+=3)for(var s=(r[o>>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;4>a&&o+.75*a<n;a++)e.push(i.charAt(s>>>6*(3-a)&63));if(r=i.charAt(64))for(;e.length%4;)e.push(r);return e.join(\"\")},parse:function t(r){var n=r.length,i=this._map;(o=i.charAt(64))&&(-1!=(o=r.indexOf(o))&&(n=o));for(var o=[],s=0,a=0;a<n;a++)if(a%4){var u=i.indexOf(r.charAt(a-1))<<a%4*2,c=i.indexOf(r.charAt(a))>>>6-a%4*2;o[s>>>2]|=(u|c)<<24-s%4*8,s++}return e.create(o,s)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}}(),function(t){for(var e=y,r=(i=e.lib).WordArray,n=i.Hasher,i=e.algo,o=[],s=[],a=function t(e){return 4294967296*(e-(0|e))|0},u=2,c=0;64>c;){var h;t:{h=u;for(var l=t.sqrt(h),f=2;f<=l;f++)if(!(h%f)){h=!1;break t}h=!0}h&&(8>c&&(o[c]=a(t.pow(u,.5))),s[c]=a(t.pow(u,1/3)),c++),u++}var g=[];i=i.SHA256=n.extend({_doReset:function t(){this._hash=new r.init(o.slice(0))},_doProcessBlock:function t(e,r){for(var n=this._hash.words,i=n[0],o=n[1],a=n[2],u=n[3],c=n[4],h=n[5],l=n[6],f=n[7],d=0;64>d;d++){if(16>d)g[d]=0|e[r+d];else{var p=g[d-15],v=g[d-2];g[d]=((p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3)+g[d-7]+((v<<15|v>>>17)^(v<<13|v>>>19)^v>>>10)+g[d-16]}p=f+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+s[d]+g[d],v=((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+(i&o^i&a^o&a),f=l,l=h,h=c,c=u+p|0,u=a,a=o,o=i,i=p+v|0}n[0]=n[0]+i|0,n[1]=n[1]+o|0,n[2]=n[2]+a|0,n[3]=n[3]+u|0,n[4]=n[4]+c|0,n[5]=n[5]+h|0,n[6]=n[6]+l|0,n[7]=n[7]+f|0},_doFinalize:function e(){var r=this._data,n=r.words,i=8*this._nDataBytes,o=8*r.sigBytes;return n[o>>>5]|=128<<24-o%32,n[14+(o+64>>>9<<4)]=t.floor(i/4294967296),n[15+(o+64>>>9<<4)]=i,r.sigBytes=4*n.length,this._process(),this._hash},clone:function t(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(i),e.HmacSHA256=n._createHmacHelper(i)}(Math),function(){function t(){return n.create.apply(n,arguments)}for(var e=y,r=e.lib.Hasher,n=(o=e.x64).Word,i=o.WordArray,o=e.algo,s=[t(1116352408,3609767458),t(1899447441,602891725),t(3049323471,3964484399),t(3921009573,2173295548),t(961987163,4081628472),t(1508970993,3053834265),t(2453635748,2937671579),t(2870763221,3664609560),t(3624381080,2734883394),t(310598401,1164996542),t(607225278,1323610764),t(1426881987,3590304994),t(1925078388,4068182383),t(2162078206,991336113),t(2614888103,633803317),t(3248222580,3479774868),t(3835390401,2666613458),t(4022224774,944711139),t(264347078,2341262773),t(604807628,2007800933),t(770255983,1495990901),t(1249150122,1856431235),t(1555081692,3175218132),t(1996064986,2198950837),t(2554220882,3999719339),t(2821834349,766784016),t(2952996808,2566594879),t(3210313671,3203337956),t(3336571891,1034457026),t(3584528711,2466948901),t(113926993,3758326383),t(338241895,168717936),t(666307205,1188179964),t(773529912,1546045734),t(1294757372,1522805485),t(1396182291,2643833823),t(1695183700,2343527390),t(1986661051,1014477480),t(2177026350,1206759142),t(2456956037,344077627),t(2730485921,1290863460),t(2820302411,3158454273),t(3259730800,3505952657),t(3345764771,106217008),t(3516065817,3606008344),t(3600352804,1432725776),t(4094571909,1467031594),t(275423344,851169720),t(430227734,3100823752),t(506948616,1363258195),t(659060556,3750685593),t(883997877,3785050280),t(958139571,3318307427),t(1322822218,3812723403),t(1537002063,2003034995),t(1747873779,3602036899),t(1955562222,1575990012),t(2024104815,1125592928),t(2227730452,2716904306),t(2361852424,442776044),t(2428436474,593698344),t(2756734187,3733110249),t(3204031479,2999351573),t(3329325298,3815920427),t(3391569614,3928383900),t(3515267271,566280711),t(3940187606,3454069534),t(4118630271,4000239992),t(116418474,1914138554),t(174292421,2731055270),t(289380356,3203993006),t(460393269,320620315),t(685471733,587496836),t(852142971,1086792851),t(1017036298,365543100),t(1126000580,2618297676),t(1288033470,3409855158),t(1501505948,4234509866),t(1607167915,987167468),t(1816402316,1246189591)],a=[],u=0;80>u;u++)a[u]=t();o=o.SHA512=r.extend({_doReset:function t(){this._hash=new i.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function t(e,r){for(var n=(f=this._hash.words)[0],i=f[1],o=f[2],u=f[3],c=f[4],h=f[5],l=f[6],f=f[7],g=n.high,d=n.low,p=i.high,v=i.low,y=o.high,m=o.low,_=u.high,S=u.low,b=c.high,w=c.low,F=h.high,E=h.low,x=l.high,A=l.low,k=f.high,P=f.low,C=g,T=d,R=p,I=v,D=y,L=m,N=_,U=S,B=b,O=w,j=F,M=E,H=x,V=A,K=k,q=P,J=0;80>J;J++){var W=a[J];if(16>J)var z=W.high=0|e[r+2*J],Y=W.low=0|e[r+2*J+1];else{z=((Y=(z=a[J-15]).high)>>>1|(G=z.low)<<31)^(Y>>>8|G<<24)^Y>>>7;var G=(G>>>1|Y<<31)^(G>>>8|Y<<24)^(G>>>7|Y<<25),X=((Y=(X=a[J-2]).high)>>>19|($=X.low)<<13)^(Y<<3|$>>>29)^Y>>>6,$=($>>>19|Y<<13)^($<<3|Y>>>29)^($>>>6|Y<<26),Q=(Y=a[J-7]).high,Z=(tt=a[J-16]).high,tt=tt.low;z=(z=(z=z+Q+((Y=G+Y.low)>>>0<G>>>0?1:0))+X+((Y=Y+$)>>>0<$>>>0?1:0))+Z+((Y=Y+tt)>>>0<tt>>>0?1:0);W.high=z,W.low=Y}Q=B&j^~B&H,tt=O&M^~O&V,W=C&R^C&D^R&D;var et=T&I^T&L^I&L,rt=(G=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),X=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),($=s[J]).high),nt=$.low;Z=K+((B>>>14|O<<18)^(B>>>18|O<<14)^(B<<23|O>>>9))+(($=q+((O>>>14|B<<18)^(O>>>18|B<<14)^(O<<23|B>>>9)))>>>0<q>>>0?1:0),K=H,q=V,H=j,V=M,j=B,M=O,B=N+(Z=(Z=(Z=Z+Q+(($=$+tt)>>>0<tt>>>0?1:0))+rt+(($=$+nt)>>>0<nt>>>0?1:0))+z+(($=$+Y)>>>0<Y>>>0?1:0))+((O=U+$|0)>>>0<U>>>0?1:0)|0,N=D,U=L,D=R,L=I,R=C,I=T,C=Z+(W=G+W+((Y=X+et)>>>0<X>>>0?1:0))+((T=$+Y|0)>>>0<$>>>0?1:0)|0}d=n.low=d+T,n.high=g+C+(d>>>0<T>>>0?1:0),v=i.low=v+I,i.high=p+R+(v>>>0<I>>>0?1:0),m=o.low=m+L,o.high=y+D+(m>>>0<L>>>0?1:0),S=u.low=S+U,u.high=_+N+(S>>>0<U>>>0?1:0),w=c.low=w+O,c.high=b+B+(w>>>0<O>>>0?1:0),E=h.low=E+M,h.high=F+j+(E>>>0<M>>>0?1:0),A=l.low=A+V,l.high=x+H+(A>>>0<V>>>0?1:0),P=f.low=P+q,f.high=k+K+(P>>>0<q>>>0?1:0)},_doFinalize:function t(){var e=this._data,r=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;return r[i>>>5]|=128<<24-i%32,r[30+(i+128>>>10<<5)]=Math.floor(n/4294967296),r[31+(i+128>>>10<<5)]=n,e.sigBytes=4*r.length,this._process(),this._hash.toX32()},clone:function t(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),e.SHA512=r._createHelper(o),e.HmacSHA512=r._createHmacHelper(o)}(),function(){var t=y,e=(i=t.x64).Word,r=i.WordArray,n=(i=t.algo).SHA512,i=i.SHA384=n.extend({_doReset:function t(){this._hash=new r.init([new e.init(3418070365,3238371032),new e.init(1654270250,914150663),new e.init(2438529370,812702999),new e.init(355462360,4144912697),new e.init(1731405415,4290775857),new e.init(2394180231,1750603025),new e.init(3675008525,1694076839),new e.init(1203062813,3204075428)])},_doFinalize:function t(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}});t.SHA384=n._createHelper(i),t.HmacSHA384=n._createHmacHelper(i)}();\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nvar m,_=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";function S(t){var e,r,n=\"\";for(e=0;e+3<=t.length;e+=3)r=parseInt(t.substring(e,e+3),16),n+=_.charAt(r>>6)+_.charAt(63&r);for(e+1==t.length?(r=parseInt(t.substring(e,e+1),16),n+=_.charAt(r<<2)):e+2==t.length&&(r=parseInt(t.substring(e,e+2),16),n+=_.charAt(r>>2)+_.charAt((3&r)<<4)),\"=\";(3&n.length)>0;)n+=\"=\";return n}function b(t){var e,r,n,i=\"\",o=0;for(e=0;e<t.length&&\"=\"!=t.charAt(e);++e)(n=_.indexOf(t.charAt(e)))<0||(0==o?(i+=R(n>>2),r=3&n,o=1):1==o?(i+=R(r<<2|n>>4),r=15&n,o=2):2==o?(i+=R(r),i+=R(n>>2),r=3&n,o=3):(i+=R(r<<2|n>>4),i+=R(15&n),o=0));return 1==o&&(i+=R(r<<2)),i}function w(t){var e,r=b(t),n=new Array;for(e=0;2*e<r.length;++e)n[e]=parseInt(r.substring(2*e,2*e+2),16);return n}function F(t,e,r){null!=t&&(\"number\"==typeof t?this.fromNumber(t,e,r):null==e&&\"string\"!=typeof t?this.fromString(t,256):this.fromString(t,e))}function E(){return new F(null)}\"Microsoft Internet Explorer\"==n.appName?(F.prototype.am=function x(t,e,r,n,i,o){for(var s=32767&e,a=e>>15;--o>=0;){var u=32767&this[t],c=this[t++]>>15,h=a*u+c*s;i=((u=s*u+((32767&h)<<15)+r[n]+(1073741823&i))>>>30)+(h>>>15)+a*c+(i>>>30),r[n++]=1073741823&u}return i},m=30):\"Netscape\"!=n.appName?(F.prototype.am=function A(t,e,r,n,i,o){for(;--o>=0;){var s=e*this[t++]+r[n]+i;i=Math.floor(s/67108864),r[n++]=67108863&s}return i},m=26):(F.prototype.am=function k(t,e,r,n,i,o){for(var s=16383&e,a=e>>14;--o>=0;){var u=16383&this[t],c=this[t++]>>14,h=a*u+c*s;i=((u=s*u+((16383&h)<<14)+r[n]+i)>>28)+(h>>14)+a*c,r[n++]=268435455&u}return i},m=28),F.prototype.DB=m,F.prototype.DM=(1<<m)-1,F.prototype.DV=1<<m;F.prototype.FV=Math.pow(2,52),F.prototype.F1=52-m,F.prototype.F2=2*m-52;var P,C,T=new Array;for(P=\"0\".charCodeAt(0),C=0;C<=9;++C)T[P++]=C;for(P=\"a\".charCodeAt(0),C=10;C<36;++C)T[P++]=C;for(P=\"A\".charCodeAt(0),C=10;C<36;++C)T[P++]=C;function R(t){return\"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(t)}function I(t,e){var r=T[t.charCodeAt(e)];return null==r?-1:r}function D(t){var e=E();return e.fromInt(t),e}function L(t){var e,r=1;return 0!=(e=t>>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function N(t){this.m=t}function U(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<t.DB-15)-1,this.mt2=2*t.t}function B(t,e){return t&e}function O(t,e){return t|e}function j(t,e){return t^e}function M(t,e){return t&~e}function H(t){if(0==t)return-1;var e=0;return 0==(65535&t)&&(t>>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function V(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function K(){}function q(t){return t}function J(t){this.r2=E(),this.q3=E(),F.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}N.prototype.convert=function W(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},N.prototype.revert=function z(t){return t},N.prototype.reduce=function Y(t){t.divRemTo(this.m,null,t)},N.prototype.mulTo=function G(t,e,r){t.multiplyTo(e,r),this.reduce(r)},N.prototype.sqrTo=function X(t,e){t.squareTo(e),this.reduce(e)},U.prototype.convert=function $(t){var e=E();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(F.ZERO)>0&&this.m.subTo(e,e),e},U.prototype.revert=function Q(t){var e=E();return t.copyTo(e),this.reduce(e),e},U.prototype.reduce=function Z(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e<this.m.t;++e){var r=32767&t[e],n=r*this.mpl+((r*this.mph+(t[e]>>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,n,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},U.prototype.mulTo=function tt(t,e,r){t.multiplyTo(e,r),this.reduce(r)},U.prototype.sqrTo=function et(t,e){t.squareTo(e),this.reduce(e)},F.prototype.copyTo=function rt(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},F.prototype.fromInt=function nt(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},F.prototype.fromString=function it(t,e){var r;if(16==e)r=4;else if(8==e)r=3;else if(256==e)r=8;else if(2==e)r=1;else if(32==e)r=5;else{if(4!=e)return void this.fromRadix(t,e);r=2}this.t=0,this.s=0;for(var n=t.length,i=!1,o=0;--n>=0;){var s=8==r?255&t[n]:I(t,n);s<0?\"-\"==t.charAt(n)&&(i=!0):(i=!1,0==o?this[this.t++]=s:o+r>this.DB?(this[this.t-1]|=(s&(1<<this.DB-o)-1)<<o,this[this.t++]=s>>this.DB-o):this[this.t-1]|=s<<o,(o+=r)>=this.DB&&(o-=this.DB))}8==r&&0!=(128&t[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<<this.DB-o)-1<<o)),this.clamp(),i&&F.ZERO.subTo(this,this)},F.prototype.clamp=function ot(){for(var t=this.s&this.DM;this.t>0&&this[this.t-1]==t;)--this.t},F.prototype.dlShiftTo=function st(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},F.prototype.drShiftTo=function at(t,e){for(var r=t;r<this.t;++r)e[r-t]=this[r];e.t=Math.max(this.t-t,0),e.s=this.s},F.prototype.lShiftTo=function ut(t,e){var r,n=t%this.DB,i=this.DB-n,o=(1<<i)-1,s=Math.floor(t/this.DB),a=this.s<<n&this.DM;for(r=this.t-1;r>=0;--r)e[r+s+1]=this[r]>>i|a,a=(this[r]&o)<<n;for(r=s-1;r>=0;--r)e[r]=0;e[s]=a,e.t=this.t+s+1,e.s=this.s,e.clamp()},F.prototype.rShiftTo=function ct(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var n=t%this.DB,i=this.DB-n,o=(1<<n)-1;e[0]=this[r]>>n;for(var s=r+1;s<this.t;++s)e[s-r-1]|=(this[s]&o)<<i,e[s-r]=this[s]>>n;n>0&&(e[this.t-r-1]|=(this.s&o)<<i),e.t=this.t-r,e.clamp()}},F.prototype.subTo=function ht(t,e){for(var r=0,n=0,i=Math.min(t.t,this.t);r<i;)n+=this[r]-t[r],e[r++]=n&this.DM,n>>=this.DB;if(t.t<this.t){for(n-=t.s;r<this.t;)n+=this[r],e[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<t.t;)n-=t[r],e[r++]=n&this.DM,n>>=this.DB;n-=t.s}e.s=n<0?-1:0,n<-1?e[r++]=this.DV+n:n>0&&(e[r++]=n),e.t=r,e.clamp()},F.prototype.multiplyTo=function lt(t,e){var r=this.abs(),n=t.abs(),i=r.t;for(e.t=i+n.t;--i>=0;)e[i]=0;for(i=0;i<n.t;++i)e[i+r.t]=r.am(0,n[i],e,i,0,r.t);e.s=0,e.clamp(),this.s!=t.s&&F.ZERO.subTo(e,e)},F.prototype.squareTo=function ft(t){for(var e=this.abs(),r=t.t=2*e.t;--r>=0;)t[r]=0;for(r=0;r<e.t-1;++r){var n=e.am(r,e[r],t,2*r,0,1);(t[r+e.t]+=e.am(r+1,2*e[r],t,2*r+1,n,e.t-r-1))>=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},F.prototype.divRemTo=function gt(t,e,r){var n=t.abs();if(!(n.t<=0)){var i=this.abs();if(i.t<n.t)return null!=e&&e.fromInt(0),void(null!=r&&this.copyTo(r));null==r&&(r=E());var o=E(),s=this.s,a=t.s,u=this.DB-L(n[n.t-1]);u>0?(n.lShiftTo(u,o),i.lShiftTo(u,r)):(n.copyTo(o),i.copyTo(r));var c=o.t,h=o[c-1];if(0!=h){var l=h*(1<<this.F1)+(c>1?o[c-2]>>this.F2:0),f=this.FV/l,g=(1<<this.F1)/l,d=1<<this.F2,p=r.t,v=p-c,y=null==e?E():e;for(o.dlShiftTo(v,y),r.compareTo(y)>=0&&(r[r.t++]=1,r.subTo(y,r)),F.ONE.dlShiftTo(c,y),y.subTo(o,o);o.t<c;)o[o.t++]=0;for(;--v>=0;){var m=r[--p]==h?this.DM:Math.floor(r[p]*f+(r[p-1]+d)*g);if((r[p]+=o.am(0,m,r,v,0,c))<m)for(o.dlShiftTo(v,y),r.subTo(y,r);r[p]<--m;)r.subTo(y,r)}null!=e&&(r.drShiftTo(c,e),s!=a&&F.ZERO.subTo(e,e)),r.t=c,r.clamp(),u>0&&r.rShiftTo(u,r),s<0&&F.ZERO.subTo(r,r)}}},F.prototype.invDigit=function dt(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},F.prototype.isEven=function pt(){return 0==(this.t>0?1&this[0]:this.s)},F.prototype.exp=function vt(t,e){if(t>4294967295||t<1)return F.ONE;var r=E(),n=E(),i=e.convert(this),o=L(t)-1;for(i.copyTo(r);--o>=0;)if(e.sqrTo(r,n),(t&1<<o)>0)e.mulTo(n,i,r);else{var s=r;r=n,n=s}return e.revert(r)},F.prototype.toString=function yt(t){if(this.s<0)return\"-\"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,n=(1<<e)-1,i=!1,o=\"\",s=this.t,a=this.DB-s*this.DB%e;if(s-- >0)for(a<this.DB&&(r=this[s]>>a)>0&&(i=!0,o=R(r));s>=0;)a<e?(r=(this[s]&(1<<a)-1)<<e-a,r|=this[--s]>>(a+=this.DB-e)):(r=this[s]>>(a-=e)&n,a<=0&&(a+=this.DB,--s)),r>0&&(i=!0),i&&(o+=R(r));return i?o:\"0\"},F.prototype.negate=function mt(){var t=E();return F.ZERO.subTo(this,t),t},F.prototype.abs=function _t(){return this.s<0?this.negate():this},F.prototype.compareTo=function St(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},F.prototype.bitLength=function bt(){return this.t<=0?0:this.DB*(this.t-1)+L(this[this.t-1]^this.s&this.DM)},F.prototype.mod=function wt(t){var e=E();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(F.ZERO)>0&&t.subTo(e,e),e},F.prototype.modPowInt=function Ft(t,e){var r;return r=t<256||e.isEven()?new N(e):new U(e),this.exp(t,r)},F.ZERO=D(0),F.ONE=D(1),K.prototype.convert=q,K.prototype.revert=q,K.prototype.mulTo=function Et(t,e,r){t.multiplyTo(e,r)},K.prototype.sqrTo=function xt(t,e){t.squareTo(e)},J.prototype.convert=function At(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=E();return t.copyTo(e),this.reduce(e),e},J.prototype.revert=function kt(t){return t},J.prototype.reduce=function Pt(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},J.prototype.mulTo=function Ct(t,e,r){t.multiplyTo(e,r),this.reduce(r)},J.prototype.sqrTo=function Tt(t,e){t.squareTo(e),this.reduce(e)};var Rt=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],It=(1<<26)/Rt[Rt.length-1];\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction Dt(){this.i=0,this.j=0,this.S=new Array}F.prototype.chunkSize=function Lt(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},F.prototype.toRadix=function Nt(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return\"0\";var e=this.chunkSize(t),r=Math.pow(t,e),n=D(r),i=E(),o=E(),s=\"\";for(this.divRemTo(n,i,o);i.signum()>0;)s=(r+o.intValue()).toString(t).substr(1)+s,i.divRemTo(n,i,o);return o.intValue().toString(t)+s},F.prototype.fromRadix=function Ut(t,e){this.fromInt(0),null==e&&(e=10);for(var r=this.chunkSize(e),n=Math.pow(e,r),i=!1,o=0,s=0,a=0;a<t.length;++a){var u=I(t,a);u<0?\"-\"==t.charAt(a)&&0==this.signum()&&(i=!0):(s=e*s+u,++o>=r&&(this.dMultiply(n),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(e,o)),this.dAddOffset(s,0)),i&&F.ZERO.subTo(this,this)},F.prototype.fromNumber=function Bt(t,e,r){if(\"number\"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,r),this.testBit(t-1)||this.bitwiseTo(F.ONE.shiftLeft(t-1),O,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(F.ONE.shiftLeft(t-1),this);else{var n=new Array,i=7&t;n.length=1+(t>>3),e.nextBytes(n),i>0?n[0]&=(1<<i)-1:n[0]=0,this.fromString(n,256)}},F.prototype.bitwiseTo=function Ot(t,e,r){var n,i,o=Math.min(t.t,this.t);for(n=0;n<o;++n)r[n]=e(this[n],t[n]);if(t.t<this.t){for(i=t.s&this.DM,n=o;n<this.t;++n)r[n]=e(this[n],i);r.t=this.t}else{for(i=this.s&this.DM,n=o;n<t.t;++n)r[n]=e(i,t[n]);r.t=t.t}r.s=e(this.s,t.s),r.clamp()},F.prototype.changeBit=function jt(t,e){var r=F.ONE.shiftLeft(t);return this.bitwiseTo(r,e,r),r},F.prototype.addTo=function Mt(t,e){for(var r=0,n=0,i=Math.min(t.t,this.t);r<i;)n+=this[r]+t[r],e[r++]=n&this.DM,n>>=this.DB;if(t.t<this.t){for(n+=t.s;r<this.t;)n+=this[r],e[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<t.t;)n+=t[r],e[r++]=n&this.DM,n>>=this.DB;n+=t.s}e.s=n<0?-1:0,n>0?e[r++]=n:n<-1&&(e[r++]=this.DV+n),e.t=r,e.clamp()},F.prototype.dMultiply=function Ht(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},F.prototype.dAddOffset=function Vt(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},F.prototype.multiplyLowerTo=function Kt(t,e,r){var n,i=Math.min(this.t+t.t,e);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i<n;++i)r[i+this.t]=this.am(0,t[i],r,i,0,this.t);for(n=Math.min(t.t,e);i<n;++i)this.am(0,t[i],r,i,0,e-i);r.clamp()},F.prototype.multiplyUpperTo=function qt(t,e,r){--e;var n=r.t=this.t+t.t-e;for(r.s=0;--n>=0;)r[n]=0;for(n=Math.max(e-this.t,0);n<t.t;++n)r[this.t+n-e]=this.am(e-n,t[n],r,0,0,this.t+n-e);r.clamp(),r.drShiftTo(1,r)},F.prototype.modInt=function Jt(t){if(t<=0)return 0;var e=this.DV%t,r=this.s<0?t-1:0;if(this.t>0)if(0==e)r=this[0]%t;else for(var n=this.t-1;n>=0;--n)r=(e*r+this[n])%t;return r},F.prototype.millerRabin=function Wt(t){var e=this.subtract(F.ONE),r=e.getLowestSetBit();if(r<=0)return!1;var n=e.shiftRight(r);(t=t+1>>1)>Rt.length&&(t=Rt.length);for(var i=E(),o=0;o<t;++o){i.fromInt(Rt[Math.floor(Math.random()*Rt.length)]);var s=i.modPow(n,this);if(0!=s.compareTo(F.ONE)&&0!=s.compareTo(e)){for(var a=1;a++<r&&0!=s.compareTo(e);)if(0==(s=s.modPowInt(2,this)).compareTo(F.ONE))return!1;if(0!=s.compareTo(e))return!1}}return!0},F.prototype.clone=\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction zt(){var t=E();return this.copyTo(t),t},F.prototype.intValue=function Yt(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},F.prototype.byteValue=function Gt(){return 0==this.t?this.s:this[0]<<24>>24},F.prototype.shortValue=function Xt(){return 0==this.t?this.s:this[0]<<16>>16},F.prototype.signum=function $t(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},F.prototype.toByteArray=function Qt(){var t=this.t,e=new Array;e[0]=this.s;var r,n=this.DB-t*this.DB%8,i=0;if(t-- >0)for(n<this.DB&&(r=this[t]>>n)!=(this.s&this.DM)>>n&&(e[i++]=r|this.s<<this.DB-n);t>=0;)n<8?(r=(this[t]&(1<<n)-1)<<8-n,r|=this[--t]>>(n+=this.DB-8)):(r=this[t]>>(n-=8)&255,n<=0&&(n+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(e[i++]=r);return e},F.prototype.equals=function Zt(t){return 0==this.compareTo(t)},F.prototype.min=function te(t){return this.compareTo(t)<0?this:t},F.prototype.max=function ee(t){return this.compareTo(t)>0?this:t},F.prototype.and=function re(t){var e=E();return this.bitwiseTo(t,B,e),e},F.prototype.or=function ne(t){var e=E();return this.bitwiseTo(t,O,e),e},F.prototype.xor=function ie(t){var e=E();return this.bitwiseTo(t,j,e),e},F.prototype.andNot=function oe(t){var e=E();return this.bitwiseTo(t,M,e),e},F.prototype.not=function se(){for(var t=E(),e=0;e<this.t;++e)t[e]=this.DM&~this[e];return t.t=this.t,t.s=~this.s,t},F.prototype.shiftLeft=function ae(t){var e=E();return t<0?this.rShiftTo(-t,e):this.lShiftTo(t,e),e},F.prototype.shiftRight=function ue(t){var e=E();return t<0?this.lShiftTo(-t,e):this.rShiftTo(t,e),e},F.prototype.getLowestSetBit=function ce(){for(var t=0;t<this.t;++t)if(0!=this[t])return t*this.DB+H(this[t]);return this.s<0?this.t*this.DB:-1},F.prototype.bitCount=function he(){for(var t=0,e=this.s&this.DM,r=0;r<this.t;++r)t+=V(this[r]^e);return t},F.prototype.testBit=function le(t){var e=Math.floor(t/this.DB);return e>=this.t?0!=this.s:0!=(this[e]&1<<t%this.DB)},F.prototype.setBit=function fe(t){return this.changeBit(t,O)},F.prototype.clearBit=function ge(t){return this.changeBit(t,M)},F.prototype.flipBit=function de(t){return this.changeBit(t,j)},F.prototype.add=function pe(t){var e=E();return this.addTo(t,e),e},F.prototype.subtract=function ve(t){var e=E();return this.subTo(t,e),e},F.prototype.multiply=function ye(t){var e=E();return this.multiplyTo(t,e),e},F.prototype.divide=function me(t){var e=E();return this.divRemTo(t,e,null),e},F.prototype.remainder=function _e(t){var e=E();return this.divRemTo(t,null,e),e},F.prototype.divideAndRemainder=function Se(t){var e=E(),r=E();return this.divRemTo(t,e,r),new Array(e,r)},F.prototype.modPow=function be(t,e){var r,n,i=t.bitLength(),o=D(1);if(i<=0)return o;r=i<18?1:i<48?3:i<144?4:i<768?5:6,n=i<8?new N(e):e.isEven()?new J(e):new U(e);var s=new Array,a=3,u=r-1,c=(1<<r)-1;if(s[1]=n.convert(this),r>1){var h=E();for(n.sqrTo(s[1],h);a<=c;)s[a]=E(),n.mulTo(h,s[a-2],s[a]),a+=2}var l,f,g=t.t-1,d=!0,p=E();for(i=L(t[g])-1;g>=0;){for(i>=u?l=t[g]>>i-u&c:(l=(t[g]&(1<<i+1)-1)<<u-i,g>0&&(l|=t[g-1]>>this.DB+i-u)),a=r;0==(1&l);)l>>=1,--a;if((i-=a)<0&&(i+=this.DB,--g),d)s[l].copyTo(o),d=!1;else{for(;a>1;)n.sqrTo(o,p),n.sqrTo(p,o),a-=2;a>0?n.sqrTo(o,p):(f=o,o=p,p=f),n.mulTo(p,s[l],o)}for(;g>=0&&0==(t[g]&1<<i);)n.sqrTo(o,p),f=o,o=p,p=f,--i<0&&(i=this.DB-1,--g)}return n.revert(o)},F.prototype.modInverse=function we(t){var e=t.isEven();if(this.isEven()&&e||0==t.signum())return F.ZERO;for(var r=t.clone(),n=this.clone(),i=D(1),o=D(0),s=D(0),a=D(1);0!=r.signum();){for(;r.isEven();)r.rShiftTo(1,r),e?(i.isEven()&&o.isEven()||(i.addTo(this,i),o.subTo(t,o)),i.rShiftTo(1,i)):o.isEven()||o.subTo(t,o),o.rShiftTo(1,o);for(;n.isEven();)n.rShiftTo(1,n),e?(s.isEven()&&a.isEven()||(s.addTo(this,s),a.subTo(t,a)),s.rShiftTo(1,s)):a.isEven()||a.subTo(t,a),a.rShiftTo(1,a);r.compareTo(n)>=0?(r.subTo(n,r),e&&i.subTo(s,i),o.subTo(a,o)):(n.subTo(r,n),e&&s.subTo(i,s),a.subTo(o,a))}return 0!=n.compareTo(F.ONE)?F.ZERO:a.compareTo(t)>=0?a.subtract(t):a.signum()<0?(a.addTo(t,a),a.signum()<0?a.add(t):a):a},F.prototype.pow=function Fe(t){return this.exp(t,new K)},F.prototype.gcd=function Ee(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var n=e;e=r,r=n}var i=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(i<o&&(o=i),o>0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(i=e.getLowestSetBit())>0&&e.rShiftTo(i,e),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},F.prototype.isProbablePrime=function xe(t){var e,r=this.abs();if(1==r.t&&r[0]<=Rt[Rt.length-1]){for(e=0;e<Rt.length;++e)if(r[0]==Rt[e])return!0;return!1}if(r.isEven())return!1;for(e=1;e<Rt.length;){for(var n=Rt[e],i=e+1;i<Rt.length&&n<It;)n*=Rt[i++];for(n=r.modInt(n);e<i;)if(n%Rt[e++]==0)return!1}return r.millerRabin(t)},F.prototype.square=function Ae(){var t=E();return this.squareTo(t),t},Dt.prototype.init=function ke(t){var e,r,n;for(e=0;e<256;++e)this.S[e]=e;for(r=0,e=0;e<256;++e)r=r+this.S[e]+t[e%t.length]&255,n=this.S[e],this.S[e]=this.S[r],this.S[r]=n;this.i=0,this.j=0},Dt.prototype.next=function Pe(){var t;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,t=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=t,this.S[t+this.S[this.i]&255]};var Ce,Te,Re;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */function Ie(){!function t(e){Te[Re++]^=255&e,Te[Re++]^=e>>8&255,Te[Re++]^=e>>16&255,Te[Re++]^=e>>24&255,Re>=256&&(Re-=256)}((new Date).getTime())}if(null==Te){var De;if(Te=new Array,Re=0,void 0!==i&&(void 0!==i.crypto||void 0!==i.msCrypto)){var Le=i.crypto||i.msCrypto;if(Le.getRandomValues){var Ne=new Uint8Array(32);for(Le.getRandomValues(Ne),De=0;De<32;++De)Te[Re++]=Ne[De]}else if(\"Netscape\"==n.appName&&n.appVersion<\"5\"){var Ue=i.crypto.random(32);for(De=0;De<Ue.length;++De)Te[Re++]=255&Ue.charCodeAt(De)}}for(;Re<256;)De=Math.floor(65536*Math.random()),Te[Re++]=De>>>8,Te[Re++]=255&De;Re=0,Ie()}function Be(){if(null==Ce){for(Ie(),(Ce=function t(){return new Dt}()).init(Te),Re=0;Re<Te.length;++Re)Te[Re]=0;Re=0}return Ce.next()}function Oe(){}\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction je(t,e){return new F(t,e)}function Me(t,e,r){for(var n=\"\",i=0;n.length<e;)n+=r(String.fromCharCode.apply(String,t.concat([(4278190080&i)>>24,(16711680&i)>>16,(65280&i)>>8,255&i]))),i+=1;return n}function He(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null}\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction Ve(t,e){this.x=e,this.q=t}function Ke(t,e,r,n){this.curve=t,this.x=e,this.y=r,this.z=null==n?F.ONE:n,this.zinv=null}function qe(t,e,r){this.q=t,this.a=this.fromBigInteger(e),this.b=this.fromBigInteger(r),this.infinity=new Ke(this,null,null)}Oe.prototype.nextBytes=function Je(t){var e;for(e=0;e<t.length;++e)t[e]=Be()},He.prototype.doPublic=function We(t){return t.modPowInt(this.e,this.n)},He.prototype.setPublic=function ze(t,e){if(this.isPublic=!0,this.isPrivate=!1,\"string\"!=typeof t)this.n=t,this.e=e;else{if(!(null!=t&&null!=e&&t.length>0&&e.length>0))throw\"Invalid RSA public key\";this.n=je(t,16),this.e=parseInt(e,16)}},He.prototype.encrypt=function Ye(t){var e=function r(t,e){if(e<t.length+11)throw\"Message too long for RSA\";for(var r=new Array,n=t.length-1;n>=0&&e>0;){var i=t.charCodeAt(n--);i<128?r[--e]=i:i>127&&i<2048?(r[--e]=63&i|128,r[--e]=i>>6|192):(r[--e]=63&i|128,r[--e]=i>>6&63|128,r[--e]=i>>12|224)}r[--e]=0;for(var o=new Oe,s=new Array;e>2;){for(s[0]=0;0==s[0];)o.nextBytes(s);r[--e]=s[0]}return r[--e]=2,r[--e]=0,new F(r)}(t,this.n.bitLength()+7>>3);if(null==e)return null;var n=this.doPublic(e);if(null==n)return null;var i=n.toString(16);return 0==(1&i.length)?i:\"0\"+i},He.prototype.encryptOAEP=function Ge(t,e,r){var n=function i(t,e,r,n){var i=br.crypto.MessageDigest,o=br.crypto.Util,s=null;if(r||(r=\"sha1\"),\"string\"==typeof r&&(s=i.getCanonicalAlgName(r),n=i.getHashLength(s),r=function t(e){return Nr(o.hashHex(Ur(e),s))}),t.length+2*n+2>e)throw\"Message too long for RSA\";var a,u=\"\";for(a=0;a<e-t.length-2*n-2;a+=1)u+=\"\\0\";var c=r(\"\")+u+\"\u0001\"+t,h=new Array(n);(new Oe).nextBytes(h);var l=Me(h,c.length,r),f=[];for(a=0;a<c.length;a+=1)f[a]=c.charCodeAt(a)^l.charCodeAt(a);var g=Me(f,h.length,r),d=[0];for(a=0;a<h.length;a+=1)d[a+1]=h[a]^g.charCodeAt(a);return new F(d.concat(f))}(t,this.n.bitLength()+7>>3,e,r);if(null==n)return null;var o=this.doPublic(n);if(null==o)return null;var s=o.toString(16);return 0==(1&s.length)?s:\"0\"+s},He.prototype.type=\"RSA\",Ve.prototype.equals=function Xe(t){return t==this||this.q.equals(t.q)&&this.x.equals(t.x)},Ve.prototype.toBigInteger=function $e(){return this.x},Ve.prototype.negate=function Qe(){return new Ve(this.q,this.x.negate().mod(this.q))},Ve.prototype.add=function Ze(t){return new Ve(this.q,this.x.add(t.toBigInteger()).mod(this.q))},Ve.prototype.subtract=function tr(t){return new Ve(this.q,this.x.subtract(t.toBigInteger()).mod(this.q))},Ve.prototype.multiply=function er(t){return new Ve(this.q,this.x.multiply(t.toBigInteger()).mod(this.q))},Ve.prototype.square=function rr(){return new Ve(this.q,this.x.square().mod(this.q))},Ve.prototype.divide=function nr(t){return new Ve(this.q,this.x.multiply(t.toBigInteger().modInverse(this.q)).mod(this.q))},Ke.prototype.getX=function ir(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))},Ke.prototype.getY=function or(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))},Ke.prototype.equals=function sr(t){return t==this||(this.isInfinity()?t.isInfinity():t.isInfinity()?this.isInfinity():!!t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(F.ZERO)&&t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(F.ZERO))},Ke.prototype.isInfinity=function ar(){return null==this.x&&null==this.y||this.z.equals(F.ZERO)&&!this.y.toBigInteger().equals(F.ZERO)},Ke.prototype.negate=function ur(){return new Ke(this.curve,this.x,this.y.negate(),this.z)},Ke.prototype.add=function cr(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q),r=t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q);if(F.ZERO.equals(r))return F.ZERO.equals(e)?this.twice():this.curve.getInfinity();var n=new F(\"3\"),i=this.x.toBigInteger(),o=this.y.toBigInteger(),s=(t.x.toBigInteger(),t.y.toBigInteger(),r.square()),a=s.multiply(r),u=i.multiply(s),c=e.square().multiply(this.z),h=c.subtract(u.shiftLeft(1)).multiply(t.z).subtract(a).multiply(r).mod(this.curve.q),l=u.multiply(n).multiply(e).subtract(o.multiply(a)).subtract(c.multiply(e)).multiply(t.z).add(e.multiply(a)).mod(this.curve.q),f=a.multiply(this.z).multiply(t.z).mod(this.curve.q);return new Ke(this.curve,this.curve.fromBigInteger(h),this.curve.fromBigInteger(l),f)},Ke.prototype.twice=function hr(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=new F(\"3\"),e=this.x.toBigInteger(),r=this.y.toBigInteger(),n=r.multiply(this.z),i=n.multiply(r).mod(this.curve.q),o=this.curve.a.toBigInteger(),s=e.square().multiply(t);F.ZERO.equals(o)||(s=s.add(this.z.square().multiply(o)));var a=(s=s.mod(this.curve.q)).square().subtract(e.shiftLeft(3).multiply(i)).shiftLeft(1).multiply(n).mod(this.curve.q),u=s.multiply(t).multiply(e).subtract(i.shiftLeft(1)).shiftLeft(2).multiply(i).subtract(s.square().multiply(s)).mod(this.curve.q),c=n.square().multiply(n).shiftLeft(3).mod(this.curve.q);return new Ke(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(u),c)},Ke.prototype.multiply=function lr(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new F(\"3\")),i=this.negate(),o=this,s=this.curve.q.subtract(t),a=s.multiply(new F(\"3\")),u=new Ke(this.curve,this.x,this.y),c=u.negate();for(e=n.bitLength()-2;e>0;--e){o=o.twice();var h=n.testBit(e);h!=r.testBit(e)&&(o=o.add(h?this:i))}for(e=a.bitLength()-2;e>0;--e){u=u.twice();var l=a.testBit(e);l!=s.testBit(e)&&(u=u.add(l?u:c))}return o},Ke.prototype.multiplyTwo=function fr(t,e,r){var n;n=t.bitLength()>r.bitLength()?t.bitLength()-1:r.bitLength()-1;for(var i=this.curve.getInfinity(),o=this.add(e);n>=0;)i=i.twice(),t.testBit(n)?i=r.testBit(n)?i.add(o):i.add(this):r.testBit(n)&&(i=i.add(e)),--n;return i},qe.prototype.getQ=function gr(){return this.q},qe.prototype.getA=function dr(){return this.a},qe.prototype.getB=function pr(){return this.b},qe.prototype.equals=function vr(t){return t==this||this.q.equals(t.q)&&this.a.equals(t.a)&&this.b.equals(t.b)},qe.prototype.getInfinity=function yr(){return this.infinity},qe.prototype.fromBigInteger=function mr(t){return new Ve(this.q,t)},qe.prototype.decodePointHex=function _r(t){switch(parseInt(t.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var e=(t.length-2)/2,r=t.substr(2,e),n=t.substr(e+2,e);return new Ke(this,this.fromBigInteger(new F(r,16)),this.fromBigInteger(new F(n,16)));default:return null}},\n/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib\n */\nVe.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)},Ke.prototype.getEncoded=function(t){var e=function t(e,r){var n=e.toByteArrayUnsigned();if(r<n.length)n=n.slice(n.length-r);else for(;r>n.length;)n.unshift(0);return n},r=this.getX().toBigInteger(),n=this.getY().toBigInteger(),i=e(r,32);return t?n.isEven()?i.unshift(2):i.unshift(3):(i.unshift(4),i=i.concat(e(n,32))),i},Ke.decodeFrom=function(t,e){e[0];var r=e.length-1,n=e.slice(1,1+r/2),i=e.slice(1+r/2,1+r);n.unshift(0),i.unshift(0);var o=new F(n),s=new F(i);return new Ke(t,t.fromBigInteger(o),t.fromBigInteger(s))},Ke.decodeFromHex=function(t,e){e.substr(0,2);var r=e.length-2,n=e.substr(2,r/2),i=e.substr(2+r/2,r/2),o=new F(n,16),s=new F(i,16);return new Ke(t,t.fromBigInteger(o),t.fromBigInteger(s))},Ke.prototype.add2D=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;if(this.x.equals(t.x))return this.y.equals(t.y)?this.twice():this.curve.getInfinity();var e=t.x.subtract(this.x),r=t.y.subtract(this.y).divide(e),n=r.square().subtract(this.x).subtract(t.x),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new Ke(this.curve,n,i)},Ke.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=this.curve.fromBigInteger(F.valueOf(2)),e=this.curve.fromBigInteger(F.valueOf(3)),r=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(t)),n=r.square().subtract(this.x.multiply(t)),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new Ke(this.curve,n,i)},Ke.prototype.multiply2D=function(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new F(\"3\")),i=this.negate(),o=this;for(e=n.bitLength()-2;e>0;--e){o=o.twice();var s=n.testBit(e);s!=r.testBit(e)&&(o=o.add2D(s?this:i))}return o},Ke.prototype.isOnCurve=function(){var t=this.getX().toBigInteger(),e=this.getY().toBigInteger(),r=this.curve.getA().toBigInteger(),n=this.curve.getB().toBigInteger(),i=this.curve.getQ(),o=e.multiply(e).mod(i),s=t.multiply(t).multiply(t).add(r.multiply(t)).add(n).mod(i);return o.equals(s)},Ke.prototype.toString=function(){return\"(\"+this.getX().toBigInteger().toString()+\",\"+this.getY().toBigInteger().toString()+\")\"},Ke.prototype.validate=function(){var t=this.curve.getQ();if(this.isInfinity())throw new Error(\"Point is at infinity.\");var e=this.getX().toBigInteger(),r=this.getY().toBigInteger();if(e.compareTo(F.ONE)<0||e.compareTo(t.subtract(F.ONE))>0)throw new Error(\"x coordinate out of bounds\");if(r.compareTo(F.ONE)<0||r.compareTo(t.subtract(F.ONE))>0)throw new Error(\"y coordinate out of bounds\");if(!this.isOnCurve())throw new Error(\"Point is not on the curve.\");if(this.multiply(t).isInfinity())throw new Error(\"Point is not a scalar multiple of G.\");return!0};\n/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval\n */\nvar Sr=function(){var t=new RegExp('(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)|(?:\"(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))*\"))',\"g\"),e=new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\",\"g\"),n={'\"':'\"',\"/\":\"/\",\"\\\\\":\"\\\\\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"};function i(t,e,r){return e?n[e]:String.fromCharCode(parseInt(r,16))}var o=new String(\"\"),s=Object.hasOwnProperty;return function(n,a){var u,c,h=n.match(t),l=h[0],f=!1;\"{\"===l?u={}:\"[\"===l?u=[]:(u=[],f=!0);for(var g=[u],d=1-f,p=h.length;d<p;++d){var v;switch((l=h[d]).charCodeAt(0)){default:(v=g[0])[c||v.length]=+l,c=void 0;break;case 34:if(-1!==(l=l.substring(1,l.length-1)).indexOf(\"\\\\\")&&(l=l.replace(e,i)),v=g[0],!c){if(!(v instanceof Array)){c=l||o;break}c=v.length}v[c]=l,c=void 0;break;case 91:v=g[0],g.unshift(v[c||v.length]=[]),c=void 0;break;case 93:g.shift();break;case 102:(v=g[0])[c||v.length]=!1,c=void 0;break;case 110:(v=g[0])[c||v.length]=null,c=void 0;break;case 116:(v=g[0])[c||v.length]=!0,c=void 0;break;case 123:v=g[0],g.unshift(v[c||v.length]={}),c=void 0;break;case 125:g.shift()}}if(f){if(1!==g.length)throw new Error;u=u[0]}else if(g.length)throw new Error;if(a){u=function t(e,n){var i=e[n];if(i&&\"object\"===(void 0===i?\"undefined\":r(i))){var o=null;for(var u in i)if(s.call(i,u)&&i!==e){var c=t(i,u);void 0!==c?i[u]=c:(o||(o=[]),o.push(u))}if(o)for(var h=o.length;--h>=0;)delete i[o[h]]}return a.call(e,n,i)}({\"\":u},\"\")}return u}}();void 0!==br&&br||(e.KJUR=br={}),void 0!==br.asn1&&br.asn1||(br.asn1={}),br.asn1.ASN1Util=new function(){this.integerToByteHex=function(t){var e=t.toString(16);return e.length%2==1&&(e=\"0\"+e),e},this.bigIntToMinTwosComplementsHex=function(t){var e=t.toString(16);if(\"-\"!=e.substr(0,1))e.length%2==1?e=\"0\"+e:e.match(/^[0-7]/)||(e=\"00\"+e);else{var r=e.substr(1).length;r%2==1?r+=1:e.match(/^[0-7]/)||(r+=2);for(var n=\"\",i=0;i<r;i++)n+=\"f\";e=new F(n,16).xor(t).add(F.ONE).toString(16).replace(/^-/,\"\")}return e},this.getPEMStringFromHex=function(t,e){return Mr(t,e)},this.newObject=function(t){var e=br.asn1,r=e.ASN1Object,n=e.DERBoolean,i=e.DERInteger,o=e.DERBitString,s=e.DEROctetString,a=e.DERNull,u=e.DERObjectIdentifier,c=e.DEREnumerated,h=e.DERUTF8String,l=e.DERNumericString,f=e.DERPrintableString,g=e.DERTeletexString,d=e.DERIA5String,p=e.DERUTCTime,v=e.DERGeneralizedTime,y=e.DERVisibleString,m=e.DERBMPString,_=e.DERSequence,S=e.DERSet,b=e.DERTaggedObject,w=e.ASN1Util.newObject;if(t instanceof e.ASN1Object)return t;var F=Object.keys(t);if(1!=F.length)throw new Error(\"key of param shall be only one.\");var E=F[0];if(-1==\":asn1:bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:visstr:bmpstr:seq:set:tag:\".indexOf(\":\"+E+\":\"))throw new Error(\"undefined key: \"+E);if(\"bool\"==E)return new n(t[E]);if(\"int\"==E)return new i(t[E]);if(\"bitstr\"==E)return new o(t[E]);if(\"octstr\"==E)return new s(t[E]);if(\"null\"==E)return new a(t[E]);if(\"oid\"==E)return new u(t[E]);if(\"enum\"==E)return new c(t[E]);if(\"utf8str\"==E)return new h(t[E]);if(\"numstr\"==E)return new l(t[E]);if(\"prnstr\"==E)return new f(t[E]);if(\"telstr\"==E)return new g(t[E]);if(\"ia5str\"==E)return new d(t[E]);if(\"utctime\"==E)return new p(t[E]);if(\"gentime\"==E)return new v(t[E]);if(\"visstr\"==E)return new y(t[E]);if(\"bmpstr\"==E)return new m(t[E]);if(\"asn1\"==E)return new r(t[E]);if(\"seq\"==E){for(var x=t[E],A=[],k=0;k<x.length;k++){var P=w(x[k]);A.push(P)}return new _({array:A})}if(\"set\"==E){for(x=t[E],A=[],k=0;k<x.length;k++){P=w(x[k]);A.push(P)}return new S({array:A})}if(\"tag\"==E){var C=t[E];if(\"[object Array]\"===Object.prototype.toString.call(C)&&3==C.length){var T=w(C[2]);return new b({tag:C[0],explicit:C[1],obj:T})}return new b(C)}},this.jsonToASN1HEX=function(t){return this.newObject(t).getEncodedHex()}},br.asn1.ASN1Util.oidHexToInt=function(t){for(var e=\"\",r=parseInt(t.substr(0,2),16),n=(e=Math.floor(r/40)+\".\"+r%40,\"\"),i=2;i<t.length;i+=2){var o=(\"00000000\"+parseInt(t.substr(i,2),16).toString(2)).slice(-8);if(n+=o.substr(1,7),\"0\"==o.substr(0,1))e=e+\".\"+new F(n,2).toString(10),n=\"\"}return e},br.asn1.ASN1Util.oidIntToHex=function(t){var e=function t(e){var r=e.toString(16);return 1==r.length&&(r=\"0\"+r),r},r=function t(r){var n=\"\",i=new F(r,10).toString(2),o=7-i.length%7;7==o&&(o=0);for(var s=\"\",a=0;a<o;a++)s+=\"0\";i=s+i;for(a=0;a<i.length-1;a+=7){var u=i.substr(a,7);a!=i.length-7&&(u=\"1\"+u),n+=e(parseInt(u,2))}return n};if(!t.match(/^[0-9.]+$/))throw\"malformed oid string: \"+t;var n=\"\",i=t.split(\".\"),o=40*parseInt(i[0])+parseInt(i[1]);n+=e(o),i.splice(0,2);for(var s=0;s<i.length;s++)n+=r(i[s]);return n},br.asn1.ASN1Object=function(t){this.params=null,this.getLengthHexFromValue=function(){if(void 0===this.hV||null==this.hV)throw new Error(\"this.hV is null or undefined\");if(this.hV.length%2==1)throw new Error(\"value hex must be even length: n=\"+\"\".length+\",v=\"+this.hV);var t=this.hV.length/2,e=t.toString(16);if(e.length%2==1&&(e=\"0\"+e),t<128)return e;var r=e.length/2;if(r>15)throw\"ASN.1 length too long to represent by 8x: n = \"+t.toString(16);return(128+r).toString(16)+e},this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getValueHex=function(){return this.getEncodedHex(),this.hV},this.getFreshValueHex=function(){return\"\"},this.setByParam=function(t){this.params=t},null!=t&&null!=t.tlv&&(this.hTLV=t.tlv,this.isModified=!1)},br.asn1.DERAbstractString=function(t){br.asn1.DERAbstractString.superclass.constructor.call(this);this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=Dr(this.s).toLowerCase()},this.setStringHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(\"string\"==typeof t?this.setString(t):void 0!==t.str?this.setString(t.str):void 0!==t.hex&&this.setStringHex(t.hex))},o.lang.extend(br.asn1.DERAbstractString,br.asn1.ASN1Object),br.asn1.DERAbstractTime=function(t){br.asn1.DERAbstractTime.superclass.constructor.call(this);this.localDateToUTC=function(t){var e=t.getTime()+6e4*t.getTimezoneOffset();return new Date(e)},this.formatDate=function(t,e,r){var n=this.zeroPadding,i=this.localDateToUTC(t),o=String(i.getFullYear());\"utc\"==e&&(o=o.substr(2,2));var s=o+n(String(i.getMonth()+1),2)+n(String(i.getDate()),2)+n(String(i.getHours()),2)+n(String(i.getMinutes()),2)+n(String(i.getSeconds()),2);if(!0===r){var a=i.getMilliseconds();if(0!=a){var u=n(String(a),3);s=s+\".\"+(u=u.replace(/[0]+$/,\"\"))}}return s+\"Z\"},this.zeroPadding=function(t,e){return t.length>=e?t:new Array(e-t.length+1).join(\"0\")+t},this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=Pr(t)},this.setByDateValue=function(t,e,r,n,i,o){var s=new Date(Date.UTC(t,e-1,r,n,i,o,0));this.setByDate(s)},this.getFreshValueHex=function(){return this.hV}},o.lang.extend(br.asn1.DERAbstractTime,br.asn1.ASN1Object),br.asn1.DERAbstractStructured=function(t){br.asn1.DERAbstractString.superclass.constructor.call(this);this.setByASN1ObjectArray=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array=t},this.appendASN1Object=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array.push(t)},this.asn1Array=new Array,void 0!==t&&void 0!==t.array&&(this.asn1Array=t.array)},o.lang.extend(br.asn1.DERAbstractStructured,br.asn1.ASN1Object),br.asn1.DERBoolean=function(t){br.asn1.DERBoolean.superclass.constructor.call(this),this.hT=\"01\",this.hTLV=0==t?\"010100\":\"0101ff\"},o.lang.extend(br.asn1.DERBoolean,br.asn1.ASN1Object),br.asn1.DERInteger=function(t){br.asn1.DERInteger.superclass.constructor.call(this),this.hT=\"02\",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=br.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new F(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.bigint?this.setByBigInteger(t.bigint):void 0!==t.int?this.setByInteger(t.int):\"number\"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},o.lang.extend(br.asn1.DERInteger,br.asn1.ASN1Object),br.asn1.DERBitString=function(t){if(void 0!==t&&void 0!==t.obj){var e=br.asn1.ASN1Util.newObject(t.obj);t.hex=\"00\"+e.getEncodedHex()}br.asn1.DERBitString.superclass.constructor.call(this),this.hT=\"03\",this.setHexValueIncludingUnusedBits=function(t){this.hTLV=null,this.isModified=!0,this.hV=t},this.setUnusedBitsAndHexValue=function(t,e){if(t<0||7<t)throw\"unused bits shall be from 0 to 7: u = \"+t;var r=\"0\"+t;this.hTLV=null,this.isModified=!0,this.hV=r+e},this.setByBinaryString=function(t){var e=8-(t=t.replace(/0+$/,\"\")).length%8;8==e&&(e=0);for(var r=0;r<=e;r++)t+=\"0\";var n=\"\";for(r=0;r<t.length-1;r+=8){var i=t.substr(r,8),o=parseInt(i,2).toString(16);1==o.length&&(o=\"0\"+o),n+=o}this.hTLV=null,this.isModified=!0,this.hV=\"0\"+e+n},this.setByBooleanArray=function(t){for(var e=\"\",r=0;r<t.length;r++)1==t[r]?e+=\"1\":e+=\"0\";this.setByBinaryString(e)},this.newFalseArray=function(t){for(var e=new Array(t),r=0;r<t;r++)e[r]=!1;return e},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(\"string\"==typeof t&&t.toLowerCase().match(/^[0-9a-f]+$/)?this.setHexValueIncludingUnusedBits(t):void 0!==t.hex?this.setHexValueIncludingUnusedBits(t.hex):void 0!==t.bin?this.setByBinaryString(t.bin):void 0!==t.array&&this.setByBooleanArray(t.array))},o.lang.extend(br.asn1.DERBitString,br.asn1.ASN1Object),br.asn1.DEROctetString=function(t){if(void 0!==t&&void 0!==t.obj){var e=br.asn1.ASN1Util.newObject(t.obj);t.hex=e.getEncodedHex()}br.asn1.DEROctetString.superclass.constructor.call(this,t),this.hT=\"04\"},o.lang.extend(br.asn1.DEROctetString,br.asn1.DERAbstractString),br.asn1.DERNull=function(){br.asn1.DERNull.superclass.constructor.call(this),this.hT=\"05\",this.hTLV=\"0500\"},o.lang.extend(br.asn1.DERNull,br.asn1.ASN1Object),br.asn1.DERObjectIdentifier=function(t){br.asn1.DERObjectIdentifier.superclass.constructor.call(this),this.hT=\"06\",this.setValueHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.setValueOidString=function(t){var e=function r(t){var e=function t(e){var r=e.toString(16);return 1==r.length&&(r=\"0\"+r),r},r=function t(r){var n=\"\",i=parseInt(r,10).toString(2),o=7-i.length%7;7==o&&(o=0);for(var s=\"\",a=0;a<o;a++)s+=\"0\";i=s+i;for(a=0;a<i.length-1;a+=7){var u=i.substr(a,7);a!=i.length-7&&(u=\"1\"+u),n+=e(parseInt(u,2))}return n};try{if(!t.match(/^[0-9.]+$/))return null;var n=\"\",i=t.split(\".\"),o=40*parseInt(i[0],10)+parseInt(i[1],10);n+=e(o),i.splice(0,2);for(var s=0;s<i.length;s++)n+=r(i[s]);return n}catch(t){return null}}(t);if(null==e)throw new Error(\"malformed oid string: \"+t);this.hTLV=null,this.isModified=!0,this.s=null,this.hV=e},this.setValueName=function(t){var e=br.asn1.x509.OID.name2oid(t);if(\"\"===e)throw new Error(\"DERObjectIdentifier oidName undefined: \"+t);this.setValueOidString(e)},this.setValueNameOrOid=function(t){t.match(/^[0-2].[0-9.]+$/)?this.setValueOidString(t):this.setValueName(t)},this.getFreshValueHex=function(){return this.hV},this.setByParam=function(t){\"string\"==typeof t?this.setValueNameOrOid(t):void 0!==t.oid?this.setValueNameOrOid(t.oid):void 0!==t.name?this.setValueNameOrOid(t.name):void 0!==t.hex&&this.setValueHex(t.hex)},void 0!==t&&this.setByParam(t)},o.lang.extend(br.asn1.DERObjectIdentifier,br.asn1.ASN1Object),br.asn1.DEREnumerated=function(t){br.asn1.DEREnumerated.superclass.constructor.call(this),this.hT=\"0a\",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=br.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new F(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.int?this.setByInteger(t.int):\"number\"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},o.lang.extend(br.asn1.DEREnumerated,br.asn1.ASN1Object),br.asn1.DERUTF8String=function(t){br.asn1.DERUTF8String.superclass.constructor.call(this,t),this.hT=\"0c\"},o.lang.extend(br.asn1.DERUTF8String,br.asn1.DERAbstractString),br.asn1.DERNumericString=function(t){br.asn1.DERNumericString.superclass.constructor.call(this,t),this.hT=\"12\"},o.lang.extend(br.asn1.DERNumericString,br.asn1.DERAbstractString),br.asn1.DERPrintableString=function(t){br.asn1.DERPrintableString.superclass.constructor.call(this,t),this.hT=\"13\"},o.lang.extend(br.asn1.DERPrintableString,br.asn1.DERAbstractString),br.asn1.DERTeletexString=function(t){br.asn1.DERTeletexString.superclass.constructor.call(this,t),this.hT=\"14\"},o.lang.extend(br.asn1.DERTeletexString,br.asn1.DERAbstractString),br.asn1.DERIA5String=function(t){br.asn1.DERIA5String.superclass.constructor.call(this,t),this.hT=\"16\"},o.lang.extend(br.asn1.DERIA5String,br.asn1.DERAbstractString),br.asn1.DERVisibleString=function(t){br.asn1.DERIA5String.superclass.constructor.call(this,t),this.hT=\"1a\"},o.lang.extend(br.asn1.DERVisibleString,br.asn1.DERAbstractString),br.asn1.DERBMPString=function(t){br.asn1.DERBMPString.superclass.constructor.call(this,t),this.hT=\"1e\"},o.lang.extend(br.asn1.DERBMPString,br.asn1.DERAbstractString),br.asn1.DERUTCTime=function(t){br.asn1.DERUTCTime.superclass.constructor.call(this,t),this.hT=\"17\",this.setByDate=function(t){this.hTLV=null,this.isModified=!0,this.date=t,this.s=this.formatDate(this.date,\"utc\"),this.hV=Pr(this.s)},this.getFreshValueHex=function(){return void 0===this.date&&void 0===this.s&&(this.date=new Date,this.s=this.formatDate(this.date,\"utc\"),this.hV=Pr(this.s)),this.hV},void 0!==t&&(void 0!==t.str?this.setString(t.str):\"string\"==typeof t&&t.match(/^[0-9]{12}Z$/)?this.setString(t):void 0!==t.hex?this.setStringHex(t.hex):void 0!==t.date&&this.setByDate(t.date))},o.lang.extend(br.asn1.DERUTCTime,br.asn1.DERAbstractTime),br.asn1.DERGeneralizedTime=function(t){br.asn1.DERGeneralizedTime.superclass.constructor.call(this,t),this.hT=\"18\",this.withMillis=!1,this.setByDate=function(t){this.hTLV=null,this.isModified=!0,this.date=t,this.s=this.formatDate(this.date,\"gen\",this.withMillis),this.hV=Pr(this.s)},this.getFreshValueHex=function(){return void 0===this.date&&void 0===this.s&&(this.date=new Date,this.s=this.formatDate(this.date,\"gen\",this.withMillis),this.hV=Pr(this.s)),this.hV},void 0!==t&&(void 0!==t.str?this.setString(t.str):\"string\"==typeof t&&t.match(/^[0-9]{14}Z$/)?this.setString(t):void 0!==t.hex?this.setStringHex(t.hex):void 0!==t.date&&this.setByDate(t.date),!0===t.millis&&(this.withMillis=!0))},o.lang.extend(br.asn1.DERGeneralizedTime,br.asn1.DERAbstractTime),br.asn1.DERSequence=function(t){br.asn1.DERSequence.superclass.constructor.call(this,t),this.hT=\"30\",this.getFreshValueHex=function(){for(var t=\"\",e=0;e<this.asn1Array.length;e++){t+=this.asn1Array[e].getEncodedHex()}return this.hV=t,this.hV}},o.lang.extend(br.asn1.DERSequence,br.asn1.DERAbstractStructured),br.asn1.DERSet=function(t){br.asn1.DERSet.superclass.constructor.call(this,t),this.hT=\"31\",this.sortFlag=!0,this.getFreshValueHex=function(){for(var t=new Array,e=0;e<this.asn1Array.length;e++){var r=this.asn1Array[e];t.push(r.getEncodedHex())}return 1==this.sortFlag&&t.sort(),this.hV=t.join(\"\"),this.hV},void 0!==t&&void 0!==t.sortflag&&0==t.sortflag&&(this.sortFlag=!1)},o.lang.extend(br.asn1.DERSet,br.asn1.DERAbstractStructured),br.asn1.DERTaggedObject=function(t){br.asn1.DERTaggedObject.superclass.constructor.call(this);var e=br.asn1;this.hT=\"a0\",this.hV=\"\",this.isExplicit=!0,this.asn1Object=null,this.setASN1Object=function(t,e,r){this.hT=e,this.isExplicit=t,this.asn1Object=r,this.isExplicit?(this.hV=this.asn1Object.getEncodedHex(),this.hTLV=null,this.isModified=!0):(this.hV=null,this.hTLV=r.getEncodedHex(),this.hTLV=this.hTLV.replace(/^../,e),this.isModified=!1)},this.getFreshValueHex=function(){return this.hV},this.setByParam=function(t){null!=t.tag&&(this.hT=t.tag),null!=t.explicit&&(this.isExplicit=t.explicit),null!=t.tage&&(this.hT=t.tage,this.isExplicit=!0),null!=t.tagi&&(this.hT=t.tagi,this.isExplicit=!1),null!=t.obj&&(t.obj instanceof e.ASN1Object?(this.asn1Object=t.obj,this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)):\"object\"==r(t.obj)&&(this.asn1Object=e.ASN1Util.newObject(t.obj),this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)))},null!=t&&this.setByParam(t)},o.lang.extend(br.asn1.DERTaggedObject,br.asn1.ASN1Object);var br,wr,Fr,Er=new function(){};function xr(t){for(var e=new Array,r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}function Ar(t){for(var e=\"\",r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e}function kr(t){for(var e=\"\",r=0;r<t.length;r++){var n=t[r].toString(16);1==n.length&&(n=\"0\"+n),e+=n}return e}function Pr(t){return kr(xr(t))}function Cr(t){return t=(t=(t=t.replace(/\\=/g,\"\")).replace(/\\+/g,\"-\")).replace(/\\//g,\"_\")}function Tr(t){return t.length%4==2?t+=\"==\":t.length%4==3&&(t+=\"=\"),t=(t=t.replace(/-/g,\"+\")).replace(/_/g,\"/\")}function Rr(t){return t.length%2==1&&(t=\"0\"+t),Cr(S(t))}function Ir(t){return b(Tr(t))}function Dr(t){return qr(Gr(t))}function Lr(t){return decodeURIComponent(Jr(t))}function Nr(t){for(var e=\"\",r=0;r<t.length-1;r+=2)e+=String.fromCharCode(parseInt(t.substr(r,2),16));return e}function Ur(t){for(var e=\"\",r=0;r<t.length;r++)e+=(\"0\"+t.charCodeAt(r).toString(16)).slice(-2);return e}function Br(t){return S(t)}function Or(t){var e=Br(t).replace(/(.{64})/g,\"$1\\r\\n\");return e=e.replace(/\\r\\n$/,\"\")}function jr(t){return b(t.replace(/[^0-9A-Za-z\\/+=]*/g,\"\"))}function Mr(t,e){return\"-----BEGIN \"+e+\"-----\\r\\n\"+Or(t)+\"\\r\\n-----END \"+e+\"-----\\r\\n\"}function Hr(t,e){if(-1==t.indexOf(\"-----BEGIN \"))throw\"can't find PEM header: \"+e;return jr(t=void 0!==e?(t=t.replace(new RegExp(\"^[^]*-----BEGIN \"+e+\"-----\"),\"\")).replace(new RegExp(\"-----END \"+e+\"-----[^]*$\"),\"\"):(t=t.replace(/^[^]*-----BEGIN [^-]+-----/,\"\")).replace(/-----END [^-]+-----[^]*$/,\"\"))}function Vr(t){var e,r,n,i,o,s,a,u,c,h,l;if(l=t.match(/^(\\d{2}|\\d{4})(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(|\\.\\d+)Z$/))return u=l[1],e=parseInt(u),2===u.length&&(50<=e&&e<100?e=1900+e:0<=e&&e<50&&(e=2e3+e)),r=parseInt(l[2])-1,n=parseInt(l[3]),i=parseInt(l[4]),o=parseInt(l[5]),s=parseInt(l[6]),a=0,\"\"!==(c=l[7])&&(h=(c.substr(1)+\"00\").substr(0,3),a=parseInt(h)),Date.UTC(e,r,n,i,o,s,a);throw\"unsupported zulu format: \"+t}function Kr(t){return~~(Vr(t)/1e3)}function qr(t){return t.replace(/%/g,\"\")}function Jr(t){return t.replace(/(..)/g,\"%$1\")}function Wr(t){var e=\"malformed IPv6 address\";if(!t.match(/^[0-9A-Fa-f:]+$/))throw e;var r=(t=t.toLowerCase()).split(\":\").length-1;if(r<2)throw e;var n=\":\".repeat(7-r+2),i=(t=t.replace(\"::\",n)).split(\":\");if(8!=i.length)throw e;for(var o=0;o<8;o++)i[o]=(\"0000\"+i[o]).slice(-4);return i.join(\"\")}function zr(t){if(!t.match(/^[0-9A-Fa-f]{32}$/))throw\"malformed IPv6 address octet\";for(var e=(t=t.toLowerCase()).match(/.{1,4}/g),r=0;r<8;r++)e[r]=e[r].replace(/^0+/,\"\"),\"\"==e[r]&&(e[r]=\"0\");var n=(t=\":\"+e.join(\":\")+\":\").match(/:(0:){2,}/g);if(null===n)return t.slice(1,-1);var i=\"\";for(r=0;r<n.length;r++)n[r].length>i.length&&(i=n[r]);return(t=t.replace(i,\"::\")).slice(1,-1)}function Yr(t){var e=\"malformed hex value\";if(!t.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw e;if(8!=t.length)return 32==t.length?zr(t):t;try{return parseInt(t.substr(0,2),16)+\".\"+parseInt(t.substr(2,2),16)+\".\"+parseInt(t.substr(4,2),16)+\".\"+parseInt(t.substr(6,2),16)}catch(t){throw e}}function Gr(t){for(var e=encodeURIComponent(t),r=\"\",n=0;n<e.length;n++)\"%\"==e[n]?(r+=e.substr(n,3),n+=2):r=r+\"%\"+Pr(e[n]);return r}function Xr(t){return!(t.length%2!=0||!t.match(/^[0-9a-f]+$/)&&!t.match(/^[0-9A-F]+$/))}function $r(t){return t.length%2==1?\"0\"+t:t.substr(0,1)>\"7\"?\"00\"+t:t}Er.getLblen=function(t,e){if(\"8\"!=t.substr(e+2,1))return 1;var r=parseInt(t.substr(e+3,1));return 0==r?-1:0<r&&r<10?r+1:-2},Er.getL=function(t,e){var r=Er.getLblen(t,e);return r<1?\"\":t.substr(e+2,2*r)},Er.getVblen=function(t,e){var r;return\"\"==(r=Er.getL(t,e))?-1:(\"8\"===r.substr(0,1)?new F(r.substr(2),16):new F(r,16)).intValue()},Er.getVidx=function(t,e){var r=Er.getLblen(t,e);return r<0?r:e+2*(r+1)},Er.getV=function(t,e){var r=Er.getVidx(t,e),n=Er.getVblen(t,e);return t.substr(r,2*n)},Er.getTLV=function(t,e){return t.substr(e,2)+Er.getL(t,e)+Er.getV(t,e)},Er.getTLVblen=function(t,e){return 2+2*Er.getLblen(t,e)+2*Er.getVblen(t,e)},Er.getNextSiblingIdx=function(t,e){return Er.getVidx(t,e)+2*Er.getVblen(t,e)},Er.getChildIdx=function(t,e){var r,n,i,o=Er,s=[];r=o.getVidx(t,e),n=2*o.getVblen(t,e),\"03\"==t.substr(e,2)&&(r+=2,n-=2),i=0;for(var a=r;i<=n;){var u=o.getTLVblen(t,a);if((i+=u)<=n&&s.push(a),a+=u,i>=n)break}return s},Er.getNthChildIdx=function(t,e,r){return Er.getChildIdx(t,e)[r]},Er.getIdxbyList=function(t,e,r,n){var i,o,s=Er;return 0==r.length?void 0!==n&&t.substr(e,2)!==n?-1:e:(i=r.shift())>=(o=s.getChildIdx(t,e)).length?-1:s.getIdxbyList(t,o[i],r,n)},Er.getIdxbyListEx=function(t,e,r,n){var i,o,s=Er;if(0==r.length)return void 0!==n&&t.substr(e,2)!==n?-1:e;i=r.shift(),o=s.getChildIdx(t,e);for(var a=0,u=0;u<o.length;u++){var c=t.substr(o[u],2);if(\"number\"==typeof i&&!s.isContextTag(c)&&a==i||\"string\"==typeof i&&s.isContextTag(c,i))return s.getIdxbyListEx(t,o[u],r,n);s.isContextTag(c)||a++}return-1},Er.getTLVbyList=function(t,e,r,n){var i=Er,o=i.getIdxbyList(t,e,r,n);return-1==o||o>=t.length?null:i.getTLV(t,o)},Er.getTLVbyListEx=function(t,e,r,n){var i=Er,o=i.getIdxbyListEx(t,e,r,n);return-1==o?null:i.getTLV(t,o)},Er.getVbyList=function(t,e,r,n,i){var o,s,a=Er;return-1==(o=a.getIdxbyList(t,e,r,n))||o>=t.length?null:(s=a.getV(t,o),!0===i&&(s=s.substr(2)),s)},Er.getVbyListEx=function(t,e,r,n,i){var o,s,a=Er;return-1==(o=a.getIdxbyListEx(t,e,r,n))?null:(s=a.getV(t,o),\"03\"==t.substr(o,2)&&!1!==i&&(s=s.substr(2)),s)},Er.getInt=function(t,e,r){null==r&&(r=-1);try{var n=t.substr(e,2);if(\"02\"!=n&&\"03\"!=n)return r;var i=Er.getV(t,e);return\"02\"==n?parseInt(i,16):function o(t){try{var e=t.substr(0,2);if(\"00\"==e)return parseInt(t.substr(2),16);var r=parseInt(e,16),n=t.substr(2),i=parseInt(n,16).toString(2);return\"0\"==i&&(i=\"00000000\"),i=i.slice(0,0-r),parseInt(i,2)}catch(t){return-1}}(i)}catch(t){return r}},Er.getOID=function(t,e,r){null==r&&(r=null);try{return\"06\"!=t.substr(e,2)?r:function n(t){if(!Xr(t))return null;try{var e=[],r=t.substr(0,2),n=parseInt(r,16);e[0]=new String(Math.floor(n/40)),e[1]=new String(n%40);for(var i=t.substr(2),o=[],s=0;s<i.length/2;s++)o.push(parseInt(i.substr(2*s,2),16));var a=[],u=\"\";for(s=0;s<o.length;s++)128&o[s]?u+=Qr((127&o[s]).toString(2),7):(u+=Qr((127&o[s]).toString(2),7),a.push(new String(parseInt(u,2))),u=\"\");var c=e.join(\".\");return a.length>0&&(c=c+\".\"+a.join(\".\")),c}catch(t){return null}}(Er.getV(t,e))}catch(t){return r}},Er.getOIDName=function(t,e,r){null==r&&(r=null);try{var n=Er.getOID(t,e,r);if(n==r)return r;var i=br.asn1.x509.OID.oid2name(n);return\"\"==i?n:i}catch(t){return r}},Er.getString=function(t,e,r){null==r&&(r=null);try{return Nr(Er.getV(t,e))}catch(t){return r}},Er.hextooidstr=function(t){var e=function t(e,r){return e.length>=r?e:new Array(r-e.length+1).join(\"0\")+e},r=[],n=t.substr(0,2),i=parseInt(n,16);r[0]=new String(Math.floor(i/40)),r[1]=new String(i%40);for(var o=t.substr(2),s=[],a=0;a<o.length/2;a++)s.push(parseInt(o.substr(2*a,2),16));var u=[],c=\"\";for(a=0;a<s.length;a++)128&s[a]?c+=e((127&s[a]).toString(2),7):(c+=e((127&s[a]).toString(2),7),u.push(new String(parseInt(c,2))),c=\"\");var h=r.join(\".\");return u.length>0&&(h=h+\".\"+u.join(\".\")),h},Er.dump=function(t,e,r,n){var i=Er,o=i.getV,s=i.dump,a=i.getChildIdx,u=t;t instanceof br.asn1.ASN1Object&&(u=t.getEncodedHex());var c=function t(e,r){return e.length<=2*r?e:e.substr(0,r)+\"..(total \"+e.length/2+\"bytes)..\"+e.substr(e.length-r,r)};void 0===e&&(e={ommit_long_octet:32}),void 0===r&&(r=0),void 0===n&&(n=\"\");var h,l=e.ommit_long_octet;if(\"01\"==(h=u.substr(r,2)))return\"00\"==(f=o(u,r))?n+\"BOOLEAN FALSE\\n\":n+\"BOOLEAN TRUE\\n\";if(\"02\"==h)return n+\"INTEGER \"+c(f=o(u,r),l)+\"\\n\";if(\"03\"==h){var f=o(u,r);if(i.isASN1HEX(f.substr(2))){var g=n+\"BITSTRING, encapsulates\\n\";return g+=s(f.substr(2),e,0,n+\" \")}return n+\"BITSTRING \"+c(f,l)+\"\\n\"}if(\"04\"==h){f=o(u,r);if(i.isASN1HEX(f)){g=n+\"OCTETSTRING, encapsulates\\n\";return g+=s(f,e,0,n+\" \")}return n+\"OCTETSTRING \"+c(f,l)+\"\\n\"}if(\"05\"==h)return n+\"NULL\\n\";if(\"06\"==h){var d=o(u,r),p=br.asn1.ASN1Util.oidHexToInt(d),v=br.asn1.x509.OID.oid2name(p),y=p.replace(/\\./g,\" \");return\"\"!=v?n+\"ObjectIdentifier \"+v+\" (\"+y+\")\\n\":n+\"ObjectIdentifier (\"+y+\")\\n\"}if(\"0a\"==h)return n+\"ENUMERATED \"+parseInt(o(u,r))+\"\\n\";if(\"0c\"==h)return n+\"UTF8String '\"+Lr(o(u,r))+\"'\\n\";if(\"13\"==h)return n+\"PrintableString '\"+Lr(o(u,r))+\"'\\n\";if(\"14\"==h)return n+\"TeletexString '\"+Lr(o(u,r))+\"'\\n\";if(\"16\"==h)return n+\"IA5String '\"+Lr(o(u,r))+\"'\\n\";if(\"17\"==h)return n+\"UTCTime \"+Lr(o(u,r))+\"\\n\";if(\"18\"==h)return n+\"GeneralizedTime \"+Lr(o(u,r))+\"\\n\";if(\"1a\"==h)return n+\"VisualString '\"+Lr(o(u,r))+\"'\\n\";if(\"1e\"==h)return n+\"BMPString '\"+Lr(o(u,r))+\"'\\n\";if(\"30\"==h){if(\"3000\"==u.substr(r,4))return n+\"SEQUENCE {}\\n\";g=n+\"SEQUENCE\\n\";var m=e;if((2==(b=a(u,r)).length||3==b.length)&&\"06\"==u.substr(b[0],2)&&\"04\"==u.substr(b[b.length-1],2)){v=i.oidname(o(u,b[0]));var _=JSON.parse(JSON.stringify(e));_.x509ExtName=v,m=_}for(var S=0;S<b.length;S++)g+=s(u,m,b[S],n+\" \");return g}if(\"31\"==h){g=n+\"SET\\n\";var b=a(u,r);for(S=0;S<b.length;S++)g+=s(u,e,b[S],n+\" \");return g}if(0!=(128&(h=parseInt(h,16)))){var w=31&h;if(0!=(32&h)){for(g=n+\"[\"+w+\"]\\n\",b=a(u,r),S=0;S<b.length;S++)g+=s(u,e,b[S],n+\" \");return g}f=o(u,r);if(Er.isASN1HEX(f)){var g=n+\"[\"+w+\"]\\n\";return g+=s(f,e,0,n+\" \")}return(\"68747470\"==f.substr(0,8)||\"subjectAltName\"===e.x509ExtName&&2==w)&&(f=Lr(f)),g=n+\"[\"+w+\"] \"+f+\"\\n\"}return n+\"UNKNOWN(\"+h+\") \"+o(u,r)+\"\\n\"},Er.isContextTag=function(t,e){var r,n;t=t.toLowerCase();try{r=parseInt(t,16)}catch(t){return-1}if(void 0===e)return 128==(192&r);try{return null!=e.match(/^\\[[0-9]+\\]$/)&&(!((n=parseInt(e.substr(1,e.length-1),10))>31)&&(128==(192&r)&&(31&r)==n))}catch(t){return!1}},Er.isASN1HEX=function(t){var e=Er;if(t.length%2==1)return!1;var r=e.getVblen(t,0),n=t.substr(0,2),i=e.getL(t,0);return t.length-n.length-i.length==2*r},Er.checkStrictDER=function(t,e,r,n,i){var o=Er;if(void 0===r){if(\"string\"!=typeof t)throw new Error(\"not hex string\");if(t=t.toLowerCase(),!br.lang.String.isHex(t))throw new Error(\"not hex string\");r=t.length,i=(n=t.length/2)<128?1:Math.ceil(n.toString(16))+1}if(o.getL(t,e).length>2*i)throw new Error(\"L of TLV too long: idx=\"+e);var s=o.getVblen(t,e);if(s>n)throw new Error(\"value of L too long than hex: idx=\"+e);var a=o.getTLV(t,e),u=a.length-2-o.getL(t,e).length;if(u!==2*s)throw new Error(\"V string length and L's value not the same:\"+u+\"/\"+2*s);if(0===e&&t.length!=a.length)throw new Error(\"total length and TLV length unmatch:\"+t.length+\"!=\"+a.length);var c=t.substr(e,2);if(\"02\"===c){var h=o.getVidx(t,e);if(\"00\"==t.substr(h,2)&&t.charCodeAt(h+2)<56)throw new Error(\"not least zeros for DER INTEGER\")}if(32&parseInt(c,16)){for(var l=o.getVblen(t,e),f=0,g=o.getChildIdx(t,e),d=0;d<g.length;d++){f+=o.getTLV(t,g[d]).length,o.checkStrictDER(t,g[d],r,n,i)}if(2*l!=f)throw new Error(\"sum of children's TLV length and L unmatch: \"+2*l+\"!=\"+f)}},Er.oidname=function(t){var e=br.asn1;br.lang.String.isHex(t)&&(t=e.ASN1Util.oidHexToInt(t));var r=e.x509.OID.oid2name(t);return\"\"===r&&(r=t),r},void 0!==br&&br||(e.KJUR=br={}),void 0!==br.lang&&br.lang||(br.lang={}),br.lang.String=function(){},\"function\"==typeof t?(e.utf8tob64u=wr=function e(r){return Cr(t.from(r,\"utf8\").toString(\"base64\"))},e.b64utoutf8=Fr=function e(r){return t.from(Tr(r),\"base64\").toString(\"utf8\")}):(e.utf8tob64u=wr=function t(e){return Rr(qr(Gr(e)))},e.b64utoutf8=Fr=function t(e){return decodeURIComponent(Jr(Ir(e)))}),br.lang.String.isInteger=function(t){return!!t.match(/^[0-9]+$/)||!!t.match(/^-[0-9]+$/)},br.lang.String.isHex=function(t){return Xr(t)},br.lang.String.isBase64=function(t){return!(!(t=t.replace(/\\s+/g,\"\")).match(/^[0-9A-Za-z+\\/]+={0,3}$/)||t.length%4!=0)},br.lang.String.isBase64URL=function(t){return!t.match(/[+/=]/)&&(t=Tr(t),br.lang.String.isBase64(t))},br.lang.String.isIntegerArray=function(t){return!!(t=t.replace(/\\s+/g,\"\")).match(/^\\[[0-9,]+\\]$/)},br.lang.String.isPrintable=function(t){return null!==t.match(/^[0-9A-Za-z '()+,-./:=?]*$/)},br.lang.String.isIA5=function(t){return null!==t.match(/^[\\x20-\\x21\\x23-\\x7f]*$/)},br.lang.String.isMail=function(t){return null!==t.match(/^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}\\.[A-Za-z0-9]{1,}$/)};var Qr=function t(e,r,n){return null==n&&(n=\"0\"),e.length>=r?e:new Array(r-e.length+1).join(n)+e};void 0!==br&&br||(e.KJUR=br={}),void 0!==br.crypto&&br.crypto||(br.crypto={}),br.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:\"3021300906052b0e03021a05000414\",sha224:\"302d300d06096086480165030402040500041c\",sha256:\"3031300d060960864801650304020105000420\",sha384:\"3041300d060960864801650304020205000430\",sha512:\"3051300d060960864801650304020305000440\",md2:\"3020300c06082a864886f70d020205000410\",md5:\"3020300c06082a864886f70d020505000410\",ripemd160:\"3021300906052b2403020105000414\"},this.DEFAULTPROVIDER={md5:\"cryptojs\",sha1:\"cryptojs\",sha224:\"cryptojs\",sha256:\"cryptojs\",sha384:\"cryptojs\",sha512:\"cryptojs\",ripemd160:\"cryptojs\",hmacmd5:\"cryptojs\",hmacsha1:\"cryptojs\",hmacsha224:\"cryptojs\",hmacsha256:\"cryptojs\",hmacsha384:\"cryptojs\",hmacsha512:\"cryptojs\",hmacripemd160:\"cryptojs\",MD5withRSA:\"cryptojs/jsrsa\",SHA1withRSA:\"cryptojs/jsrsa\",SHA224withRSA:\"cryptojs/jsrsa\",SHA256withRSA:\"cryptojs/jsrsa\",SHA384withRSA:\"cryptojs/jsrsa\",SHA512withRSA:\"cryptojs/jsrsa\",RIPEMD160withRSA:\"cryptojs/jsrsa\",MD5withECDSA:\"cryptojs/jsrsa\",SHA1withECDSA:\"cryptojs/jsrsa\",SHA224withECDSA:\"cryptojs/jsrsa\",SHA256withECDSA:\"cryptojs/jsrsa\",SHA384withECDSA:\"cryptojs/jsrsa\",SHA512withECDSA:\"cryptojs/jsrsa\",RIPEMD160withECDSA:\"cryptojs/jsrsa\",SHA1withDSA:\"cryptojs/jsrsa\",SHA224withDSA:\"cryptojs/jsrsa\",SHA256withDSA:\"cryptojs/jsrsa\",MD5withRSAandMGF1:\"cryptojs/jsrsa\",SHAwithRSAandMGF1:\"cryptojs/jsrsa\",SHA1withRSAandMGF1:\"cryptojs/jsrsa\",SHA224withRSAandMGF1:\"cryptojs/jsrsa\",SHA256withRSAandMGF1:\"cryptojs/jsrsa\",SHA384withRSAandMGF1:\"cryptojs/jsrsa\",SHA512withRSAandMGF1:\"cryptojs/jsrsa\",RIPEMD160withRSAandMGF1:\"cryptojs/jsrsa\"},this.CRYPTOJSMESSAGEDIGESTNAME={md5:y.algo.MD5,sha1:y.algo.SHA1,sha224:y.algo.SHA224,sha256:y.algo.SHA256,sha384:y.algo.SHA384,sha512:y.algo.SHA512,ripemd160:y.algo.RIPEMD160},this.getDigestInfoHex=function(t,e){if(void 0===this.DIGESTINFOHEAD[e])throw\"alg not supported in Util.DIGESTINFOHEAD: \"+e;return this.DIGESTINFOHEAD[e]+t},this.getPaddedDigestInfoHex=function(t,e,r){var n=this.getDigestInfoHex(t,e),i=r/4;if(n.length+22>i)throw\"key is too short for SigAlg: keylen=\"+r+\",\"+e;for(var o=\"0001\",s=\"00\"+n,a=\"\",u=i-o.length-s.length,c=0;c<u;c+=2)a+=\"ff\";return o+a+s},this.hashString=function(t,e){return new br.crypto.MessageDigest({alg:e}).digestString(t)},this.hashHex=function(t,e){return new br.crypto.MessageDigest({alg:e}).digestHex(t)},this.sha1=function(t){return this.hashString(t,\"sha1\")},this.sha256=function(t){return this.hashString(t,\"sha256\")},this.sha256Hex=function(t){return this.hashHex(t,\"sha256\")},this.sha512=function(t){return this.hashString(t,\"sha512\")},this.sha512Hex=function(t){return this.hashHex(t,\"sha512\")},this.isKey=function(t){return t instanceof He||t instanceof br.crypto.DSA||t instanceof br.crypto.ECDSA}},br.crypto.Util.md5=function(t){return new br.crypto.MessageDigest({alg:\"md5\",prov:\"cryptojs\"}).digestString(t)},br.crypto.Util.ripemd160=function(t){return new br.crypto.MessageDigest({alg:\"ripemd160\",prov:\"cryptojs\"}).digestString(t)},br.crypto.Util.SECURERANDOMGEN=new Oe,br.crypto.Util.getRandomHexOfNbytes=function(t){var e=new Array(t);return br.crypto.Util.SECURERANDOMGEN.nextBytes(e),kr(e)},br.crypto.Util.getRandomBigIntegerOfNbytes=function(t){return new F(br.crypto.Util.getRandomHexOfNbytes(t),16)},br.crypto.Util.getRandomHexOfNbits=function(t){var e=t%8,r=new Array((t-e)/8+1);return br.crypto.Util.SECURERANDOMGEN.nextBytes(r),r[0]=(255<<e&255^255)&r[0],kr(r)},br.crypto.Util.getRandomBigIntegerOfNbits=function(t){return new F(br.crypto.Util.getRandomHexOfNbits(t),16)},br.crypto.Util.getRandomBigIntegerZeroToMax=function(t){for(var e=t.bitLength();;){var r=br.crypto.Util.getRandomBigIntegerOfNbits(e);if(-1!=t.compareTo(r))return r}},br.crypto.Util.getRandomBigIntegerMinToMax=function(t,e){var r=t.compareTo(e);if(1==r)throw\"biMin is greater than biMax\";if(0==r)return t;var n=e.subtract(t);return br.crypto.Util.getRandomBigIntegerZeroToMax(n).add(t)},br.crypto.MessageDigest=function(t){this.setAlgAndProvider=function(t,e){if(null!==(t=br.crypto.MessageDigest.getCanonicalAlgName(t))&&void 0===e&&(e=br.crypto.Util.DEFAULTPROVIDER[t]),-1!=\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(t)&&\"cryptojs\"==e){try{this.md=br.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[t].create()}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+t+\"/\"+e}this.updateString=function(t){this.md.update(t)},this.updateHex=function(t){var e=y.enc.Hex.parse(t);this.md.update(e)},this.digest=function(){return this.md.finalize().toString(y.enc.Hex)},this.digestString=function(t){return this.updateString(t),this.digest()},this.digestHex=function(t){return this.updateHex(t),this.digest()}}if(-1!=\":sha256:\".indexOf(t)&&\"sjcl\"==e){try{this.md=new sjcl.hash.sha256}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+t+\"/\"+e}this.updateString=function(t){this.md.update(t)},this.updateHex=function(t){var e=sjcl.codec.hex.toBits(t);this.md.update(e)},this.digest=function(){var t=this.md.finalize();return sjcl.codec.hex.fromBits(t)},this.digestString=function(t){return this.updateString(t),this.digest()},this.digestHex=function(t){return this.updateHex(t),this.digest()}}},this.updateString=function(t){throw\"updateString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.updateHex=function(t){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.digest=function(){throw\"digest() not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.digestString=function(t){throw\"digestString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},this.digestHex=function(t){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName},void 0!==t&&void 0!==t.alg&&(this.algName=t.alg,void 0===t.prov&&(this.provName=br.crypto.Util.DEFAULTPROVIDER[this.algName]),this.setAlgAndProvider(this.algName,this.provName))},br.crypto.MessageDigest.getCanonicalAlgName=function(t){return\"string\"==typeof t&&(t=(t=t.toLowerCase()).replace(/-/,\"\")),t},br.crypto.MessageDigest.getHashLength=function(t){var e=br.crypto.MessageDigest,r=e.getCanonicalAlgName(t);if(void 0===e.HASHLENGTH[r])throw\"not supported algorithm: \"+t;return e.HASHLENGTH[r]},br.crypto.MessageDigest.HASHLENGTH={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,ripemd160:20},br.crypto.Mac=function(t){this.setAlgAndProvider=function(t,e){if(null==(t=t.toLowerCase())&&(t=\"hmacsha1\"),\"hmac\"!=(t=t.toLowerCase()).substr(0,4))throw\"setAlgAndProvider unsupported HMAC alg: \"+t;void 0===e&&(e=br.crypto.Util.DEFAULTPROVIDER[t]),this.algProv=t+\"/\"+e;var r=t.substr(4);if(-1!=\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(r)&&\"cryptojs\"==e){try{var n=br.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[r];this.mac=y.algo.HMAC.create(n,this.pass)}catch(t){throw\"setAlgAndProvider hash alg set fail hashAlg=\"+r+\"/\"+t}this.updateString=function(t){this.mac.update(t)},this.updateHex=function(t){var e=y.enc.Hex.parse(t);this.mac.update(e)},this.doFinal=function(){return this.mac.finalize().toString(y.enc.Hex)},this.doFinalString=function(t){return this.updateString(t),this.doFinal()},this.doFinalHex=function(t){return this.updateHex(t),this.doFinal()}}},this.updateString=function(t){throw\"updateString(str) not supported for this alg/prov: \"+this.algProv},this.updateHex=function(t){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algProv},this.doFinal=function(){throw\"digest() not supported for this alg/prov: \"+this.algProv},this.doFinalString=function(t){throw\"digestString(str) not supported for this alg/prov: \"+this.algProv},this.doFinalHex=function(t){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algProv},this.setPassword=function(t){if(\"string\"==typeof t){var e=t;return t.length%2!=1&&t.match(/^[0-9A-Fa-f]+$/)||(e=Ur(t)),void(this.pass=y.enc.Hex.parse(e))}if(\"object\"!=(void 0===t?\"undefined\":r(t)))throw\"KJUR.crypto.Mac unsupported password type: \"+t;e=null;if(void 0!==t.hex){if(t.hex.length%2!=0||!t.hex.match(/^[0-9A-Fa-f]+$/))throw\"Mac: wrong hex password: \"+t.hex;e=t.hex}if(void 0!==t.utf8&&(e=Dr(t.utf8)),void 0!==t.rstr&&(e=Ur(t.rstr)),void 0!==t.b64&&(e=b(t.b64)),void 0!==t.b64u&&(e=Ir(t.b64u)),null==e)throw\"KJUR.crypto.Mac unsupported password type: \"+t;this.pass=y.enc.Hex.parse(e)},void 0!==t&&(void 0!==t.pass&&this.setPassword(t.pass),void 0!==t.alg&&(this.algName=t.alg,void 0===t.prov&&(this.provName=br.crypto.Util.DEFAULTPROVIDER[this.algName]),this.setAlgAndProvider(this.algName,this.provName)))},br.crypto.Signature=function(t){var e=null;if(this._setAlgNames=function(){var t=this.algName.match(/^(.+)with(.+)$/);t&&(this.mdAlgName=t[1].toLowerCase(),this.pubkeyAlgName=t[2].toLowerCase(),\"rsaandmgf1\"==this.pubkeyAlgName&&\"sha\"==this.mdAlgName&&(this.mdAlgName=\"sha1\"))},this._zeroPaddingOfSignature=function(t,e){for(var r=\"\",n=e/4-t.length,i=0;i<n;i++)r+=\"0\";return r+t},this.setAlgAndProvider=function(t,e){if(this._setAlgNames(),\"cryptojs/jsrsa\"!=e)throw new Error(\"provider not supported: \"+e);if(-1!=\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(this.mdAlgName)){try{this.md=new br.crypto.MessageDigest({alg:this.mdAlgName})}catch(t){throw new Error(\"setAlgAndProvider hash alg set fail alg=\"+this.mdAlgName+\"/\"+t)}this.init=function(t,e){var r=null;try{r=void 0===e?Zr.getKey(t):Zr.getKey(t,e)}catch(t){throw\"init failed:\"+t}if(!0===r.isPrivate)this.prvKey=r,this.state=\"SIGN\";else{if(!0!==r.isPublic)throw\"init failed.:\"+r;this.pubKey=r,this.state=\"VERIFY\"}},this.updateString=function(t){this.md.updateString(t)},this.updateHex=function(t){this.md.updateHex(t)},this.sign=function(){if(this.sHashHex=this.md.digest(),void 0===this.prvKey&&void 0!==this.ecprvhex&&void 0!==this.eccurvename&&void 0!==br.crypto.ECDSA&&(this.prvKey=new br.crypto.ECDSA({curve:this.eccurvename,prv:this.ecprvhex})),this.prvKey instanceof He&&\"rsaandmgf1\"===this.pubkeyAlgName)this.hSign=this.prvKey.signWithMessageHashPSS(this.sHashHex,this.mdAlgName,this.pssSaltLen);else if(this.prvKey instanceof He&&\"rsa\"===this.pubkeyAlgName)this.hSign=this.prvKey.signWithMessageHash(this.sHashHex,this.mdAlgName);else if(this.prvKey instanceof br.crypto.ECDSA)this.hSign=this.prvKey.signWithMessageHash(this.sHashHex);else{if(!(this.prvKey instanceof br.crypto.DSA))throw\"Signature: unsupported private key alg: \"+this.pubkeyAlgName;this.hSign=this.prvKey.signWithMessageHash(this.sHashHex)}return this.hSign},this.signString=function(t){return this.updateString(t),this.sign()},this.signHex=function(t){return this.updateHex(t),this.sign()},this.verify=function(t){if(this.sHashHex=this.md.digest(),void 0===this.pubKey&&void 0!==this.ecpubhex&&void 0!==this.eccurvename&&void 0!==br.crypto.ECDSA&&(this.pubKey=new br.crypto.ECDSA({curve:this.eccurvename,pub:this.ecpubhex})),this.pubKey instanceof He&&\"rsaandmgf1\"===this.pubkeyAlgName)return this.pubKey.verifyWithMessageHashPSS(this.sHashHex,t,this.mdAlgName,this.pssSaltLen);if(this.pubKey instanceof He&&\"rsa\"===this.pubkeyAlgName)return this.pubKey.verifyWithMessageHash(this.sHashHex,t);if(void 0!==br.crypto.ECDSA&&this.pubKey instanceof br.crypto.ECDSA)return this.pubKey.verifyWithMessageHash(this.sHashHex,t);if(void 0!==br.crypto.DSA&&this.pubKey instanceof br.crypto.DSA)return this.pubKey.verifyWithMessageHash(this.sHashHex,t);throw\"Signature: unsupported public key alg: \"+this.pubkeyAlgName}}},this.init=function(t,e){throw\"init(key, pass) not supported for this alg:prov=\"+this.algProvName},this.updateString=function(t){throw\"updateString(str) not supported for this alg:prov=\"+this.algProvName},this.updateHex=function(t){throw\"updateHex(hex) not supported for this alg:prov=\"+this.algProvName},this.sign=function(){throw\"sign() not supported for this alg:prov=\"+this.algProvName},this.signString=function(t){throw\"digestString(str) not supported for this alg:prov=\"+this.algProvName},this.signHex=function(t){throw\"digestHex(hex) not supported for this alg:prov=\"+this.algProvName},this.verify=function(t){throw\"verify(hSigVal) not supported for this alg:prov=\"+this.algProvName},this.initParams=t,void 0!==t&&(void 0!==t.alg&&(this.algName=t.alg,void 0===t.prov?this.provName=br.crypto.Util.DEFAULTPROVIDER[this.algName]:this.provName=t.prov,this.algProvName=this.algName+\":\"+this.provName,this.setAlgAndProvider(this.algName,this.provName),this._setAlgNames()),void 0!==t.psssaltlen&&(this.pssSaltLen=t.psssaltlen),void 0!==t.prvkeypem)){if(void 0!==t.prvkeypas)throw\"both prvkeypem and prvkeypas parameters not supported\";try{e=Zr.getKey(t.prvkeypem);this.init(e)}catch(t){throw\"fatal error to load pem private key: \"+t}}},br.crypto.Cipher=function(t){},br.crypto.Cipher.encrypt=function(t,e,r){if(e instanceof He&&e.isPublic){var n=br.crypto.Cipher.getAlgByKeyAndName(e,r);if(\"RSA\"===n)return e.encrypt(t);if(\"RSAOAEP\"===n)return e.encryptOAEP(t,\"sha1\");var i=n.match(/^RSAOAEP(\\d+)$/);if(null!==i)return e.encryptOAEP(t,\"sha\"+i[1]);throw\"Cipher.encrypt: unsupported algorithm for RSAKey: \"+r}throw\"Cipher.encrypt: unsupported key or algorithm\"},br.crypto.Cipher.decrypt=function(t,e,r){if(e instanceof He&&e.isPrivate){var n=br.crypto.Cipher.getAlgByKeyAndName(e,r);if(\"RSA\"===n)return e.decrypt(t);if(\"RSAOAEP\"===n)return e.decryptOAEP(t,\"sha1\");var i=n.match(/^RSAOAEP(\\d+)$/);if(null!==i)return e.decryptOAEP(t,\"sha\"+i[1]);throw\"Cipher.decrypt: unsupported algorithm for RSAKey: \"+r}throw\"Cipher.decrypt: unsupported key or algorithm\"},br.crypto.Cipher.getAlgByKeyAndName=function(t,e){if(t instanceof He){if(-1!=\":RSA:RSAOAEP:RSAOAEP224:RSAOAEP256:RSAOAEP384:RSAOAEP512:\".indexOf(e))return e;if(null==e)return\"RSA\";throw\"getAlgByKeyAndName: not supported algorithm name for RSAKey: \"+e}throw\"getAlgByKeyAndName: not supported algorithm name: \"+e},br.crypto.OID=new function(){this.oidhex2name={\"2a864886f70d010101\":\"rsaEncryption\",\"2a8648ce3d0201\":\"ecPublicKey\",\"2a8648ce380401\":\"dsa\",\"2a8648ce3d030107\":\"secp256r1\",\"2b8104001f\":\"secp192k1\",\"2b81040021\":\"secp224r1\",\"2b8104000a\":\"secp256k1\",\"2b81040023\":\"secp521r1\",\"2b81040022\":\"secp384r1\",\"2a8648ce380403\":\"SHA1withDSA\",\"608648016503040301\":\"SHA224withDSA\",\"608648016503040302\":\"SHA256withDSA\"}},void 0!==br&&br||(e.KJUR=br={}),void 0!==br.crypto&&br.crypto||(br.crypto={}),br.crypto.ECDSA=function(t){var e=Error,n=F,i=Ke,o=br.crypto.ECDSA,s=br.crypto.ECParameterDB,a=o.getName,u=Er,c=u.getVbyListEx,h=u.isASN1HEX,l=new Oe;this.type=\"EC\",this.isPrivate=!1,this.isPublic=!1,this.getBigRandom=function(t){return new n(t.bitLength(),l).mod(t.subtract(n.ONE)).add(n.ONE)},this.setNamedCurve=function(t){this.ecparams=s.getByName(t),this.prvKeyHex=null,this.pubKeyHex=null,this.curveName=t},this.setPrivateKeyHex=function(t){this.isPrivate=!0,this.prvKeyHex=t},this.setPublicKeyHex=function(t){this.isPublic=!0,this.pubKeyHex=t},this.getPublicKeyXYHex=function(){var t=this.pubKeyHex;if(\"04\"!==t.substr(0,2))throw\"this method supports uncompressed format(04) only\";var e=this.ecparams.keylen/4;if(t.length!==2+2*e)throw\"malformed public key hex length\";var r={};return r.x=t.substr(2,e),r.y=t.substr(2+e),r},this.getShortNISTPCurveName=function(){var t=this.curveName;return\"secp256r1\"===t||\"NIST P-256\"===t||\"P-256\"===t||\"prime256v1\"===t?\"P-256\":\"secp384r1\"===t||\"NIST P-384\"===t||\"P-384\"===t?\"P-384\":null},this.generateKeyPairHex=function(){var t=this.ecparams.n,e=this.getBigRandom(t),r=this.ecparams.G.multiply(e),n=r.getX().toBigInteger(),i=r.getY().toBigInteger(),o=this.ecparams.keylen/4,s=(\"0000000000\"+e.toString(16)).slice(-o),a=\"04\"+(\"0000000000\"+n.toString(16)).slice(-o)+(\"0000000000\"+i.toString(16)).slice(-o);return this.setPrivateKeyHex(s),this.setPublicKeyHex(a),{ecprvhex:s,ecpubhex:a}},this.signWithMessageHash=function(t){return this.signHex(t,this.prvKeyHex)},this.signHex=function(t,e){var r=new n(e,16),i=this.ecparams.n,s=new n(t.substring(0,this.ecparams.keylen/4),16);do{var a=this.getBigRandom(i),u=this.ecparams.G.multiply(a).getX().toBigInteger().mod(i)}while(u.compareTo(n.ZERO)<=0);var c=a.modInverse(i).multiply(s.add(r.multiply(u))).mod(i);return o.biRSSigToASN1Sig(u,c)},this.sign=function(t,e){var r=e,i=this.ecparams.n,o=n.fromByteArrayUnsigned(t);do{var s=this.getBigRandom(i),a=this.ecparams.G.multiply(s).getX().toBigInteger().mod(i)}while(a.compareTo(F.ZERO)<=0);var u=s.modInverse(i).multiply(o.add(r.multiply(a))).mod(i);return this.serializeSig(a,u)},this.verifyWithMessageHash=function(t,e){return this.verifyHex(t,e,this.pubKeyHex)},this.verifyHex=function(t,e,r){try{var s,a,u=o.parseSigHex(e);s=u.r,a=u.s;var c=i.decodeFromHex(this.ecparams.curve,r),h=new n(t.substring(0,this.ecparams.keylen/4),16);return this.verifyRaw(h,s,a,c)}catch(t){return!1}},this.verify=function(t,e,o){var s,a,u;if(Bitcoin.Util.isArray(e)){var c=this.parseSig(e);s=c.r,a=c.s}else{if(\"object\"!==(void 0===e?\"undefined\":r(e))||!e.r||!e.s)throw\"Invalid value for signature\";s=e.r,a=e.s}if(o instanceof Ke)u=o;else{if(!Bitcoin.Util.isArray(o))throw\"Invalid format for pubkey value, must be byte array or ECPointFp\";u=i.decodeFrom(this.ecparams.curve,o)}var h=n.fromByteArrayUnsigned(t);return this.verifyRaw(h,s,a,u)},this.verifyRaw=function(t,e,r,i){var o=this.ecparams.n,s=this.ecparams.G;if(e.compareTo(n.ONE)<0||e.compareTo(o)>=0)return!1;if(r.compareTo(n.ONE)<0||r.compareTo(o)>=0)return!1;var a=r.modInverse(o),u=t.multiply(a).mod(o),c=e.multiply(a).mod(o);return s.multiply(u).add(i.multiply(c)).getX().toBigInteger().mod(o).equals(e)},this.serializeSig=function(t,e){var r=t.toByteArraySigned(),n=e.toByteArraySigned(),i=[];return i.push(2),i.push(r.length),(i=i.concat(r)).push(2),i.push(n.length),(i=i.concat(n)).unshift(i.length),i.unshift(48),i},this.parseSig=function(t){var e;if(48!=t[0])throw new Error(\"Signature not a valid DERSequence\");if(2!=t[e=2])throw new Error(\"First element in signature must be a DERInteger\");var r=t.slice(e+2,e+2+t[e+1]);if(2!=t[e+=2+t[e+1]])throw new Error(\"Second element in signature must be a DERInteger\");var i=t.slice(e+2,e+2+t[e+1]);return e+=2+t[e+1],{r:n.fromByteArrayUnsigned(r),s:n.fromByteArrayUnsigned(i)}},this.parseSigCompact=function(t){if(65!==t.length)throw\"Signature has the wrong length\";var e=t[0]-27;if(e<0||e>7)throw\"Invalid signature type\";var r=this.ecparams.n;return{r:n.fromByteArrayUnsigned(t.slice(1,33)).mod(r),s:n.fromByteArrayUnsigned(t.slice(33,65)).mod(r),i:e}},this.readPKCS5PrvKeyHex=function(t){if(!1===h(t))throw new Error(\"not ASN.1 hex string\");var e,r,n;try{e=c(t,0,[\"[0]\",0],\"06\"),r=c(t,0,[1],\"04\");try{n=c(t,0,[\"[1]\",0],\"03\")}catch(t){}}catch(t){throw new Error(\"malformed PKCS#1/5 plain ECC private key\")}if(this.curveName=a(e),void 0===this.curveName)throw\"unsupported curve name\";this.setNamedCurve(this.curveName),this.setPublicKeyHex(n),this.setPrivateKeyHex(r),this.isPublic=!1},this.readPKCS8PrvKeyHex=function(t){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var r,n,i;try{c(t,0,[1,0],\"06\"),r=c(t,0,[1,1],\"06\"),n=c(t,0,[2,0,1],\"04\");try{i=c(t,0,[2,0,\"[1]\",0],\"03\")}catch(t){}}catch(t){throw new e(\"malformed PKCS#8 plain ECC private key\")}if(this.curveName=a(r),void 0===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i),this.setPrivateKeyHex(n),this.isPublic=!1},this.readPKCS8PubKeyHex=function(t){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var r,n;try{c(t,0,[0,0],\"06\"),r=c(t,0,[0,1],\"06\"),n=c(t,0,[1],\"03\")}catch(t){throw new e(\"malformed PKCS#8 ECC public key\")}if(this.curveName=a(r),null===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(n)},this.readCertPubKeyHex=function(t,r){if(!1===h(t))throw new e(\"not ASN.1 hex string\");var n,i;try{n=c(t,0,[0,5,0,1],\"06\"),i=c(t,0,[0,5,1],\"03\")}catch(t){throw new e(\"malformed X.509 certificate ECC public key\")}if(this.curveName=a(n),null===this.curveName)throw new e(\"unsupported curve name\");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i)},void 0!==t&&void 0!==t.curve&&(this.curveName=t.curve),void 0===this.curveName&&(this.curveName=\"secp256r1\"),this.setNamedCurve(this.curveName),void 0!==t&&(void 0!==t.prv&&this.setPrivateKeyHex(t.prv),void 0!==t.pub&&this.setPublicKeyHex(t.pub))},br.crypto.ECDSA.parseSigHex=function(t){var e=br.crypto.ECDSA.parseSigHexInHexRS(t);return{r:new F(e.r,16),s:new F(e.s,16)}},br.crypto.ECDSA.parseSigHexInHexRS=function(t){var e=Er,r=e.getChildIdx,n=e.getV;if(e.checkStrictDER(t,0),\"30\"!=t.substr(0,2))throw new Error(\"signature is not a ASN.1 sequence\");var i=r(t,0);if(2!=i.length)throw new Error(\"signature shall have two elements\");var o=i[0],s=i[1];if(\"02\"!=t.substr(o,2))throw new Error(\"1st item not ASN.1 integer\");if(\"02\"!=t.substr(s,2))throw new Error(\"2nd item not ASN.1 integer\");return{r:n(t,o),s:n(t,s)}},br.crypto.ECDSA.asn1SigToConcatSig=function(t){var e=br.crypto.ECDSA.parseSigHexInHexRS(t),r=e.r,n=e.s;if(\"00\"==r.substr(0,2)&&r.length%32==2&&(r=r.substr(2)),\"00\"==n.substr(0,2)&&n.length%32==2&&(n=n.substr(2)),r.length%32==30&&(r=\"00\"+r),n.length%32==30&&(n=\"00\"+n),r.length%32!=0)throw\"unknown ECDSA sig r length error\";if(n.length%32!=0)throw\"unknown ECDSA sig s length error\";return r+n},br.crypto.ECDSA.concatSigToASN1Sig=function(t){if(t.length/2*8%128!=0)throw\"unknown ECDSA concatinated r-s sig length error\";var e=t.substr(0,t.length/2),r=t.substr(t.length/2);return br.crypto.ECDSA.hexRSSigToASN1Sig(e,r)},br.crypto.ECDSA.hexRSSigToASN1Sig=function(t,e){var r=new F(t,16),n=new F(e,16);return br.crypto.ECDSA.biRSSigToASN1Sig(r,n)},br.crypto.ECDSA.biRSSigToASN1Sig=function(t,e){var r=br.asn1,n=new r.DERInteger({bigint:t}),i=new r.DERInteger({bigint:e});return new r.DERSequence({array:[n,i]}).getEncodedHex()},br.crypto.ECDSA.getName=function(t){return\"2b8104001f\"===t?\"secp192k1\":\"2a8648ce3d030107\"===t?\"secp256r1\":\"2b8104000a\"===t?\"secp256k1\":\"2b81040021\"===t?\"secp224r1\":\"2b81040022\"===t?\"secp384r1\":-1!==\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(t)?\"secp256r1\":-1!==\"|secp256k1|\".indexOf(t)?\"secp256k1\":-1!==\"|secp224r1|NIST P-224|P-224|\".indexOf(t)?\"secp224r1\":-1!==\"|secp384r1|NIST P-384|P-384|\".indexOf(t)?\"secp384r1\":null},void 0!==br&&br||(e.KJUR=br={}),void 0!==br.crypto&&br.crypto||(br.crypto={}),br.crypto.ECParameterDB=new function(){var t={},e={};function r(t){return new F(t,16)}this.getByName=function(r){var n=r;if(void 0!==e[n]&&(n=e[r]),void 0!==t[n])return t[n];throw\"unregistered EC curve name: \"+n},this.regist=function(n,i,o,s,a,u,c,h,l,f,g,d){t[n]={};var p=r(o),v=r(s),y=r(a),m=r(u),_=r(c),S=new qe(p,v,y),b=S.decodePointHex(\"04\"+h+l);t[n].name=n,t[n].keylen=i,t[n].curve=S,t[n].G=b,t[n].n=m,t[n].h=_,t[n].oid=g,t[n].info=d;for(var w=0;w<f.length;w++)e[f[w]]=n}},br.crypto.ECParameterDB.regist(\"secp128r1\",128,\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\",\"E87579C11079F43DD824993C2CEE5ED3\",\"FFFFFFFE0000000075A30D1B9038A115\",\"1\",\"161FF7528B899B2D0C28607CA52C5B86\",\"CF5AC8395BAFEB13C02DA292DDED7A83\",[],\"\",\"secp128r1 : SECG curve over a 128 bit prime field\"),br.crypto.ECParameterDB.regist(\"secp160k1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\",\"0\",\"7\",\"0100000000000000000001B8FA16DFAB9ACA16B6B3\",\"1\",\"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\",\"938CF935318FDCED6BC28286531733C3F03C4FEE\",[],\"\",\"secp160k1 : SECG curve over a 160 bit prime field\"),br.crypto.ECParameterDB.regist(\"secp160r1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\",\"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\",\"0100000000000000000001F4C8F927AED3CA752257\",\"1\",\"4A96B5688EF573284664698968C38BB913CBFC82\",\"23A628553168947D59DCC912042351377AC5FB32\",[],\"\",\"secp160r1 : SECG curve over a 160 bit prime field\"),br.crypto.ECParameterDB.regist(\"secp192k1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\",\"0\",\"3\",\"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\",\"1\",\"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\",\"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\",[]),br.crypto.ECParameterDB.regist(\"secp192r1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\",\"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\",\"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\",\"1\",\"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\",\"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\",[]),br.crypto.ECParameterDB.regist(\"secp224r1\",224,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\",\"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\",\"1\",\"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\",\"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\",[]),br.crypto.ECParameterDB.regist(\"secp256k1\",256,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F\",\"0\",\"7\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\",\"1\",\"79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798\",\"483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8\",[]),br.crypto.ECParameterDB.regist(\"secp256r1\",256,\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\",\"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\",\"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\",\"1\",\"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\",\"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\",[\"NIST P-256\",\"P-256\",\"prime256v1\"]),br.crypto.ECParameterDB.regist(\"secp384r1\",384,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC\",\"B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973\",\"1\",\"AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7\",\"3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f\",[\"NIST P-384\",\"P-384\"]),br.crypto.ECParameterDB.regist(\"secp521r1\",521,\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC\",\"051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409\",\"1\",\"C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66\",\"011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650\",[\"NIST P-521\",\"P-521\"]);var Zr=function(){var t=function t(r,n,i){return e(y.AES,r,n,i)},e=function t(e,r,n,i){var o=y.enc.Hex.parse(r),s=y.enc.Hex.parse(n),a=y.enc.Hex.parse(i),u={};u.key=s,u.iv=a,u.ciphertext=o;var c=e.decrypt(u,s,{iv:a});return y.enc.Hex.stringify(c)},r=function t(e,r,i){return n(y.AES,e,r,i)},n=function t(e,r,n,i){var o=y.enc.Hex.parse(r),s=y.enc.Hex.parse(n),a=y.enc.Hex.parse(i),u=e.encrypt(o,s,{iv:a}),c=y.enc.Hex.parse(u.toString());return y.enc.Base64.stringify(c)},i={\"AES-256-CBC\":{proc:t,eproc:r,keylen:32,ivlen:16},\"AES-192-CBC\":{proc:t,eproc:r,keylen:24,ivlen:16},\"AES-128-CBC\":{proc:t,eproc:r,keylen:16,ivlen:16},\"DES-EDE3-CBC\":{proc:function t(r,n,i){return e(y.TripleDES,r,n,i)},eproc:function t(e,r,i){return n(y.TripleDES,e,r,i)},keylen:24,ivlen:8},\"DES-CBC\":{proc:function t(r,n,i){return e(y.DES,r,n,i)},eproc:function t(e,r,i){return n(y.DES,e,r,i)},keylen:8,ivlen:8}},o=function t(e){var r={},n=e.match(new RegExp(\"DEK-Info: ([^,]+),([0-9A-Fa-f]+)\",\"m\"));n&&(r.cipher=n[1],r.ivsalt=n[2]);var i=e.match(new RegExp(\"-----BEGIN ([A-Z]+) PRIVATE KEY-----\"));i&&(r.type=i[1]);var o=-1,s=0;-1!=e.indexOf(\"\\r\\n\\r\\n\")&&(o=e.indexOf(\"\\r\\n\\r\\n\"),s=2),-1!=e.indexOf(\"\\n\\n\")&&(o=e.indexOf(\"\\n\\n\"),s=1);var a=e.indexOf(\"-----END\");if(-1!=o&&-1!=a){var u=e.substring(o+2*s,a-s);u=u.replace(/\\s+/g,\"\"),r.data=u}return r},s=function t(e,r,n){for(var o=n.substring(0,16),s=y.enc.Hex.parse(o),a=y.enc.Utf8.parse(r),u=i[e].keylen+i[e].ivlen,c=\"\",h=null;;){var l=y.algo.MD5.create();if(null!=h&&l.update(h),l.update(a),l.update(s),h=l.finalize(),(c+=y.enc.Hex.stringify(h)).length>=2*u)break}var f={};return f.keyhex=c.substr(0,2*i[e].keylen),f.ivhex=c.substr(2*i[e].keylen,2*i[e].ivlen),f},a=function t(e,r,n,o){var s=y.enc.Base64.parse(e),a=y.enc.Hex.stringify(s);return(0,i[r].proc)(a,n,o)};return{version:\"1.0.0\",parsePKCS5PEM:function t(e){return o(e)},getKeyAndUnusedIvByPasscodeAndIvsalt:function t(e,r,n){return s(e,r,n)},decryptKeyB64:function t(e,r,n,i){return a(e,r,n,i)},getDecryptedKeyHex:function t(e,r){var n=o(e),i=(n.type,n.cipher),u=n.ivsalt,c=n.data,h=s(i,r,u).keyhex;return a(c,i,h,u)},getEncryptedPKCS5PEMFromPrvKeyHex:function t(e,r,n,o,a){var u=\"\";if(void 0!==o&&null!=o||(o=\"AES-256-CBC\"),void 0===i[o])throw\"KEYUTIL unsupported algorithm: \"+o;void 0!==a&&null!=a||(a=function t(e){var r=y.lib.WordArray.random(e);return y.enc.Hex.stringify(r)}(i[o].ivlen).toUpperCase());var c=function t(e,r,n,o){return(0,i[r].eproc)(e,n,o)}(r,o,s(o,n,a).keyhex,a);u=\"-----BEGIN \"+e+\" PRIVATE KEY-----\\r\\n\";return u+=\"Proc-Type: 4,ENCRYPTED\\r\\n\",u+=\"DEK-Info: \"+o+\",\"+a+\"\\r\\n\",u+=\"\\r\\n\",u+=c.replace(/(.{64})/g,\"$1\\r\\n\"),u+=\"\\r\\n-----END \"+e+\" PRIVATE KEY-----\\r\\n\"},parseHexOfEncryptedPKCS8:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={},s=n(e,0);if(2!=s.length)throw\"malformed format: SEQUENCE(0).items != 2: \"+s.length;o.ciphertext=i(e,s[1]);var a=n(e,s[0]);if(2!=a.length)throw\"malformed format: SEQUENCE(0.0).items != 2: \"+a.length;if(\"2a864886f70d01050d\"!=i(e,a[0]))throw\"this only supports pkcs5PBES2\";var u=n(e,a[1]);if(2!=a.length)throw\"malformed format: SEQUENCE(0.0.1).items != 2: \"+u.length;var c=n(e,u[1]);if(2!=c.length)throw\"malformed format: SEQUENCE(0.0.1.1).items != 2: \"+c.length;if(\"2a864886f70d0307\"!=i(e,c[0]))throw\"this only supports TripleDES\";o.encryptionSchemeAlg=\"TripleDES\",o.encryptionSchemeIV=i(e,c[1]);var h=n(e,u[0]);if(2!=h.length)throw\"malformed format: SEQUENCE(0.0.1.0).items != 2: \"+h.length;if(\"2a864886f70d01050c\"!=i(e,h[0]))throw\"this only supports pkcs5PBKDF2\";var l=n(e,h[1]);if(l.length<2)throw\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \"+l.length;o.pbkdf2Salt=i(e,l[0]);var f=i(e,l[1]);try{o.pbkdf2Iter=parseInt(f,16)}catch(t){throw\"malformed format pbkdf2Iter: \"+f}return o},getPBKDF2KeyHexFromParam:function t(e,r){var n=y.enc.Hex.parse(e.pbkdf2Salt),i=e.pbkdf2Iter,o=y.PBKDF2(r,n,{keySize:6,iterations:i});return y.enc.Hex.stringify(o)},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function t(e,r){var n=Hr(e,\"ENCRYPTED PRIVATE KEY\"),i=this.parseHexOfEncryptedPKCS8(n),o=Zr.getPBKDF2KeyHexFromParam(i,r),s={};s.ciphertext=y.enc.Hex.parse(i.ciphertext);var a=y.enc.Hex.parse(o),u=y.enc.Hex.parse(i.encryptionSchemeIV),c=y.TripleDES.decrypt(s,a,{iv:u});return y.enc.Hex.stringify(c)},getKeyFromEncryptedPKCS8PEM:function t(e,r){var n=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(e,r);return this.getKeyFromPlainPrivatePKCS8Hex(n)},parsePlainPrivatePKCS8Hex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={algparam:null};if(\"30\"!=e.substr(0,2))throw\"malformed plain PKCS8 private key(code:001)\";var s=n(e,0);if(3!=s.length)throw\"malformed plain PKCS8 private key(code:002)\";if(\"30\"!=e.substr(s[1],2))throw\"malformed PKCS8 private key(code:003)\";var a=n(e,s[1]);if(2!=a.length)throw\"malformed PKCS8 private key(code:004)\";if(\"06\"!=e.substr(a[0],2))throw\"malformed PKCS8 private key(code:005)\";if(o.algoid=i(e,a[0]),\"06\"==e.substr(a[1],2)&&(o.algparam=i(e,a[1])),\"04\"!=e.substr(s[2],2))throw\"malformed PKCS8 private key(code:006)\";return o.keyidx=r.getVidx(e,s[2]),o},getKeyFromPlainPrivatePKCS8PEM:function t(e){var r=Hr(e,\"PRIVATE KEY\");return this.getKeyFromPlainPrivatePKCS8Hex(r)},getKeyFromPlainPrivatePKCS8Hex:function t(e){var r,n=this.parsePlainPrivatePKCS8Hex(e);if(\"2a864886f70d010101\"==n.algoid)r=new He;else if(\"2a8648ce380401\"==n.algoid)r=new br.crypto.DSA;else{if(\"2a8648ce3d0201\"!=n.algoid)throw\"unsupported private key algorithm\";r=new br.crypto.ECDSA}return r.readPKCS8PrvKeyHex(e),r},_getKeyFromPublicPKCS8Hex:function t(e){var r,n=Er.getVbyList(e,0,[0,0],\"06\");if(\"2a864886f70d010101\"===n)r=new He;else if(\"2a8648ce380401\"===n)r=new br.crypto.DSA;else{if(\"2a8648ce3d0201\"!==n)throw\"unsupported PKCS#8 public key hex\";r=new br.crypto.ECDSA}return r.readPKCS8PubKeyHex(e),r},parsePublicRawRSAKeyHex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={};if(\"30\"!=e.substr(0,2))throw\"malformed RSA key(code:001)\";var s=n(e,0);if(2!=s.length)throw\"malformed RSA key(code:002)\";if(\"02\"!=e.substr(s[0],2))throw\"malformed RSA key(code:003)\";if(o.n=i(e,s[0]),\"02\"!=e.substr(s[1],2))throw\"malformed RSA key(code:004)\";return o.e=i(e,s[1]),o},parsePublicPKCS8Hex:function t(e){var r=Er,n=r.getChildIdx,i=r.getV,o={algparam:null},s=n(e,0);if(2!=s.length)throw\"outer DERSequence shall have 2 elements: \"+s.length;var a=s[0];if(\"30\"!=e.substr(a,2))throw\"malformed PKCS8 public key(code:001)\";var u=n(e,a);if(2!=u.length)throw\"malformed PKCS8 public key(code:002)\";if(\"06\"!=e.substr(u[0],2))throw\"malformed PKCS8 public key(code:003)\";if(o.algoid=i(e,u[0]),\"06\"==e.substr(u[1],2)?o.algparam=i(e,u[1]):\"30\"==e.substr(u[1],2)&&(o.algparam={},o.algparam.p=r.getVbyList(e,u[1],[0],\"02\"),o.algparam.q=r.getVbyList(e,u[1],[1],\"02\"),o.algparam.g=r.getVbyList(e,u[1],[2],\"02\")),\"03\"!=e.substr(s[1],2))throw\"malformed PKCS8 public key(code:004)\";return o.key=i(e,s[1]).substr(2),o}}}();Zr.getKey=function(t,e,r){var n=(v=Er).getChildIdx,i=(v.getV,v.getVbyList),o=br.crypto,s=o.ECDSA,a=o.DSA,u=He,c=Hr,h=Zr;if(void 0!==u&&t instanceof u)return t;if(void 0!==s&&t instanceof s)return t;if(void 0!==a&&t instanceof a)return t;if(void 0!==t.curve&&void 0!==t.xy&&void 0===t.d)return new s({pub:t.xy,curve:t.curve});if(void 0!==t.curve&&void 0!==t.d)return new s({prv:t.d,curve:t.curve});if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(P=new u).setPublic(t.n,t.e),P;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.co&&void 0===t.qi)return(P=new u).setPrivateEx(t.n,t.e,t.d,t.p,t.q,t.dp,t.dq,t.co),P;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0===t.p)return(P=new u).setPrivate(t.n,t.e,t.d),P;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0===t.x)return(P=new a).setPublic(t.p,t.q,t.g,t.y),P;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0!==t.x)return(P=new a).setPrivate(t.p,t.q,t.g,t.y,t.x),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(P=new u).setPublic(Ir(t.n),Ir(t.e)),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.qi)return(P=new u).setPrivateEx(Ir(t.n),Ir(t.e),Ir(t.d),Ir(t.p),Ir(t.q),Ir(t.dp),Ir(t.dq),Ir(t.qi)),P;if(\"RSA\"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d)return(P=new u).setPrivate(Ir(t.n),Ir(t.e),Ir(t.d)),P;if(\"EC\"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0===t.d){var l=(k=new s({curve:t.crv})).ecparams.keylen/4,f=\"04\"+(\"0000000000\"+Ir(t.x)).slice(-l)+(\"0000000000\"+Ir(t.y)).slice(-l);return k.setPublicKeyHex(f),k}if(\"EC\"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0!==t.d){l=(k=new s({curve:t.crv})).ecparams.keylen/4,f=\"04\"+(\"0000000000\"+Ir(t.x)).slice(-l)+(\"0000000000\"+Ir(t.y)).slice(-l);var g=(\"0000000000\"+Ir(t.d)).slice(-l);return k.setPublicKeyHex(f),k.setPrivateKeyHex(g),k}if(\"pkcs5prv\"===r){var d,p=t,v=Er;if(9===(d=n(p,0)).length)(P=new u).readPKCS5PrvKeyHex(p);else if(6===d.length)(P=new a).readPKCS5PrvKeyHex(p);else{if(!(d.length>2&&\"04\"===p.substr(d[1],2)))throw\"unsupported PKCS#1/5 hexadecimal key\";(P=new s).readPKCS5PrvKeyHex(p)}return P}if(\"pkcs8prv\"===r)return P=h.getKeyFromPlainPrivatePKCS8Hex(t);if(\"pkcs8pub\"===r)return h._getKeyFromPublicPKCS8Hex(t);if(\"x509pub\"===r)return on.getPublicKeyFromCertHex(t);if(-1!=t.indexOf(\"-END CERTIFICATE-\",0)||-1!=t.indexOf(\"-END X509 CERTIFICATE-\",0)||-1!=t.indexOf(\"-END TRUSTED CERTIFICATE-\",0))return on.getPublicKeyFromCertPEM(t);if(-1!=t.indexOf(\"-END PUBLIC KEY-\")){var y=Hr(t,\"PUBLIC KEY\");return h._getKeyFromPublicPKCS8Hex(y)}if(-1!=t.indexOf(\"-END RSA PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){var m=c(t,\"RSA PRIVATE KEY\");return h.getKey(m,null,\"pkcs5prv\")}if(-1!=t.indexOf(\"-END DSA PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){var _=i(R=c(t,\"DSA PRIVATE KEY\"),0,[1],\"02\"),S=i(R,0,[2],\"02\"),b=i(R,0,[3],\"02\"),w=i(R,0,[4],\"02\"),E=i(R,0,[5],\"02\");return(P=new a).setPrivate(new F(_,16),new F(S,16),new F(b,16),new F(w,16),new F(E,16)),P}if(-1!=t.indexOf(\"-END EC PRIVATE KEY-\")&&-1==t.indexOf(\"4,ENCRYPTED\")){m=c(t,\"EC PRIVATE KEY\");return h.getKey(m,null,\"pkcs5prv\")}if(-1!=t.indexOf(\"-END PRIVATE KEY-\"))return h.getKeyFromPlainPrivatePKCS8PEM(t);if(-1!=t.indexOf(\"-END RSA PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var x=h.getDecryptedKeyHex(t,e),A=new He;return A.readPKCS5PrvKeyHex(x),A}if(-1!=t.indexOf(\"-END EC PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var k,P=i(R=h.getDecryptedKeyHex(t,e),0,[1],\"04\"),C=i(R,0,[2,0],\"06\"),T=i(R,0,[3,0],\"03\").substr(2);if(void 0===br.crypto.OID.oidhex2name[C])throw\"undefined OID(hex) in KJUR.crypto.OID: \"+C;return(k=new s({curve:br.crypto.OID.oidhex2name[C]})).setPublicKeyHex(T),k.setPrivateKeyHex(P),k.isPublic=!1,k}if(-1!=t.indexOf(\"-END DSA PRIVATE KEY-\")&&-1!=t.indexOf(\"4,ENCRYPTED\")){var R;_=i(R=h.getDecryptedKeyHex(t,e),0,[1],\"02\"),S=i(R,0,[2],\"02\"),b=i(R,0,[3],\"02\"),w=i(R,0,[4],\"02\"),E=i(R,0,[5],\"02\");return(P=new a).setPrivate(new F(_,16),new F(S,16),new F(b,16),new F(w,16),new F(E,16)),P}if(-1!=t.indexOf(\"-END ENCRYPTED PRIVATE KEY-\"))return h.getKeyFromEncryptedPKCS8PEM(t,e);throw new Error(\"not supported argument\")},Zr.generateKeypair=function(t,e){if(\"RSA\"==t){var r=e;(s=new He).generate(r,\"10001\"),s.isPrivate=!0,s.isPublic=!0;var n=new He,i=s.n.toString(16),o=s.e.toString(16);return n.setPublic(i,o),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}if(\"EC\"==t){var s,a,u=e,c=new br.crypto.ECDSA({curve:u}).generateKeyPairHex();return(s=new br.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),s.setPrivateKeyHex(c.ecprvhex),s.isPrivate=!0,s.isPublic=!1,(n=new br.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}throw\"unknown algorithm: \"+t},Zr.getPEM=function(t,e,r,n,i,o){var s=br,a=s.asn1,u=a.DERObjectIdentifier,c=a.DERInteger,h=a.ASN1Util.newObject,l=a.x509.SubjectPublicKeyInfo,f=s.crypto,g=f.DSA,d=f.ECDSA,p=He;function v(t){return h({seq:[{int:0},{int:{bigint:t.n}},{int:t.e},{int:{bigint:t.d}},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.dmp1}},{int:{bigint:t.dmq1}},{int:{bigint:t.coeff}}]})}function m(t){return h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:[\"a0\",!0,{oid:{name:t.curveName}}]},{tag:[\"a1\",!0,{bitstr:{hex:\"00\"+t.pubKeyHex}}]}]})}function _(t){return h({seq:[{int:0},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}},{int:{bigint:t.y}},{int:{bigint:t.x}}]})}if((void 0!==p&&t instanceof p||void 0!==g&&t instanceof g||void 0!==d&&t instanceof d)&&1==t.isPublic&&(void 0===e||\"PKCS8PUB\"==e))return Mr(F=new l(t).getEncodedHex(),\"PUBLIC KEY\");if(\"PKCS1PRV\"==e&&void 0!==p&&t instanceof p&&(void 0===r||null==r)&&1==t.isPrivate)return Mr(F=v(t).getEncodedHex(),\"RSA PRIVATE KEY\");if(\"PKCS1PRV\"==e&&void 0!==d&&t instanceof d&&(void 0===r||null==r)&&1==t.isPrivate){var S=new u({name:t.curveName}).getEncodedHex(),b=m(t).getEncodedHex(),w=\"\";return w+=Mr(S,\"EC PARAMETERS\"),w+=Mr(b,\"EC PRIVATE KEY\")}if(\"PKCS1PRV\"==e&&void 0!==g&&t instanceof g&&(void 0===r||null==r)&&1==t.isPrivate)return Mr(F=_(t).getEncodedHex(),\"DSA PRIVATE KEY\");if(\"PKCS5PRV\"==e&&void 0!==p&&t instanceof p&&void 0!==r&&null!=r&&1==t.isPrivate){var F=v(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\",F,r,n,o)}if(\"PKCS5PRV\"==e&&void 0!==d&&t instanceof d&&void 0!==r&&null!=r&&1==t.isPrivate){F=m(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\",F,r,n,o)}if(\"PKCS5PRV\"==e&&void 0!==g&&t instanceof g&&void 0!==r&&null!=r&&1==t.isPrivate){F=_(t).getEncodedHex();return void 0===n&&(n=\"DES-EDE3-CBC\"),this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\",F,r,n,o)}var E=function t(e,r){var n=x(e,r);return new h({seq:[{seq:[{oid:{name:\"pkcs5PBES2\"}},{seq:[{seq:[{oid:{name:\"pkcs5PBKDF2\"}},{seq:[{octstr:{hex:n.pbkdf2Salt}},{int:n.pbkdf2Iter}]}]},{seq:[{oid:{name:\"des-EDE3-CBC\"}},{octstr:{hex:n.encryptionSchemeIV}}]}]}]},{octstr:{hex:n.ciphertext}}]}).getEncodedHex()},x=function t(e,r){var n=y.lib.WordArray.random(8),i=y.lib.WordArray.random(8),o=y.PBKDF2(r,n,{keySize:6,iterations:100}),s=y.enc.Hex.parse(e),a=y.TripleDES.encrypt(s,o,{iv:i})+\"\",u={};return u.ciphertext=a,u.pbkdf2Salt=y.enc.Hex.stringify(n),u.pbkdf2Iter=100,u.encryptionSchemeAlg=\"DES-EDE3-CBC\",u.encryptionSchemeIV=y.enc.Hex.stringify(i),u};if(\"PKCS8PRV\"==e&&null!=p&&t instanceof p&&1==t.isPrivate){var A=v(t).getEncodedHex();F=h({seq:[{int:0},{seq:[{oid:{name:\"rsaEncryption\"}},{null:!0}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}if(\"PKCS8PRV\"==e&&void 0!==d&&t instanceof d&&1==t.isPrivate){A=new h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:[\"a1\",!0,{bitstr:{hex:\"00\"+t.pubKeyHex}}]}]}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:\"ecPublicKey\"}},{oid:{name:t.curveName}}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}if(\"PKCS8PRV\"==e&&void 0!==g&&t instanceof g&&1==t.isPrivate){A=new c({bigint:t.x}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:\"dsa\"}},{seq:[{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}}]}]},{octstr:{hex:A}}]}).getEncodedHex();return void 0===r||null==r?Mr(F,\"PRIVATE KEY\"):Mr(b=E(F,r),\"ENCRYPTED PRIVATE KEY\")}throw new Error(\"unsupported object nor format\")},Zr.getKeyFromCSRPEM=function(t){var e=Hr(t,\"CERTIFICATE REQUEST\");return Zr.getKeyFromCSRHex(e)},Zr.getKeyFromCSRHex=function(t){var e=Zr.parseCSRHex(t);return Zr.getKey(e.p8pubkeyhex,null,\"pkcs8pub\")},Zr.parseCSRHex=function(t){var e=Er,r=e.getChildIdx,n=e.getTLV,i={},o=t;if(\"30\"!=o.substr(0,2))throw\"malformed CSR(code:001)\";var s=r(o,0);if(s.length<1)throw\"malformed CSR(code:002)\";if(\"30\"!=o.substr(s[0],2))throw\"malformed CSR(code:003)\";var a=r(o,s[0]);if(a.length<3)throw\"malformed CSR(code:004)\";return i.p8pubkeyhex=n(o,a[2]),i},Zr.getKeyID=function(t){var e=Zr,r=Er;\"string\"==typeof t&&-1!=t.indexOf(\"BEGIN \")&&(t=e.getKey(t));var n=Hr(e.getPEM(t)),i=r.getIdxbyList(n,0,[1]),o=r.getV(n,i).substring(2);return br.crypto.Util.hashHex(o,\"sha1\")},Zr.getJWKFromKey=function(t){var e={};if(t instanceof He&&t.isPrivate)return e.kty=\"RSA\",e.n=Rr(t.n.toString(16)),e.e=Rr(t.e.toString(16)),e.d=Rr(t.d.toString(16)),e.p=Rr(t.p.toString(16)),e.q=Rr(t.q.toString(16)),e.dp=Rr(t.dmp1.toString(16)),e.dq=Rr(t.dmq1.toString(16)),e.qi=Rr(t.coeff.toString(16)),e;if(t instanceof He&&t.isPublic)return e.kty=\"RSA\",e.n=Rr(t.n.toString(16)),e.e=Rr(t.e.toString(16)),e;if(t instanceof br.crypto.ECDSA&&t.isPrivate){if(\"P-256\"!==(n=t.getShortNISTPCurveName())&&\"P-384\"!==n)throw\"unsupported curve name for JWT: \"+n;var r=t.getPublicKeyXYHex();return e.kty=\"EC\",e.crv=n,e.x=Rr(r.x),e.y=Rr(r.y),e.d=Rr(t.prvKeyHex),e}if(t instanceof br.crypto.ECDSA&&t.isPublic){var n;if(\"P-256\"!==(n=t.getShortNISTPCurveName())&&\"P-384\"!==n)throw\"unsupported curve name for JWT: \"+n;r=t.getPublicKeyXYHex();return e.kty=\"EC\",e.crv=n,e.x=Rr(r.x),e.y=Rr(r.y),e}throw\"not supported key object\"},He.getPosArrayOfChildrenFromHex=function(t){return Er.getChildIdx(t,0)},He.getHexValueArrayOfChildrenFromHex=function(t){var e,r=Er.getV,n=r(t,(e=He.getPosArrayOfChildrenFromHex(t))[0]),i=r(t,e[1]),o=r(t,e[2]),s=r(t,e[3]),a=r(t,e[4]),u=r(t,e[5]),c=r(t,e[6]),h=r(t,e[7]),l=r(t,e[8]);return(e=new Array).push(n,i,o,s,a,u,c,h,l),e},He.prototype.readPrivateKeyFromPEMString=function(t){var e=Hr(t),r=He.getHexValueArrayOfChildrenFromHex(e);this.setPrivateEx(r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8])},He.prototype.readPKCS5PrvKeyHex=function(t){var e=He.getHexValueArrayOfChildrenFromHex(t);this.setPrivateEx(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},He.prototype.readPKCS8PrvKeyHex=function(t){var e,r,n,i,o,s,a,u,c=Er,h=c.getVbyListEx;if(!1===c.isASN1HEX(t))throw new Error(\"not ASN.1 hex string\");try{e=h(t,0,[2,0,1],\"02\"),r=h(t,0,[2,0,2],\"02\"),n=h(t,0,[2,0,3],\"02\"),i=h(t,0,[2,0,4],\"02\"),o=h(t,0,[2,0,5],\"02\"),s=h(t,0,[2,0,6],\"02\"),a=h(t,0,[2,0,7],\"02\"),u=h(t,0,[2,0,8],\"02\")}catch(t){throw new Error(\"malformed PKCS#8 plain RSA private key\")}this.setPrivateEx(e,r,n,i,o,s,a,u)},He.prototype.readPKCS5PubKeyHex=function(t){var e=Er,r=e.getV;if(!1===e.isASN1HEX(t))throw new Error(\"keyHex is not ASN.1 hex string\");var n=e.getChildIdx(t,0);if(2!==n.length||\"02\"!==t.substr(n[0],2)||\"02\"!==t.substr(n[1],2))throw new Error(\"wrong hex for PKCS#5 public key\");var i=r(t,n[0]),o=r(t,n[1]);this.setPublic(i,o)},He.prototype.readPKCS8PubKeyHex=function(t){var e=Er;if(!1===e.isASN1HEX(t))throw new Error(\"not ASN.1 hex string\");if(\"06092a864886f70d010101\"!==e.getTLVbyListEx(t,0,[0,0]))throw new Error(\"not PKCS8 RSA public key\");var r=e.getTLVbyListEx(t,0,[1,0]);this.readPKCS5PubKeyHex(r)},He.prototype.readCertPubKeyHex=function(t,e){var r,n;(r=new on).readCertHex(t),n=r.getPublicKeyHex(),this.readPKCS8PubKeyHex(n)};var tn=new RegExp(\"[^0-9a-f]\",\"gi\");function en(t,e){for(var r=\"\",n=e/4-t.length,i=0;i<n;i++)r+=\"0\";return r+t}function rn(t,e,r){for(var n=\"\",i=0;n.length<e;)n+=Nr(r(Ur(t+String.fromCharCode.apply(String,[(4278190080&i)>>24,(16711680&i)>>16,(65280&i)>>8,255&i])))),i+=1;return n}function nn(t){for(var e in br.crypto.Util.DIGESTINFOHEAD){var r=br.crypto.Util.DIGESTINFOHEAD[e],n=r.length;if(t.substring(0,n)==r)return[e,t.substring(n)]}return[]}function on(t){var e,r=Er,n=r.getChildIdx,i=r.getV,o=r.getTLV,s=r.getVbyList,a=r.getVbyListEx,u=r.getTLVbyList,c=r.getTLVbyListEx,h=r.getIdxbyList,l=r.getIdxbyListEx,f=r.getVidx,g=r.oidname,d=r.hextooidstr,p=on,v=Hr;try{e=br.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(t){}this.HEX2STAG={\"0c\":\"utf8\",13:\"prn\",16:\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"},this.hex=null,this.version=0,this.foffset=0,this.aExtInfo=null,this.getVersion=function(){return null===this.hex||0!==this.version?this.version:\"a003020102\"!==u(this.hex,0,[0,0])?(this.version=1,this.foffset=-1,1):(this.version=3,3)},this.getSerialNumberHex=function(){return a(this.hex,0,[0,0],\"02\")},this.getSignatureAlgorithmField=function(){var t=c(this.hex,0,[0,1]);return this.getAlgorithmIdentifierName(t)},this.getAlgorithmIdentifierName=function(t){for(var r in e)if(t===e[r])return r;return g(a(t,0,[0],\"06\"))},this.getIssuer=function(){return this.getX500Name(this.getIssuerHex())},this.getIssuerHex=function(){return u(this.hex,0,[0,3+this.foffset],\"30\")},this.getIssuerString=function(){return p.hex2dn(this.getIssuerHex())},this.getSubject=function(){return this.getX500Name(this.getSubjectHex())},this.getSubjectHex=function(){return u(this.hex,0,[0,5+this.foffset],\"30\")},this.getSubjectString=function(){return p.hex2dn(this.getSubjectHex())},this.getNotBefore=function(){var t=s(this.hex,0,[0,4+this.foffset,0]);return t=t.replace(/(..)/g,\"%$1\"),t=decodeURIComponent(t)},this.getNotAfter=function(){var t=s(this.hex,0,[0,4+this.foffset,1]);return t=t.replace(/(..)/g,\"%$1\"),t=decodeURIComponent(t)},this.getPublicKeyHex=function(){return r.getTLVbyList(this.hex,0,[0,6+this.foffset],\"30\")},this.getPublicKeyIdx=function(){return h(this.hex,0,[0,6+this.foffset],\"30\")},this.getPublicKeyContentIdx=function(){var t=this.getPublicKeyIdx();return h(this.hex,t,[1,0],\"30\")},this.getPublicKey=function(){return Zr.getKey(this.getPublicKeyHex(),null,\"pkcs8pub\")},this.getSignatureAlgorithmName=function(){var t=u(this.hex,0,[1],\"30\");return this.getAlgorithmIdentifierName(t)},this.getSignatureValueHex=function(){return s(this.hex,0,[2],\"03\",!0)},this.verifySignature=function(t){var e=this.getSignatureAlgorithmField(),r=this.getSignatureValueHex(),n=u(this.hex,0,[0],\"30\"),i=new br.crypto.Signature({alg:e});return i.init(t),i.updateHex(n),i.verify(r)},this.parseExt=function(t){var e,o,a;if(void 0===t){if(a=this.hex,3!==this.version)return-1;e=h(a,0,[0,7,0],\"30\"),o=n(a,e)}else{a=Hr(t);var u=h(a,0,[0,3,0,0],\"06\");if(\"2a864886f70d01090e\"!=i(a,u))return void(this.aExtInfo=new Array);e=h(a,0,[0,3,0,1,0],\"30\"),o=n(a,e),this.hex=a}this.aExtInfo=new Array;for(var c=0;c<o.length;c++){var l={critical:!1},g=0;3===n(a,o[c]).length&&(l.critical=!0,g=1),l.oid=r.hextooidstr(s(a,o[c],[0],\"06\"));var d=h(a,o[c],[1+g]);l.vidx=f(a,d),this.aExtInfo.push(l)}},this.getExtInfo=function(t){var e=this.aExtInfo,r=t;if(t.match(/^[0-9.]+$/)||(r=br.asn1.x509.OID.name2oid(t)),\"\"!==r)for(var n=0;n<e.length;n++)if(e[n].oid===r)return e[n]},this.getExtBasicConstraints=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"basicConstraints\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"basicConstraints\"};if(e&&(n.critical=!0),\"3000\"===t)return n;if(\"30030101ff\"===t)return n.cA=!0,n;if(\"30060101ff02\"===t.substr(0,12)){var s=i(t,10),a=parseInt(s,16);return n.cA=!0,n.pathLen=a,n}throw new Error(\"hExtV parse error: \"+t)},this.getExtKeyUsage=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"keyUsage\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"keyUsage\"};return e&&(n.critical=!0),n.names=this.getExtKeyUsageString(t).split(\",\"),n},this.getExtKeyUsageBin=function(t){if(void 0===t){var e=this.getExtInfo(\"keyUsage\");if(void 0===e)return\"\";t=o(this.hex,e.vidx)}if(8!=t.length&&10!=t.length)throw new Error(\"malformed key usage value: \"+t);var r=\"000000000000000\"+parseInt(t.substr(6),16).toString(2);return 8==t.length&&(r=r.slice(-8)),10==t.length&&(r=r.slice(-16)),\"\"==(r=r.replace(/0+$/,\"\"))&&(r=\"0\"),r},this.getExtKeyUsageString=function(t){for(var e=this.getExtKeyUsageBin(t),r=new Array,n=0;n<e.length;n++)\"1\"==e.substr(n,1)&&r.push(on.KEYUSAGE_NAME[n]);return r.join(\",\")},this.getExtSubjectKeyIdentifier=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"subjectKeyIdentifier\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"subjectKeyIdentifier\"};e&&(n.critical=!0);var s=i(t,0);return n.kid={hex:s},n},this.getExtAuthorityKeyIdentifier=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"authorityKeyIdentifier\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var s={extname:\"authorityKeyIdentifier\"};e&&(s.critical=!0);for(var a=n(t,0),u=0;u<a.length;u++){var c=t.substr(a[u],2);if(\"80\"===c&&(s.kid={hex:i(t,a[u])}),\"a1\"===c){var h=o(t,a[u]),l=this.getGeneralNames(h);s.issuer=l[0].dn}\"82\"===c&&(s.sn={hex:i(t,a[u])})}return s},this.getExtExtKeyUsage=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"extKeyUsage\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var s={extname:\"extKeyUsage\",array:[]};e&&(s.critical=!0);for(var a=n(t,0),u=0;u<a.length;u++)s.array.push(g(i(t,a[u])));return s},this.getExtExtKeyUsageName=function(){var t=this.getExtInfo(\"extKeyUsage\");if(void 0===t)return t;var e=new Array,r=o(this.hex,t.vidx);if(\"\"===r)return e;for(var s=n(r,0),a=0;a<s.length;a++)e.push(g(i(r,s[a])));return e},this.getExtSubjectAltName=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"subjectAltName\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"subjectAltName\",array:[]};return e&&(n.critical=!0),n.array=this.getGeneralNames(t),n},this.getExtIssuerAltName=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"issuerAltName\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var n={extname:\"issuerAltName\",array:[]};return e&&(n.critical=!0),n.array=this.getGeneralNames(t),n},this.getGeneralNames=function(t){for(var e=n(t,0),r=[],i=0;i<e.length;i++){var s=this.getGeneralName(o(t,e[i]));void 0!==s&&r.push(s)}return r},this.getGeneralName=function(t){var e=t.substr(0,2),r=i(t,0),n=Nr(r);return\"81\"==e?{rfc822:n}:\"82\"==e?{dns:n}:\"86\"==e?{uri:n}:\"87\"==e?{ip:Yr(r)}:\"a4\"==e?{dn:this.getX500Name(r)}:void 0},this.getExtSubjectAltName2=function(){var t,e,r,s=this.getExtInfo(\"subjectAltName\");if(void 0===s)return s;for(var a=new Array,u=o(this.hex,s.vidx),c=n(u,0),h=0;h<c.length;h++)r=u.substr(c[h],2),t=i(u,c[h]),\"81\"===r&&(e=Lr(t),a.push([\"MAIL\",e])),\"82\"===r&&(e=Lr(t),a.push([\"DNS\",e])),\"84\"===r&&(e=on.hex2dn(t,0),a.push([\"DN\",e])),\"86\"===r&&(e=Lr(t),a.push([\"URI\",e])),\"87\"===r&&(e=Yr(t),a.push([\"IP\",e]));return a},this.getExtCRLDistributionPoints=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"cRLDistributionPoints\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"cRLDistributionPoints\",array:[]};e&&(i.critical=!0);for(var s=n(t,0),a=0;a<s.length;a++){var u=o(t,s[a]);i.array.push(this.getDistributionPoint(u))}return i},this.getDistributionPoint=function(t){for(var e={},r=n(t,0),i=0;i<r.length;i++){var s=t.substr(r[i],2),a=o(t,r[i]);\"a0\"==s&&(e.dpname=this.getDistributionPointName(a))}return e},this.getDistributionPointName=function(t){for(var e={},r=n(t,0),i=0;i<r.length;i++){var s=t.substr(r[i],2),a=o(t,r[i]);\"a0\"==s&&(e.full=this.getGeneralNames(a))}return e},this.getExtCRLDistributionPointsURI=function(){var t=this.getExtInfo(\"cRLDistributionPoints\");if(void 0===t)return t;for(var e=new Array,r=n(this.hex,t.vidx),i=0;i<r.length;i++)try{var o=Lr(s(this.hex,r[i],[0,0,0],\"86\"));e.push(o)}catch(t){}return e},this.getExtAIAInfo=function(){var t=this.getExtInfo(\"authorityInfoAccess\");if(void 0===t)return t;for(var e={ocsp:[],caissuer:[]},r=n(this.hex,t.vidx),i=0;i<r.length;i++){var o=s(this.hex,r[i],[0],\"06\"),a=s(this.hex,r[i],[1],\"86\");\"2b06010505073001\"===o&&e.ocsp.push(Lr(a)),\"2b06010505073002\"===o&&e.caissuer.push(Lr(a))}return e},this.getExtAuthorityInfoAccess=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"authorityInfoAccess\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"authorityInfoAccess\",array:[]};e&&(i.critical=!0);for(var u=n(t,0),c=0;c<u.length;c++){var h=a(t,u[c],[0],\"06\"),l=Lr(s(t,u[c],[1],\"86\"));if(\"2b06010505073001\"==h)i.array.push({ocsp:l});else{if(\"2b06010505073002\"!=h)throw new Error(\"unknown method: \"+h);i.array.push({caissuer:l})}}return i},this.getExtCertificatePolicies=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"certificatePolicies\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"certificatePolicies\",array:[]};e&&(i.critical=!0);for(var s=n(t,0),a=0;a<s.length;a++){var u=o(t,s[a]),c=this.getPolicyInformation(u);i.array.push(c)}return i},this.getPolicyInformation=function(t){var e={},r=s(t,0,[0],\"06\");e.policyoid=g(r);var i=l(t,0,[1],\"30\");if(-1!=i){e.array=[];for(var a=n(t,i),u=0;u<a.length;u++){var c=o(t,a[u]),h=this.getPolicyQualifierInfo(c);e.array.push(h)}}return e},this.getPolicyQualifierInfo=function(t){var e={},r=s(t,0,[0],\"06\");if(\"2b06010505070201\"===r){var n=a(t,0,[1],\"16\");e.cps=Nr(n)}else if(\"2b06010505070202\"===r){var i=u(t,0,[1],\"30\");e.unotice=this.getUserNotice(i)}return e},this.getUserNotice=function(t){for(var e={},r=n(t,0),i=0;i<r.length;i++){var s=o(t,r[i]);\"30\"!=s.substr(0,2)&&(e.exptext=this.getDisplayText(s))}return e},this.getDisplayText=function(t){var e={};return e.type={\"0c\":\"utf8\",16:\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"}[t.substr(0,2)],e.str=Nr(i(t,0)),e},this.getExtCRLNumber=function(t,e){var r={extname:\"cRLNumber\"};if(e&&(r.critical=!0),\"02\"==t.substr(0,2))return r.num={hex:i(t,0)},r;throw new Error(\"hExtV parse error: \"+t)},this.getExtCRLReason=function(t,e){var r={extname:\"cRLReason\"};if(e&&(r.critical=!0),\"0a\"==t.substr(0,2))return r.code=parseInt(i(t,0),16),r;throw new Error(\"hExtV parse error: \"+t)},this.getExtOcspNonce=function(t,e){var r={extname:\"ocspNonce\"};e&&(r.critical=!0);var n=i(t,0);return r.hex=n,r},this.getExtOcspNoCheck=function(t,e){var r={extname:\"ocspNoCheck\"};return e&&(r.critical=!0),r},this.getExtAdobeTimeStamp=function(t,e){if(void 0===t&&void 0===e){var r=this.getExtInfo(\"adobeTimeStamp\");if(void 0===r)return;t=o(this.hex,r.vidx),e=r.critical}var i={extname:\"adobeTimeStamp\"};e&&(i.critical=!0);var s=n(t,0);if(s.length>1){var a=o(t,s[1]),u=this.getGeneralName(a);null!=u.uri&&(i.uri=u.uri)}if(s.length>2){var c=o(t,s[2]);\"0101ff\"==c&&(i.reqauth=!0),\"010100\"==c&&(i.reqauth=!1)}return i},this.getX500NameRule=function(t){for(var e=null,r=[],n=0;n<t.length;n++)for(var i=t[n],o=0;o<i.length;o++)r.push(i[o]);for(n=0;n<r.length;n++){var s=r[n],a=s.ds,u=s.value,c=s.type;if(\":\"+a,\"prn\"!=a&&\"utf8\"!=a&&\"ia5\"!=a)return\"mixed\";if(\"ia5\"==a){if(\"CN\"!=c)return\"mixed\";if(br.lang.String.isMail(u))continue;return\"mixed\"}if(\"C\"==c){if(\"prn\"==a)continue;return\"mixed\"}if(\":\"+a,null==e)e=a;else if(e!==a)return\"mixed\"}return null==e?\"prn\":e},this.getX500Name=function(t){var e=this.getX500NameArray(t);return{array:e,str:this.dnarraytostr(e)}},this.getX500NameArray=function(t){for(var e=[],r=n(t,0),i=0;i<r.length;i++)e.push(this.getRDN(o(t,r[i])));return e},this.getRDN=function(t){for(var e=[],r=n(t,0),i=0;i<r.length;i++)e.push(this.getAttrTypeAndValue(o(t,r[i])));return e},this.getAttrTypeAndValue=function(t){var e={type:null,value:null,ds:null},r=n(t,0),i=s(t,r[0],[],\"06\"),o=s(t,r[1],[]),a=br.asn1.ASN1Util.oidHexToInt(i);return e.type=br.asn1.x509.OID.oid2atype(a),e.value=Nr(o),e.ds=this.HEX2STAG[t.substr(r[1],2)],e},this.readCertPEM=function(t){this.readCertHex(v(t))},this.readCertHex=function(t){this.hex=t,this.getVersion();try{h(this.hex,0,[0,7],\"a3\"),this.parseExt()}catch(t){}},this.getParam=function(){var t={};return t.version=this.getVersion(),t.serial={hex:this.getSerialNumberHex()},t.sigalg=this.getSignatureAlgorithmField(),t.issuer=this.getIssuer(),t.notbefore=this.getNotBefore(),t.notafter=this.getNotAfter(),t.subject=this.getSubject(),t.sbjpubkey=Mr(this.getPublicKeyHex(),\"PUBLIC KEY\"),this.aExtInfo.length>0&&(t.ext=this.getExtParamArray()),t.sighex=this.getSignatureValueHex(),t},this.getExtParamArray=function(t){null==t&&(-1!=l(this.hex,0,[0,\"[3]\"])&&(t=c(this.hex,0,[0,\"[3]\",0],\"30\")));for(var e=[],r=n(t,0),i=0;i<r.length;i++){var s=o(t,r[i]),a=this.getExtParam(s);null!=a&&e.push(a)}return e},this.getExtParam=function(t){var e=n(t,0).length;if(2!=e&&3!=e)throw new Error(\"wrong number elements in Extension: \"+e+\" \"+t);var r=d(s(t,0,[0],\"06\")),i=!1;3==e&&\"0101ff\"==u(t,0,[1])&&(i=!0);var o=u(t,0,[e-1,0]),a=void 0;if(\"2.5.29.14\"==r?a=this.getExtSubjectKeyIdentifier(o,i):\"2.5.29.15\"==r?a=this.getExtKeyUsage(o,i):\"2.5.29.17\"==r?a=this.getExtSubjectAltName(o,i):\"2.5.29.18\"==r?a=this.getExtIssuerAltName(o,i):\"2.5.29.19\"==r?a=this.getExtBasicConstraints(o,i):\"2.5.29.31\"==r?a=this.getExtCRLDistributionPoints(o,i):\"2.5.29.32\"==r?a=this.getExtCertificatePolicies(o,i):\"2.5.29.35\"==r?a=this.getExtAuthorityKeyIdentifier(o,i):\"2.5.29.37\"==r?a=this.getExtExtKeyUsage(o,i):\"1.3.6.1.5.5.7.1.1\"==r?a=this.getExtAuthorityInfoAccess(o,i):\"2.5.29.20\"==r?a=this.getExtCRLNumber(o,i):\"2.5.29.21\"==r?a=this.getExtCRLReason(o,i):\"1.3.6.1.5.5.7.48.1.2\"==r?a=this.getExtOcspNonce(o,i):\"1.3.6.1.5.5.7.48.1.5\"==r?a=this.getExtOcspNoCheck(o,i):\"1.2.840.113583.1.1.9.1\"==r&&(a=this.getExtAdobeTimeStamp(o,i)),null!=a)return a;var c={extname:r,extn:o};return i&&(c.critical=!0),c},this.findExt=function(t,e){for(var r=0;r<t.length;r++)if(t[r].extname==e)return t[r];return null},this.updateExtCDPFullURI=function(t,e){var r=this.findExt(t,\"cRLDistributionPoints\");if(null!=r&&null!=r.array)for(var n=r.array,i=0;i<n.length;i++)if(null!=n[i].dpname&&null!=n[i].dpname.full)for(var o=n[i].dpname.full,s=0;s<o.length;s++){var a=o[i];null!=a.uri&&(a.uri=e)}},this.updateExtAIAOCSP=function(t,e){var r=this.findExt(t,\"authorityInfoAccess\");if(null!=r&&null!=r.array)for(var n=r.array,i=0;i<n.length;i++)null!=n[i].ocsp&&(n[i].ocsp=e)},this.updateExtAIACAIssuer=function(t,e){var r=this.findExt(t,\"authorityInfoAccess\");if(null!=r&&null!=r.array)for(var n=r.array,i=0;i<n.length;i++)null!=n[i].caissuer&&(n[i].caissuer=e)},this.dnarraytostr=function(t){return\"/\"+t.map((function(t){return function e(t){return t.map((function(t){return function e(t){return t.type+\"=\"+t.value}(t)})).join(\"+\")}(t)})).join(\"/\")},this.getInfo=function(){var t,e,r,n=function t(e){return JSON.stringify(e.array).replace(/[\\[\\]\\{\\}\\\"]/g,\"\")},i=function t(e){for(var r=\"\",n=e.array,i=0;i<n.length;i++){var o=n[i];if(r+=\" policy oid: \"+o.policyoid+\"\\n\",void 0!==o.array)for(var s=0;s<o.array.length;s++){var a=o.array[s];void 0!==a.cps&&(r+=\" cps: \"+a.cps+\"\\n\")}}return r},o=function t(e){for(var r=\"\",n=e.array,i=0;i<n.length;i++){var o=n[i];try{void 0!==o.dpname.full[0].uri&&(r+=\" \"+o.dpname.full[0].uri+\"\\n\")}catch(t){}try{void 0!==o.dname.full[0].dn.hex&&(r+=\" \"+on.hex2dn(o.dpname.full[0].dn.hex)+\"\\n\")}catch(t){}}return r},s=function t(e){for(var r=\"\",n=e.array,i=0;i<n.length;i++){var o=n[i];void 0!==o.caissuer&&(r+=\" caissuer: \"+o.caissuer+\"\\n\"),void 0!==o.ocsp&&(r+=\" ocsp: \"+o.ocsp+\"\\n\")}return r};if(t=\"Basic Fields\\n\",t+=\" serial number: \"+this.getSerialNumberHex()+\"\\n\",t+=\" signature algorithm: \"+this.getSignatureAlgorithmField()+\"\\n\",t+=\" issuer: \"+this.getIssuerString()+\"\\n\",t+=\" notBefore: \"+this.getNotBefore()+\"\\n\",t+=\" notAfter: \"+this.getNotAfter()+\"\\n\",t+=\" subject: \"+this.getSubjectString()+\"\\n\",t+=\" subject public key info: \\n\",t+=\" key algorithm: \"+(e=this.getPublicKey()).type+\"\\n\",\"RSA\"===e.type&&(t+=\" n=\"+$r(e.n.toString(16)).substr(0,16)+\"...\\n\",t+=\" e=\"+$r(e.e.toString(16))+\"\\n\"),null!=(r=this.aExtInfo)){t+=\"X509v3 Extensions:\\n\";for(var a=0;a<r.length;a++){var u=r[a],c=br.asn1.x509.OID.oid2name(u.oid);\"\"===c&&(c=u.oid);var h=\"\";if(!0===u.critical&&(h=\"CRITICAL\"),t+=\" \"+c+\" \"+h+\":\\n\",\"basicConstraints\"===c){var l=this.getExtBasicConstraints();void 0===l.cA?t+=\" {}\\n\":(t+=\" cA=true\",void 0!==l.pathLen&&(t+=\", pathLen=\"+l.pathLen),t+=\"\\n\")}else if(\"keyUsage\"===c)t+=\" \"+this.getExtKeyUsageString()+\"\\n\";else if(\"subjectKeyIdentifier\"===c)t+=\" \"+this.getExtSubjectKeyIdentifier().kid.hex+\"\\n\";else if(\"authorityKeyIdentifier\"===c){var f=this.getExtAuthorityKeyIdentifier();void 0!==f.kid&&(t+=\" kid=\"+f.kid.hex+\"\\n\")}else{if(\"extKeyUsage\"===c)t+=\" \"+this.getExtExtKeyUsage().array.join(\", \")+\"\\n\";else if(\"subjectAltName\"===c)t+=\" \"+n(this.getExtSubjectAltName())+\"\\n\";else if(\"cRLDistributionPoints\"===c)t+=o(this.getExtCRLDistributionPoints());else if(\"authorityInfoAccess\"===c)t+=s(this.getExtAuthorityInfoAccess());else\"certificatePolicies\"===c&&(t+=i(this.getExtCertificatePolicies()))}}}return t+=\"signature algorithm: \"+this.getSignatureAlgorithmName()+\"\\n\",t+=\"signature: \"+this.getSignatureValueHex().substr(0,16)+\"...\\n\"},\"string\"==typeof t&&(-1!=t.indexOf(\"-----BEGIN\")?this.readCertPEM(t):br.lang.String.isHex(t)&&this.readCertHex(t))}He.prototype.sign=function(t,e){var r=function t(r){return br.crypto.Util.hashString(r,e)}(t);return this.signWithMessageHash(r,e)},He.prototype.signWithMessageHash=function(t,e){var r=je(br.crypto.Util.getPaddedDigestInfoHex(t,e,this.n.bitLength()),16);return en(this.doPrivate(r).toString(16),this.n.bitLength())},He.prototype.signPSS=function(t,e,r){var n=function t(r){return br.crypto.Util.hashHex(r,e)}(Ur(t));return void 0===r&&(r=-1),this.signWithMessageHashPSS(n,e,r)},He.prototype.signWithMessageHashPSS=function(t,e,r){var n,i=Nr(t),o=i.length,s=this.n.bitLength()-1,a=Math.ceil(s/8),u=function t(r){return br.crypto.Util.hashHex(r,e)};if(-1===r||void 0===r)r=o;else if(-2===r)r=a-o-2;else if(r<-2)throw new Error(\"invalid salt length\");if(a<o+r+2)throw new Error(\"data too long\");var c=\"\";r>0&&(c=new Array(r),(new Oe).nextBytes(c),c=String.fromCharCode.apply(String,c));var h=Nr(u(Ur(\"\\0\\0\\0\\0\\0\\0\\0\\0\"+i+c))),l=[];for(n=0;n<a-r-o-2;n+=1)l[n]=0;var f=String.fromCharCode.apply(String,l)+\"\u0001\"+c,g=rn(h,f.length,u),d=[];for(n=0;n<f.length;n+=1)d[n]=f.charCodeAt(n)^g.charCodeAt(n);var p=65280>>8*a-s&255;for(d[0]&=~p,n=0;n<o;n++)d.push(h.charCodeAt(n));return d.push(188),en(this.doPrivate(new F(d)).toString(16),this.n.bitLength())},He.prototype.verify=function(t,e){var r=je(e=(e=e.replace(tn,\"\")).replace(/[ \\n]+/g,\"\"),16);if(r.bitLength()>this.n.bitLength())return 0;var n=nn(this.doPublic(r).toString(16).replace(/^1f+00/,\"\"));if(0==n.length)return!1;var i=n[0];return n[1]==function t(e){return br.crypto.Util.hashString(e,i)}(t)},He.prototype.verifyWithMessageHash=function(t,e){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var r=je(e,16);if(r.bitLength()>this.n.bitLength())return 0;var n=nn(this.doPublic(r).toString(16).replace(/^1f+00/,\"\"));if(0==n.length)return!1;n[0];return n[1]==t},He.prototype.verifyPSS=function(t,e,r,n){var i=function t(e){return br.crypto.Util.hashHex(e,r)}(Ur(t));return void 0===n&&(n=-1),this.verifyWithMessageHashPSS(i,e,r,n)},He.prototype.verifyWithMessageHashPSS=function(t,e,r,n){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var i,o=new F(e,16),s=function t(e){return br.crypto.Util.hashHex(e,r)},a=Nr(t),u=a.length,c=this.n.bitLength()-1,h=Math.ceil(c/8);if(-1===n||void 0===n)n=u;else if(-2===n)n=h-u-2;else if(n<-2)throw new Error(\"invalid salt length\");if(h<u+n+2)throw new Error(\"data too long\");var l=this.doPublic(o).toByteArray();for(i=0;i<l.length;i+=1)l[i]&=255;for(;l.length<h;)l.unshift(0);if(188!==l[h-1])throw new Error(\"encoded message does not end in 0xbc\");var f=(l=String.fromCharCode.apply(String,l)).substr(0,h-u-1),g=l.substr(f.length,u),d=65280>>8*h-c&255;if(0!=(f.charCodeAt(0)&d))throw new Error(\"bits beyond keysize not zero\");var p=rn(g,f.length,s),v=[];for(i=0;i<f.length;i+=1)v[i]=f.charCodeAt(i)^p.charCodeAt(i);v[0]&=~d;var y=h-u-n-2;for(i=0;i<y;i+=1)if(0!==v[i])throw new Error(\"leftmost octets not zero\");if(1!==v[y])throw new Error(\"0x01 marker not found\");return g===Nr(s(Ur(\"\\0\\0\\0\\0\\0\\0\\0\\0\"+a+String.fromCharCode.apply(String,v.slice(-n)))))},He.SALT_LEN_HLEN=-1,He.SALT_LEN_MAX=-2,He.SALT_LEN_RECOVER=-2,on.hex2dn=function(t,e){if(void 0===e&&(e=0),\"30\"!==t.substr(e,2))throw new Error(\"malformed DN\");for(var r=new Array,n=Er.getChildIdx(t,e),i=0;i<n.length;i++)r.push(on.hex2rdn(t,n[i]));return\"/\"+(r=r.map((function(t){return t.replace(\"/\",\"\\\\/\")}))).join(\"/\")},on.hex2rdn=function(t,e){if(void 0===e&&(e=0),\"31\"!==t.substr(e,2))throw new Error(\"malformed RDN\");for(var r=new Array,n=Er.getChildIdx(t,e),i=0;i<n.length;i++)r.push(on.hex2attrTypeValue(t,n[i]));return(r=r.map((function(t){return t.replace(\"+\",\"\\\\+\")}))).join(\"+\")},on.hex2attrTypeValue=function(t,e){var r=Er,n=r.getV;if(void 0===e&&(e=0),\"30\"!==t.substr(e,2))throw new Error(\"malformed attribute type and value\");var i=r.getChildIdx(t,e);2!==i.length||t.substr(i[0],2);var o=n(t,i[0]),s=br.asn1.ASN1Util.oidHexToInt(o);return br.asn1.x509.OID.oid2atype(s)+\"=\"+Nr(n(t,i[1]))},on.getPublicKeyFromCertHex=function(t){var e=new on;return e.readCertHex(t),e.getPublicKey()},on.getPublicKeyFromCertPEM=function(t){var e=new on;return e.readCertPEM(t),e.getPublicKey()},on.getPublicKeyInfoPropOfCertPEM=function(t){var e,r,n=Er.getVbyList,i={};return i.algparam=null,(e=new on).readCertPEM(t),r=e.getPublicKeyHex(),i.keyhex=n(r,0,[1],\"03\").substr(2),i.algoid=n(r,0,[0,0],\"06\"),\"2a8648ce3d0201\"===i.algoid&&(i.algparam=n(r,0,[0,1],\"06\")),i},on.KEYUSAGE_NAME=[\"digitalSignature\",\"nonRepudiation\",\"keyEncipherment\",\"dataEncipherment\",\"keyAgreement\",\"keyCertSign\",\"cRLSign\",\"encipherOnly\",\"decipherOnly\"],void 0!==br&&br||(e.KJUR=br={}),void 0!==br.jws&&br.jws||(br.jws={}),br.jws.JWS=function(){var t=br.jws.JWS.isSafeJSONString;this.parseJWS=function(e,r){if(void 0===this.parsedJWS||!r&&void 0===this.parsedJWS.sigvalH){var n=e.match(/^([^.]+)\\.([^.]+)\\.([^.]+)$/);if(null==n)throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\";var i=n[1],o=n[2],s=n[3],a=i+\".\"+o;if(this.parsedJWS={},this.parsedJWS.headB64U=i,this.parsedJWS.payloadB64U=o,this.parsedJWS.sigvalB64U=s,this.parsedJWS.si=a,!r){var u=Ir(s),c=je(u,16);this.parsedJWS.sigvalH=u,this.parsedJWS.sigvalBI=c}var h=Fr(i),l=Fr(o);if(this.parsedJWS.headS=h,this.parsedJWS.payloadS=l,!t(h,this.parsedJWS,\"headP\"))throw\"malformed JSON string for JWS Head: \"+h}}},br.jws.JWS.sign=function(t,e,n,i,o){var s,a,u,c=br,h=c.jws.JWS,l=h.readSafeJSONString,f=h.isSafeJSONString,g=c.crypto,d=(g.ECDSA,g.Mac),p=g.Signature,v=JSON;if(\"string\"!=typeof e&&\"object\"!=(void 0===e?\"undefined\":r(e)))throw\"spHeader must be JSON string or object: \"+e;if(\"object\"==(void 0===e?\"undefined\":r(e))&&(a=e,s=v.stringify(a)),\"string\"==typeof e){if(!f(s=e))throw\"JWS Head is not safe JSON string: \"+s;a=l(s)}if(u=n,\"object\"==(void 0===n?\"undefined\":r(n))&&(u=v.stringify(n)),\"\"!=t&&null!=t||void 0===a.alg||(t=a.alg),\"\"!=t&&null!=t&&void 0===a.alg&&(a.alg=t,s=v.stringify(a)),t!==a.alg)throw\"alg and sHeader.alg doesn't match: \"+t+\"!=\"+a.alg;var y=null;if(void 0===h.jwsalg2sigalg[t])throw\"unsupported alg name: \"+t;y=h.jwsalg2sigalg[t];var m=wr(s)+\".\"+wr(u),_=\"\";if(\"Hmac\"==y.substr(0,4)){if(void 0===i)throw\"mac key shall be specified for HS* alg\";var S=new d({alg:y,prov:\"cryptojs\",pass:i});S.updateString(m),_=S.doFinal()}else if(-1!=y.indexOf(\"withECDSA\")){(w=new p({alg:y})).init(i,o),w.updateString(m);var b=w.sign();_=br.crypto.ECDSA.asn1SigToConcatSig(b)}else{var w;if(\"none\"!=y)(w=new p({alg:y})).init(i,o),w.updateString(m),_=w.sign()}return m+\".\"+Rr(_)},br.jws.JWS.verify=function(t,e,n){var i,o=br,s=o.jws.JWS,a=s.readSafeJSONString,u=o.crypto,c=u.ECDSA,h=u.Mac,l=u.Signature;void 0!==r(He)&&(i=He);var f=t.split(\".\");if(3!==f.length)return!1;var g=f[0]+\".\"+f[1],d=Ir(f[2]),p=a(Fr(f[0])),v=null,y=null;if(void 0===p.alg)throw\"algorithm not specified in header\";if((y=(v=p.alg).substr(0,2),null!=n&&\"[object Array]\"===Object.prototype.toString.call(n)&&n.length>0)&&-1==(\":\"+n.join(\":\")+\":\").indexOf(\":\"+v+\":\"))throw\"algorithm '\"+v+\"' not accepted in the list\";if(\"none\"!=v&&null===e)throw\"key shall be specified to verify.\";if(\"string\"==typeof e&&-1!=e.indexOf(\"-----BEGIN \")&&(e=Zr.getKey(e)),!(\"RS\"!=y&&\"PS\"!=y||e instanceof i))throw\"key shall be a RSAKey obj for RS* and PS* algs\";if(\"ES\"==y&&!(e instanceof c))throw\"key shall be a ECDSA obj for ES* algs\";var m=null;if(void 0===s.jwsalg2sigalg[p.alg])throw\"unsupported alg name: \"+v;if(\"none\"==(m=s.jwsalg2sigalg[v]))throw\"not supported\";if(\"Hmac\"==m.substr(0,4)){if(void 0===e)throw\"hexadecimal key shall be specified for HMAC\";var _=new h({alg:m,pass:e});return _.updateString(g),d==_.doFinal()}if(-1!=m.indexOf(\"withECDSA\")){var S,b=null;try{b=c.concatSigToASN1Sig(d)}catch(t){return!1}return(S=new l({alg:m})).init(e),S.updateString(g),S.verify(b)}return(S=new l({alg:m})).init(e),S.updateString(g),S.verify(d)},br.jws.JWS.parse=function(t){var e,r,n,i=t.split(\".\"),o={};if(2!=i.length&&3!=i.length)throw\"malformed sJWS: wrong number of '.' splitted elements\";return e=i[0],r=i[1],3==i.length&&(n=i[2]),o.headerObj=br.jws.JWS.readSafeJSONString(Fr(e)),o.payloadObj=br.jws.JWS.readSafeJSONString(Fr(r)),o.headerPP=JSON.stringify(o.headerObj,null,\" \"),null==o.payloadObj?o.payloadPP=Fr(r):o.payloadPP=JSON.stringify(o.payloadObj,null,\" \"),void 0!==n&&(o.sigHex=Ir(n)),o},br.jws.JWS.verifyJWT=function(t,e,n){var i=br.jws,o=i.JWS,s=o.readSafeJSONString,a=o.inArray,u=o.includedArray,c=t.split(\".\"),h=c[0],l=c[1],f=(Ir(c[2]),s(Fr(h))),g=s(Fr(l));if(void 0===f.alg)return!1;if(void 0===n.alg)throw\"acceptField.alg shall be specified\";if(!a(f.alg,n.alg))return!1;if(void 0!==g.iss&&\"object\"===r(n.iss)&&!a(g.iss,n.iss))return!1;if(void 0!==g.sub&&\"object\"===r(n.sub)&&!a(g.sub,n.sub))return!1;if(void 0!==g.aud&&\"object\"===r(n.aud))if(\"string\"==typeof g.aud){if(!a(g.aud,n.aud))return!1}else if(\"object\"==r(g.aud)&&!u(g.aud,n.aud))return!1;var d=i.IntDate.getNow();return void 0!==n.verifyAt&&\"number\"==typeof n.verifyAt&&(d=n.verifyAt),void 0!==n.gracePeriod&&\"number\"==typeof n.gracePeriod||(n.gracePeriod=0),!(void 0!==g.exp&&\"number\"==typeof g.exp&&g.exp+n.gracePeriod<d)&&(!(void 0!==g.nbf&&\"number\"==typeof g.nbf&&d<g.nbf-n.gracePeriod)&&(!(void 0!==g.iat&&\"number\"==typeof g.iat&&d<g.iat-n.gracePeriod)&&((void 0===g.jti||void 0===n.jti||g.jti===n.jti)&&!!o.verify(t,e,n.alg))))},br.jws.JWS.includedArray=function(t,e){var n=br.jws.JWS.inArray;if(null===t)return!1;if(\"object\"!==(void 0===t?\"undefined\":r(t)))return!1;if(\"number\"!=typeof t.length)return!1;for(var i=0;i<t.length;i++)if(!n(t[i],e))return!1;return!0},br.jws.JWS.inArray=function(t,e){if(null===e)return!1;if(\"object\"!==(void 0===e?\"undefined\":r(e)))return!1;if(\"number\"!=typeof e.length)return!1;for(var n=0;n<e.length;n++)if(e[n]==t)return!0;return!1},br.jws.JWS.jwsalg2sigalg={HS256:\"HmacSHA256\",HS384:\"HmacSHA384\",HS512:\"HmacSHA512\",RS256:\"SHA256withRSA\",RS384:\"SHA384withRSA\",RS512:\"SHA512withRSA\",ES256:\"SHA256withECDSA\",ES384:\"SHA384withECDSA\",PS256:\"SHA256withRSAandMGF1\",PS384:\"SHA384withRSAandMGF1\",PS512:\"SHA512withRSAandMGF1\",none:\"none\"},br.jws.JWS.isSafeJSONString=function(t,e,n){var i=null;try{return\"object\"!=(void 0===(i=Sr(t))?\"undefined\":r(i))||i.constructor===Array?0:(e&&(e[n]=i),1)}catch(t){return 0}},br.jws.JWS.readSafeJSONString=function(t){var e=null;try{return\"object\"!=(void 0===(e=Sr(t))?\"undefined\":r(e))||e.constructor===Array?null:e}catch(t){return null}},br.jws.JWS.getEncodedSignatureValueFromJWS=function(t){var e=t.match(/^[^.]+\\.[^.]+\\.([^.]+)$/);if(null==e)throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\";return e[1]},br.jws.JWS.getJWKthumbprint=function(t){if(\"RSA\"!==t.kty&&\"EC\"!==t.kty&&\"oct\"!==t.kty)throw\"unsupported algorithm for JWK Thumprint\";var e=\"{\";if(\"RSA\"===t.kty){if(\"string\"!=typeof t.n||\"string\"!=typeof t.e)throw\"wrong n and e value for RSA key\";e+='\"e\":\"'+t.e+'\",',e+='\"kty\":\"'+t.kty+'\",',e+='\"n\":\"'+t.n+'\"}'}else if(\"EC\"===t.kty){if(\"string\"!=typeof t.crv||\"string\"!=typeof t.x||\"string\"!=typeof t.y)throw\"wrong crv, x and y value for EC key\";e+='\"crv\":\"'+t.crv+'\",',e+='\"kty\":\"'+t.kty+'\",',e+='\"x\":\"'+t.x+'\",',e+='\"y\":\"'+t.y+'\"}'}else if(\"oct\"===t.kty){if(\"string\"!=typeof t.k)throw\"wrong k value for oct(symmetric) key\";e+='\"kty\":\"'+t.kty+'\",',e+='\"k\":\"'+t.k+'\"}'}var r=Ur(e);return Rr(br.crypto.Util.hashHex(r,\"sha256\"))},br.jws.IntDate={},br.jws.IntDate.get=function(t){var e=br.jws.IntDate,r=e.getNow,n=e.getZulu;if(\"now\"==t)return r();if(\"now + 1hour\"==t)return r()+3600;if(\"now + 1day\"==t)return r()+86400;if(\"now + 1month\"==t)return r()+2592e3;if(\"now + 1year\"==t)return r()+31536e3;if(t.match(/Z$/))return n(t);if(t.match(/^[0-9]+$/))return parseInt(t);throw\"unsupported format: \"+t},br.jws.IntDate.getZulu=function(t){return Kr(t)},br.jws.IntDate.getNow=function(){return~~(new Date/1e3)},br.jws.IntDate.intDate2UTCString=function(t){return new Date(1e3*t).toUTCString()},br.jws.IntDate.intDate2Zulu=function(t){var e=new Date(1e3*t);return(\"0000\"+e.getUTCFullYear()).slice(-4)+(\"00\"+(e.getUTCMonth()+1)).slice(-2)+(\"00\"+e.getUTCDate()).slice(-2)+(\"00\"+e.getUTCHours()).slice(-2)+(\"00\"+e.getUTCMinutes()).slice(-2)+(\"00\"+e.getUTCSeconds()).slice(-2)+\"Z\"},e.SecureRandom=Oe,e.rng_seed_time=Ie,e.BigInteger=F,e.RSAKey=He;var sn=br.crypto.EDSA;e.EDSA=sn;var an=br.crypto.DSA;e.DSA=an;var un=br.crypto.Signature;e.Signature=un;var cn=br.crypto.MessageDigest;e.MessageDigest=cn;var hn=br.crypto.Mac;e.Mac=hn;var ln=br.crypto.Cipher;e.Cipher=ln,e.KEYUTIL=Zr,e.ASN1HEX=Er,e.X509=on,e.CryptoJS=y,e.b64tohex=b,e.b64toBA=w,e.stoBA=xr,e.BAtos=Ar,e.BAtohex=kr,e.stohex=Pr,e.stob64=function fn(t){return S(Pr(t))},e.stob64u=function gn(t){return Cr(S(Pr(t)))},e.b64utos=function dn(t){return Ar(w(Tr(t)))},e.b64tob64u=Cr,e.b64utob64=Tr,e.hex2b64=S,e.hextob64u=Rr,e.b64utohex=Ir,e.utf8tob64u=wr,e.b64utoutf8=Fr,e.utf8tob64=function pn(t){return S(qr(Gr(t)))},e.b64toutf8=function vn(t){return decodeURIComponent(Jr(b(t)))},e.utf8tohex=Dr,e.hextoutf8=Lr,e.hextorstr=Nr,e.rstrtohex=Ur,e.hextob64=Br,e.hextob64nl=Or,e.b64nltohex=jr,e.hextopem=Mr,e.pemtohex=Hr,e.hextoArrayBuffer=function yn(t){if(t.length%2!=0)throw\"input is not even length\";if(null==t.match(/^[0-9A-Fa-f]+$/))throw\"input is not hexadecimal\";for(var e=new ArrayBuffer(t.length/2),r=new DataView(e),n=0;n<t.length/2;n++)r.setUint8(n,parseInt(t.substr(2*n,2),16));return e},e.ArrayBuffertohex=function mn(t){for(var e=\"\",r=new DataView(t),n=0;n<t.byteLength;n++)e+=(\"00\"+r.getUint8(n).toString(16)).slice(-2);return e},e.zulutomsec=Vr,e.zulutosec=Kr,e.zulutodate=function _n(t){return new Date(Vr(t))},e.datetozulu=function Sn(t,e,r){var n,i=t.getUTCFullYear();if(e){if(i<1950||2049<i)throw\"not proper year for UTCTime: \"+i;n=(\"\"+i).slice(-2)}else n=(\"000\"+i).slice(-4);if(n+=(\"0\"+(t.getUTCMonth()+1)).slice(-2),n+=(\"0\"+t.getUTCDate()).slice(-2),n+=(\"0\"+t.getUTCHours()).slice(-2),n+=(\"0\"+t.getUTCMinutes()).slice(-2),n+=(\"0\"+t.getUTCSeconds()).slice(-2),r){var o=t.getUTCMilliseconds();0!==o&&(n+=\".\"+(o=(o=(\"00\"+o).slice(-3)).replace(/0+$/g,\"\")))}return n+=\"Z\"},e.uricmptohex=qr,e.hextouricmp=Jr,e.ipv6tohex=Wr,e.hextoipv6=zr,e.hextoip=Yr,e.iptohex=function bn(t){var e=\"malformed IP address\";if(!(t=t.toLowerCase(t)).match(/^[0-9.]+$/)){if(t.match(/^[0-9a-f:]+$/)&&-1!==t.indexOf(\":\"))return Wr(t);throw e}var r=t.split(\".\");if(4!==r.length)throw e;var n=\"\";try{for(var i=0;i<4;i++){n+=(\"0\"+parseInt(r[i]).toString(16)).slice(-2)}return n}catch(t){throw e}},e.encodeURIComponentAll=Gr,e.newline_toUnix=function wn(t){return t=t.replace(/\\r\\n/gm,\"\\n\")},e.newline_toDos=function Fn(t){return t=(t=t.replace(/\\r\\n/gm,\"\\n\")).replace(/\\n/gm,\"\\r\\n\")},e.hextoposhex=$r,e.intarystrtohex=function En(t){t=(t=(t=t.replace(/^\\s*\\[\\s*/,\"\")).replace(/\\s*\\]\\s*$/,\"\")).replace(/\\s*/g,\"\");try{return t.split(/,/).map((function(t,e,r){var n=parseInt(t);if(n<0||255<n)throw\"integer not in range 0-255\";return(\"00\"+n.toString(16)).slice(-2)})).join(\"\")}catch(t){throw\"malformed integer array string: \"+t}},e.strdiffidx=function t(e,r){var n=e.length;e.length>r.length&&(n=r.length);for(var i=0;i<n;i++)if(e.charCodeAt(i)!=r.charCodeAt(i))return i;return e.length!=r.length?n:-1},e.KJUR=br;var xn=br.crypto;e.crypto=xn;var An=br.asn1;e.asn1=An;var kn=br.jws;e.jws=kn;var Pn=br.lang;e.lang=Pn}).call(this,r(28).Buffer)},function(t,e,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\n * @license MIT\n */\nvar n=r(30),i=r(31),o=r(32);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()<e)throw new RangeError(\"Invalid typed array length\");return u.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=u.prototype:(null===t&&(t=new u(e)),t.length=e),t}function u(t,e,r){if(!(u.TYPED_ARRAY_SUPPORT||this instanceof u))return new u(t,e,r);if(\"number\"==typeof t){if(\"string\"==typeof e)throw new Error(\"If encoding is specified then the first argument must be a string\");return l(this,t)}return c(this,t,e,r)}function c(t,e,r,n){if(\"number\"==typeof e)throw new TypeError('\"value\" argument must not be a number');return\"undefined\"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function i(t,e,r,n){if(e.byteLength,r<0||e.byteLength<r)throw new RangeError(\"'offset' is out of bounds\");if(e.byteLength<r+(n||0))throw new RangeError(\"'length' is out of bounds\");e=void 0===r&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,r):new Uint8Array(e,r,n);u.TYPED_ARRAY_SUPPORT?(t=e).__proto__=u.prototype:t=f(t,e);return t}(t,e,r,n):\"string\"==typeof e?function s(t,e,r){\"string\"==typeof r&&\"\"!==r||(r=\"utf8\");if(!u.isEncoding(r))throw new TypeError('\"encoding\" must be a valid string encoding');var n=0|d(e,r),i=(t=a(t,n)).write(e,r);i!==n&&(t=t.slice(0,i));return t}(t,e,r):function c(t,e){if(u.isBuffer(e)){var r=0|g(e.length);return 0===(t=a(t,r)).length||e.copy(t,0,0,r),t}if(e){if(\"undefined\"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||\"length\"in e)return\"number\"!=typeof e.length||function n(t){return t!=t}(e.length)?a(t,0):f(t,e);if(\"Buffer\"===e.type&&o(e.data))return f(t,e.data)}throw new TypeError(\"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\")}(t,e)}function h(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be a number');if(t<0)throw new RangeError('\"size\" argument must not be negative')}function l(t,e){if(h(e),t=a(t,e<0?0:0|g(e)),!u.TYPED_ARRAY_SUPPORT)for(var r=0;r<e;++r)t[r]=0;return t}function f(t,e){var r=e.length<0?0:0|g(e.length);t=a(t,r);for(var n=0;n<r;n+=1)t[n]=255&e[n];return t}function g(t){if(t>=s())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+s().toString(16)+\" bytes\");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;\"string\"!=typeof t&&(t=\"\"+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return K(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return q(t).length;default:if(n)return K(t).length;e=(\"\"+e).toLowerCase(),n=!0}}function p(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return I(this,e,r);case\"utf8\":case\"utf-8\":return A(this,e,r);case\"ascii\":return T(this,e,r);case\"latin1\":case\"binary\":return R(this,e,r);case\"base64\":return x(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return D(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function v(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function y(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:m(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):m(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function m(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var h=-1;for(o=r;o<a;o++)if(c(t,o)===c(e,-1===h?0:o-h)){if(-1===h&&(h=o),o-h+1===u)return h*s}else-1!==h&&(o-=o-h),h=-1}else for(r+u>a&&(r=a-u),o=r;o>=0;o--){for(var l=!0,f=0;f<u;f++)if(c(t,o+f)!==c(e,f)){l=!1;break}if(l)return o}return-1}function _(t,e,r,n){r=Number(r)||0;var i=t.length-r;n?(n=Number(n))>i&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError(\"Invalid hex string\");n>o/2&&(n=o/2);for(var s=0;s<n;++s){var a=parseInt(e.substr(2*s,2),16);if(isNaN(a))return s;t[r+s]=a}return s}function S(t,e,r,n){return J(K(e,t.length-r),t,r,n)}function b(t,e,r,n){return J(function i(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function w(t,e,r,n){return b(t,e,r,n)}function F(t,e,r,n){return J(q(e),t,r,n)}function E(t,e,r,n){return J(function i(t,e){for(var r,n,i,o=[],s=0;s<t.length&&!((e-=2)<0);++s)n=(r=t.charCodeAt(s))>>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function x(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function A(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i<r;){var o,s,a,u,c=t[i],h=null,l=c>239?4:c>223?3:c>191?2:1;if(i+l<=r)switch(l){case 1:c<128&&(h=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(h=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(h=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(h=u)}null===h?(h=65533,l=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),i+=l}return function f(t){var e=t.length;if(e<=C)return String.fromCharCode.apply(String,t);var r=\"\",n=0;for(;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=C));return r}(n)}e.Buffer=u,e.SlowBuffer=function k(t){+t!=t&&(t=0);return u.alloc(+t)},e.INSPECT_MAX_BYTES=50,u.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function P(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&\"function\"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=s(),u.poolSize=8192,u._augment=function(t){return t.__proto__=u.prototype,t},u.from=function(t,e,r){return c(null,t,e,r)},u.TYPED_ARRAY_SUPPORT&&(u.prototype.__proto__=Uint8Array.prototype,u.__proto__=Uint8Array,\"undefined\"!=typeof Symbol&&Symbol.species&&u[Symbol.species]===u&&Object.defineProperty(u,Symbol.species,{value:null,configurable:!0})),u.alloc=function(t,e,r){return function n(t,e,r,i){return h(e),e<=0?a(t,e):void 0!==r?\"string\"==typeof i?a(t,e).fill(r,i):a(t,e).fill(r):a(t,e)}(null,t,e,r)},u.allocUnsafe=function(t){return l(null,t)},u.allocUnsafeSlow=function(t){return l(null,t)},u.isBuffer=function t(e){return!(null==e||!e._isBuffer)},u.compare=function t(e,r){if(!u.isBuffer(e)||!u.isBuffer(r))throw new TypeError(\"Arguments must be Buffers\");if(e===r)return 0;for(var n=e.length,i=r.length,o=0,s=Math.min(n,i);o<s;++o)if(e[o]!==r[o]){n=e[o],i=r[o];break}return n<i?-1:i<n?1:0},u.isEncoding=function t(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},u.concat=function t(e,r){if(!o(e))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===e.length)return u.alloc(0);var n;if(void 0===r)for(r=0,n=0;n<e.length;++n)r+=e[n].length;var i=u.allocUnsafe(r),s=0;for(n=0;n<e.length;++n){var a=e[n];if(!u.isBuffer(a))throw new TypeError('\"list\" argument must be an Array of Buffers');a.copy(i,s),s+=a.length}return i},u.byteLength=d,u.prototype._isBuffer=!0,u.prototype.swap16=function t(){var e=this.length;if(e%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var r=0;r<e;r+=2)v(this,r,r+1);return this},u.prototype.swap32=function t(){var e=this.length;if(e%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var r=0;r<e;r+=4)v(this,r,r+3),v(this,r+1,r+2);return this},u.prototype.swap64=function t(){var e=this.length;if(e%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var r=0;r<e;r+=8)v(this,r,r+7),v(this,r+1,r+6),v(this,r+2,r+5),v(this,r+3,r+4);return this},u.prototype.toString=function t(){var e=0|this.length;return 0===e?\"\":0===arguments.length?A(this,0,e):p.apply(this,arguments)},u.prototype.equals=function t(e){if(!u.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===u.compare(this,e)},u.prototype.inspect=function t(){var r=\"\",n=e.INSPECT_MAX_BYTES;return this.length>0&&(r=this.toString(\"hex\",0,n).match(/.{2}/g).join(\" \"),this.length>n&&(r+=\" ... \")),\"<Buffer \"+r+\">\"},u.prototype.compare=function t(e,r,n,i,o){if(!u.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===r&&(r=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),r<0||n>e.length||i<0||o>this.length)throw new RangeError(\"out of range index\");if(i>=o&&r>=n)return 0;if(i>=o)return-1;if(r>=n)return 1;if(this===e)return 0;for(var s=(o>>>=0)-(i>>>=0),a=(n>>>=0)-(r>>>=0),c=Math.min(s,a),h=this.slice(i,o),l=e.slice(r,n),f=0;f<c;++f)if(h[f]!==l[f]){s=h[f],a=l[f];break}return s<a?-1:a<s?1:0},u.prototype.includes=function t(e,r,n){return-1!==this.indexOf(e,r,n)},u.prototype.indexOf=function t(e,r,n){return y(this,e,r,n,!0)},u.prototype.lastIndexOf=function t(e,r,n){return y(this,e,r,n,!1)},u.prototype.write=function t(e,r,n,i){if(void 0===r)i=\"utf8\",n=this.length,r=0;else if(void 0===n&&\"string\"==typeof r)i=r,n=this.length,r=0;else{if(!isFinite(r))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");r|=0,isFinite(n)?(n|=0,void 0===i&&(i=\"utf8\")):(i=n,n=void 0)}var o=this.length-r;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||r<0)||r>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");i||(i=\"utf8\");for(var s=!1;;)switch(i){case\"hex\":return _(this,e,r,n);case\"utf8\":case\"utf-8\":return S(this,e,r,n);case\"ascii\":return b(this,e,r,n);case\"latin1\":case\"binary\":return w(this,e,r,n);case\"base64\":return F(this,e,r,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return E(this,e,r,n);default:if(s)throw new TypeError(\"Unknown encoding: \"+i);i=(\"\"+i).toLowerCase(),s=!0}},u.prototype.toJSON=function t(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function T(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(127&t[i]);return n}function R(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function I(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var i=\"\",o=e;o<r;++o)i+=V(t[o]);return i}function D(t,e,r){for(var n=t.slice(e,r),i=\"\",o=0;o<n.length;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function L(t,e,r){if(t%1!=0||t<0)throw new RangeError(\"offset is not uint\");if(t+e>r)throw new RangeError(\"Trying to access beyond buffer length\")}function N(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||e<o)throw new RangeError('\"value\" argument is out of bounds');if(r+n>t.length)throw new RangeError(\"Index out of range\")}function U(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i<o;++i)t[r+i]=(e&255<<8*(n?i:1-i))>>>8*(n?i:1-i)}function B(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i<o;++i)t[r+i]=e>>>8*(n?i:3-i)&255}function O(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function j(t,e,r,n,o){return o||O(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function M(t,e,r,n,o){return o||O(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function t(e,r){var n,i=this.length;if((e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(r=void 0===r?i:~~r)<0?(r+=i)<0&&(r=0):r>i&&(r=i),r<e&&(r=e),u.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,r)).__proto__=u.prototype;else{var o=r-e;n=new u(o,void 0);for(var s=0;s<o;++s)n[s]=this[s+e]}return n},u.prototype.readUIntLE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=this[e],o=1,s=0;++s<r&&(o*=256);)i+=this[e+s]*o;return i},u.prototype.readUIntBE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=this[e+--r],o=1;r>0&&(o*=256);)i+=this[e+--r]*o;return i},u.prototype.readUInt8=function t(e,r){return r||L(e,1,this.length),this[e]},u.prototype.readUInt16LE=function t(e,r){return r||L(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function t(e,r){return r||L(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function t(e,r){return r||L(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function t(e,r){return r||L(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=this[e],o=1,s=0;++s<r&&(o*=256);)i+=this[e+s]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*r)),i},u.prototype.readIntBE=function t(e,r,n){e|=0,r|=0,n||L(e,r,this.length);for(var i=r,o=1,s=this[e+--i];i>0&&(o*=256);)s+=this[e+--i]*o;return s>=(o*=128)&&(s-=Math.pow(2,8*r)),s},u.prototype.readInt8=function t(e,r){return r||L(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function t(e,r){r||L(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function t(e,r){r||L(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function t(e,r){return r||L(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function t(e,r){return r||L(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function t(e,r){return r||L(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function t(e,r){return r||L(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function t(e,r){return r||L(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function t(e,r){return r||L(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function t(e,r,n,i){(e=+e,r|=0,n|=0,i)||N(this,e,r,n,Math.pow(2,8*n)-1,0);var o=1,s=0;for(this[r]=255&e;++s<n&&(o*=256);)this[r+s]=e/o&255;return r+n},u.prototype.writeUIntBE=function t(e,r,n,i){(e=+e,r|=0,n|=0,i)||N(this,e,r,n,Math.pow(2,8*n)-1,0);var o=n-1,s=1;for(this[r+o]=255&e;--o>=0&&(s*=256);)this[r+o]=e/s&255;return r+n},u.prototype.writeUInt8=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=255&e,r+1},u.prototype.writeUInt16LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):U(this,e,r,!0),r+2},u.prototype.writeUInt16BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):U(this,e,r,!1),r+2},u.prototype.writeUInt32LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=255&e):B(this,e,r,!0),r+4},u.prototype.writeUInt32BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):B(this,e,r,!1),r+4},u.prototype.writeIntLE=function t(e,r,n,i){if(e=+e,r|=0,!i){var o=Math.pow(2,8*n-1);N(this,e,r,n,o-1,-o)}var s=0,a=1,u=0;for(this[r]=255&e;++s<n&&(a*=256);)e<0&&0===u&&0!==this[r+s-1]&&(u=1),this[r+s]=(e/a>>0)-u&255;return r+n},u.prototype.writeIntBE=function t(e,r,n,i){if(e=+e,r|=0,!i){var o=Math.pow(2,8*n-1);N(this,e,r,n,o-1,-o)}var s=n-1,a=1,u=0;for(this[r+s]=255&e;--s>=0&&(a*=256);)e<0&&0===u&&0!==this[r+s+1]&&(u=1),this[r+s]=(e/a>>0)-u&255;return r+n},u.prototype.writeInt8=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=255&e,r+1},u.prototype.writeInt16LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):U(this,e,r,!0),r+2},u.prototype.writeInt16BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):U(this,e,r,!1),r+2},u.prototype.writeInt32LE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):B(this,e,r,!0),r+4},u.prototype.writeInt32BE=function t(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):B(this,e,r,!1),r+4},u.prototype.writeFloatLE=function t(e,r,n){return j(this,e,r,!0,n)},u.prototype.writeFloatBE=function t(e,r,n){return j(this,e,r,!1,n)},u.prototype.writeDoubleLE=function t(e,r,n){return M(this,e,r,!0,n)},u.prototype.writeDoubleBE=function t(e,r,n){return M(this,e,r,!1,n)},u.prototype.copy=function t(e,r,n,i){if(n||(n=0),i||0===i||(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===e.length||0===this.length)return 0;if(r<0)throw new RangeError(\"targetStart out of bounds\");if(n<0||n>=this.length)throw new RangeError(\"sourceStart out of bounds\");if(i<0)throw new RangeError(\"sourceEnd out of bounds\");i>this.length&&(i=this.length),e.length-r<i-n&&(i=e.length-r+n);var o,s=i-n;if(this===e&&n<r&&r<i)for(o=s-1;o>=0;--o)e[o+r]=this[o+n];else if(s<1e3||!u.TYPED_ARRAY_SUPPORT)for(o=0;o<s;++o)e[o+r]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+s),r);return s},u.prototype.fill=function t(e,r,n,i){if(\"string\"==typeof e){if(\"string\"==typeof r?(i=r,r=0,n=this.length):\"string\"==typeof n&&(i=n,n=this.length),1===e.length){var o=e.charCodeAt(0);o<256&&(e=o)}if(void 0!==i&&\"string\"!=typeof i)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof i&&!u.isEncoding(i))throw new TypeError(\"Unknown encoding: \"+i)}else\"number\"==typeof e&&(e&=255);if(r<0||this.length<r||this.length<n)throw new RangeError(\"Out of range index\");if(n<=r)return this;var s;if(r>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),\"number\"==typeof e)for(s=r;s<n;++s)this[s]=e;else{var a=u.isBuffer(e)?e:K(new u(e,i).toString()),c=a.length;for(s=0;s<n-r;++s)this[s+r]=a[s%c]}return this};var H=/[^+\\/0-9A-Za-z-_]/g;function V(t){return t<16?\"0\"+t.toString(16):t.toString(16)}function K(t,e){var r;e=e||1/0;for(var n=t.length,i=null,o=[],s=0;s<n;++s){if((r=t.charCodeAt(s))>55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function q(t){return n.toByteArray(function e(t){if((t=function e(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}(t).replace(H,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function J(t,e,r,n){for(var i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(29))},function(t,e){var r;r=function(){return this}();try{r=r||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e,r){\"use strict\";e.byteLength=function n(t){var e=f(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function i(t){var e,r,n=f(t),i=n[0],o=n[1],s=new u(function c(t,e,r){return 3*(e+r)/4-r}(0,i,o)),h=0,l=o>0?i-4:i;for(r=0;r<l;r+=4)e=a[t.charCodeAt(r)]<<18|a[t.charCodeAt(r+1)]<<12|a[t.charCodeAt(r+2)]<<6|a[t.charCodeAt(r+3)],s[h++]=e>>16&255,s[h++]=e>>8&255,s[h++]=255&e;2===o&&(e=a[t.charCodeAt(r)]<<2|a[t.charCodeAt(r+1)]>>4,s[h++]=255&e);1===o&&(e=a[t.charCodeAt(r)]<<10|a[t.charCodeAt(r+1)]<<4|a[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e);return s},e.fromByteArray=function o(t){for(var e,r=t.length,n=r%3,i=[],o=16383,a=0,u=r-n;a<u;a+=o)i.push(g(t,a,a+o>u?u:a+o));1===n?(e=t[r-1],i.push(s[e>>2]+s[e<<4&63]+\"==\")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(s[e>>10]+s[e>>4&63]+s[e<<2&63]+\"=\"));return i.join(\"\")};for(var s=[],a=[],u=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,c=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",h=0,l=c.length;h<l;++h)s[h]=c[h],a[c.charCodeAt(h)]=h;function f(t){var e=t.length;if(e%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function g(t,e,r){for(var n,i,o=[],a=e;a<r;a+=3)n=(t[a]<<16&16711680)+(t[a+1]<<8&65280)+(255&t[a+2]),o.push(s[(i=n)>>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return o.join(\"\")}a[\"-\".charCodeAt(0)]=62,a[\"_\".charCodeAt(0)]=63},function(t,e){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\ne.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<<a)-1,c=u>>1,h=-7,l=r?i-1:0,f=r?-1:1,g=t[e+l];for(l+=f,o=g&(1<<-h)-1,g>>=-h,h+=a;h>0;o=256*o+t[e+l],l+=f,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=n;h>0;s=256*s+t[e+l],l+=f,h-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(g?-1:1);s+=Math.pow(2,n),o-=c}return(g?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,h=(1<<c)-1,l=h>>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:o-1,d=n?1:-1,p=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=h):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+l>=1?f/u:f*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=h?(a=0,s=h):s+l>=1?(a=(e*u-1)*Math.pow(2,i),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,i),s=0));i>=8;t[r+g]=255&a,g+=d,a/=256,i-=8);for(s=s<<i|a,c+=i;c>0;t[r+g]=255&s,g+=d,s/=256,c-=8);t[r+g-d]|=128*p}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function n(t){var e=t.jws,r=t.KeyUtil,n=t.X509,o=t.crypto,s=t.hextob64u,a=t.b64tohex,u=t.AllowedSigningAlgs;return function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.parseJwt=function t(r){i.Log.debug(\"JoseUtil.parseJwt\");try{var n=e.JWS.parse(r);return{header:n.headerObj,payload:n.payloadObj}}catch(t){i.Log.error(t)}},t.validateJwt=function e(o,s,u,c,h,l,f){i.Log.debug(\"JoseUtil.validateJwt\");try{if(\"RSA\"===s.kty)if(s.e&&s.n)s=r.getKey(s);else{if(!s.x5c||!s.x5c.length)return i.Log.error(\"JoseUtil.validateJwt: RSA key missing key material\",s),Promise.reject(new Error(\"RSA key missing key material\"));var g=a(s.x5c[0]);s=n.getPublicKeyFromCertHex(g)}else{if(\"EC\"!==s.kty)return i.Log.error(\"JoseUtil.validateJwt: Unsupported key type\",s&&s.kty),Promise.reject(new Error(s.kty));if(!(s.crv&&s.x&&s.y))return i.Log.error(\"JoseUtil.validateJwt: EC key missing key material\",s),Promise.reject(new Error(\"EC key missing key material\"));s=r.getKey(s)}return t._validateJwt(o,s,u,c,h,l,f)}catch(t){return i.Log.error(t&&t.message||t),Promise.reject(\"JWT validation failed\")}},t.validateJwtAttributes=function e(r,n,o,s,a,u){s||(s=0),a||(a=parseInt(Date.now()/1e3));var c=t.parseJwt(r).payload;if(!c.iss)return i.Log.error(\"JoseUtil._validateJwt: issuer was not provided\"),Promise.reject(new Error(\"issuer was not provided\"));if(c.iss!==n)return i.Log.error(\"JoseUtil._validateJwt: Invalid issuer in token\",c.iss),Promise.reject(new Error(\"Invalid issuer in token: \"+c.iss));if(!c.aud)return i.Log.error(\"JoseUtil._validateJwt: aud was not provided\"),Promise.reject(new Error(\"aud was not provided\"));if(!(c.aud===o||Array.isArray(c.aud)&&c.aud.indexOf(o)>=0))return i.Log.error(\"JoseUtil._validateJwt: Invalid audience in token\",c.aud),Promise.reject(new Error(\"Invalid audience in token: \"+c.aud));if(c.azp&&c.azp!==o)return i.Log.error(\"JoseUtil._validateJwt: Invalid azp in token\",c.azp),Promise.reject(new Error(\"Invalid azp in token: \"+c.azp));if(!u){var h=a+s,l=a-s;if(!c.iat)return i.Log.error(\"JoseUtil._validateJwt: iat was not provided\"),Promise.reject(new Error(\"iat was not provided\"));if(h<c.iat)return i.Log.error(\"JoseUtil._validateJwt: iat is in the future\",c.iat),Promise.reject(new Error(\"iat is in the future: \"+c.iat));if(c.nbf&&h<c.nbf)return i.Log.error(\"JoseUtil._validateJwt: nbf is in the future\",c.nbf),Promise.reject(new Error(\"nbf is in the future: \"+c.nbf));if(!c.exp)return i.Log.error(\"JoseUtil._validateJwt: exp was not provided\"),Promise.reject(new Error(\"exp was not provided\"));if(c.exp<l)return i.Log.error(\"JoseUtil._validateJwt: exp is in the past\",c.exp),Promise.reject(new Error(\"exp is in the past:\"+c.exp))}return Promise.resolve(c)},t._validateJwt=function r(n,o,s,a,c,h,l){return t.validateJwtAttributes(n,s,a,c,h,l).then((function(t){try{return e.JWS.verify(n,o,u)?t:(i.Log.error(\"JoseUtil._validateJwt: signature validation failed\"),Promise.reject(new Error(\"signature validation failed\")))}catch(t){return i.Log.error(t&&t.message||t),Promise.reject(new Error(\"signature validation failed\"))}}))},t.hashString=function t(e,r){try{return o.Util.hashString(e,r)}catch(t){i.Log.error(t)}},t.hexToBase64Url=function t(e){try{return s(e)}catch(t){i.Log.error(t)}},t}()};var i=r(0);t.exports=e.default},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SigninResponse=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(3);function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}e.SigninResponse=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"#\";o(this,t);var n=i.UrlUtility.parseUrlFragment(e,r);this.error=n.error,this.error_description=n.error_description,this.error_uri=n.error_uri,this.code=n.code,this.state=n.state,this.id_token=n.id_token,this.session_state=n.session_state,this.access_token=n.access_token,this.token_type=n.token_type,this.scope=n.scope,this.profile=void 0,this.expires_in=n.expires_in}return n(t,[{key:\"expires_in\",get:function t(){if(this.expires_at){var e=parseInt(Date.now()/1e3);return this.expires_at-e}},set:function t(e){var r=parseInt(e);if(\"number\"==typeof r&&r>0){var n=parseInt(Date.now()/1e3);this.expires_at=n+r}}},{key:\"expired\",get:function t(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:\"scopes\",get:function t(){return(this.scope||\"\").split(\" \")}},{key:\"isOpenIdConnect\",get:function t(){return this.scopes.indexOf(\"openid\")>=0||!!this.id_token}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SignoutRequest=void 0;var n=r(0),i=r(3),o=r(9);e.SignoutRequest=function t(e){var r=e.url,s=e.id_token_hint,a=e.post_logout_redirect_uri,u=e.data,c=e.extraQueryParams,h=e.request_type;if(function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),!r)throw n.Log.error(\"SignoutRequest.ctor: No url passed\"),new Error(\"url\");for(var f in s&&(r=i.UrlUtility.addQueryParam(r,\"id_token_hint\",s)),a&&(r=i.UrlUtility.addQueryParam(r,\"post_logout_redirect_uri\",a),u&&(this.state=new o.State({data:u,request_type:h}),r=i.UrlUtility.addQueryParam(r,\"state\",this.state.id))),c)r=i.UrlUtility.addQueryParam(r,f,c[f]);this.url=r}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SignoutResponse=void 0;var n=r(3);e.SignoutResponse=function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var i=n.UrlUtility.parseUrlFragment(e,\"?\");this.error=i.error,this.error_description=i.error_description,this.error_uri=i.error_uri,this.state=i.state}},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.InMemoryWebStorage=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.InMemoryWebStorage=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._data={}}return t.prototype.getItem=function t(e){return i.Log.debug(\"InMemoryWebStorage.getItem\",e),this._data[e]},t.prototype.setItem=function t(e,r){i.Log.debug(\"InMemoryWebStorage.setItem\",e),this._data[e]=r},t.prototype.removeItem=function t(e){i.Log.debug(\"InMemoryWebStorage.removeItem\",e),delete this._data[e]},t.prototype.key=function t(e){return Object.getOwnPropertyNames(this._data)[e]},n(t,[{key:\"length\",get:function t(){return Object.getOwnPropertyNames(this._data).length}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserManager=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(10),s=r(39),a=r(15),u=r(45),c=r(47),h=r(18),l=r(8),f=r(20),g=r(11),d=r(4);function p(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function v(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.UserManager=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.SilentRenewService,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.SessionMonitor,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:f.TokenRevocationClient,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:g.TokenClient,y=arguments.length>5&&void 0!==arguments[5]?arguments[5]:d.JoseUtil;p(this,e),r instanceof s.UserManagerSettings||(r=new s.UserManagerSettings(r));var m=v(this,t.call(this,r));return m._events=new u.UserManagerEvents(r),m._silentRenewService=new n(m),m.settings.automaticSilentRenew&&(i.Log.debug(\"UserManager.ctor: automaticSilentRenew is configured, setting up silent renew\"),m.startSilentRenew()),m.settings.monitorSession&&(i.Log.debug(\"UserManager.ctor: monitorSession is configured, setting up session monitor\"),m._sessionMonitor=new o(m)),m._tokenRevocationClient=new a(m._settings),m._tokenClient=new l(m._settings),m._joseUtil=y,m}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getUser=function t(){var e=this;return this._loadUser().then((function(t){return t?(i.Log.info(\"UserManager.getUser: user loaded\"),e._events.load(t,!1),t):(i.Log.info(\"UserManager.getUser: user not found in storage\"),null)}))},e.prototype.removeUser=function t(){var e=this;return this.storeUser(null).then((function(){i.Log.info(\"UserManager.removeUser: user removed from storage\"),e._events.unload()}))},e.prototype.signinRedirect=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"si:r\";var r={useReplaceToNavigate:e.useReplaceToNavigate};return this._signinStart(e,this._redirectNavigator,r).then((function(){i.Log.info(\"UserManager.signinRedirect: successful\")}))},e.prototype.signinRedirectCallback=function t(e){return this._signinEnd(e||this._redirectNavigator.url).then((function(t){return t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinRedirectCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinRedirectCallback: no sub\"),t}))},e.prototype.signinPopup=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"si:p\";var r=e.redirect_uri||this.settings.popup_redirect_uri||this.settings.redirect_uri;return r?(e.redirect_uri=r,e.display=\"popup\",this._signin(e,this._popupNavigator,{startUrl:r,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinPopup: signinPopup successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinPopup: no sub\")),t}))):(i.Log.error(\"UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured\"),Promise.reject(new Error(\"No popup_redirect_uri or redirect_uri configured\")))},e.prototype.signinPopupCallback=function t(e){return this._signinCallback(e,this._popupNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinPopupCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinPopupCallback: no sub\")),t})).catch((function(t){i.Log.error(t.message)}))},e.prototype.signinSilent=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r=Object.assign({},r),this._loadUser().then((function(t){return t&&t.refresh_token?(r.refresh_token=t.refresh_token,e._useRefreshToken(r)):(r.request_type=\"si:s\",r.id_token_hint=r.id_token_hint||e.settings.includeIdTokenInSilentRenew&&t&&t.id_token,t&&e._settings.validateSubOnSilentRenew&&(i.Log.debug(\"UserManager.signinSilent, subject prior to silent renew: \",t.profile.sub),r.current_sub=t.profile.sub),e._signinSilentIframe(r))}))},e.prototype._useRefreshToken=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._tokenClient.exchangeRefreshToken(r).then((function(t){return t?t.access_token?e._loadUser().then((function(r){if(r){var n=Promise.resolve();return t.id_token&&(n=e._validateIdTokenFromTokenRefreshToken(r.profile,t.id_token)),n.then((function(){return i.Log.debug(\"UserManager._useRefreshToken: refresh token response success\"),r.id_token=t.id_token||r.id_token,r.access_token=t.access_token,r.refresh_token=t.refresh_token||r.refresh_token,r.expires_in=t.expires_in,e.storeUser(r).then((function(){return e._events.load(r),r}))}))}return null})):(i.Log.error(\"UserManager._useRefreshToken: No access token returned from token endpoint\"),Promise.reject(\"No access token returned from token endpoint\")):(i.Log.error(\"UserManager._useRefreshToken: No response returned from token endpoint\"),Promise.reject(\"No response returned from token endpoint\"))}))},e.prototype._validateIdTokenFromTokenRefreshToken=function t(e,r){var n=this;return this._metadataService.getIssuer().then((function(t){return n.settings.getEpochTime().then((function(o){return n._joseUtil.validateJwtAttributes(r,t,n._settings.client_id,n._settings.clockSkew,o).then((function(t){return t?t.sub!==e.sub?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub\"),Promise.reject(new Error(\"sub in id_token does not match current sub\"))):t.auth_time&&t.auth_time!==e.auth_time?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time\"),Promise.reject(new Error(\"auth_time in id_token does not match original auth_time\"))):t.azp&&t.azp!==e.azp?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp\"),Promise.reject(new Error(\"azp in id_token does not match original azp\"))):!t.azp&&e.azp?(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token\"),Promise.reject(new Error(\"azp not in id_token, but present in original id_token\"))):void 0:(i.Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token\"),Promise.reject(new Error(\"Failed to validate id_token\")))}))}))}))},e.prototype._signinSilentIframe=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return r?(e.redirect_uri=r,e.prompt=e.prompt||\"none\",this._signin(e,this._iframeNavigator,{startUrl:r,silentRequestTimeout:e.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinSilent: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinSilent: no sub\")),t}))):(i.Log.error(\"UserManager.signinSilent: No silent_redirect_uri configured\"),Promise.reject(new Error(\"No silent_redirect_uri configured\")))},e.prototype.signinSilentCallback=function t(e){return this._signinCallback(e,this._iframeNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info(\"UserManager.signinSilentCallback: successful, signed in sub: \",t.profile.sub):i.Log.info(\"UserManager.signinSilentCallback: no sub\")),t}))},e.prototype.signinCallback=function t(e){var r=this;return this.readSigninResponseState(e).then((function(t){var n=t.state;t.response;return\"si:r\"===n.request_type?r.signinRedirectCallback(e):\"si:p\"===n.request_type?r.signinPopupCallback(e):\"si:s\"===n.request_type?r.signinSilentCallback(e):Promise.reject(new Error(\"invalid response_type in state\"))}))},e.prototype.signoutCallback=function t(e,r){var n=this;return this.readSignoutResponseState(e).then((function(t){var i=t.state,o=t.response;return i?\"so:r\"===i.request_type?n.signoutRedirectCallback(e):\"so:p\"===i.request_type?n.signoutPopupCallback(e,r):Promise.reject(new Error(\"invalid response_type in state\")):o}))},e.prototype.querySessionStatus=function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(r=Object.assign({},r)).request_type=\"si:s\";var n=r.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return n?(r.redirect_uri=n,r.prompt=\"none\",r.response_type=r.response_type||this.settings.query_status_response_type,r.scope=r.scope||\"openid\",r.skipUserInfo=!0,this._signinStart(r,this._iframeNavigator,{startUrl:n,silentRequestTimeout:r.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return e.processSigninResponse(t.url).then((function(t){if(i.Log.debug(\"UserManager.querySessionStatus: got signin response\"),t.session_state&&t.profile.sub)return i.Log.info(\"UserManager.querySessionStatus: querySessionStatus success for sub: \",t.profile.sub),{session_state:t.session_state,sub:t.profile.sub,sid:t.profile.sid};i.Log.info(\"querySessionStatus successful, user not authenticated\")})).catch((function(t){if(t.session_state&&e.settings.monitorAnonymousSession&&(\"login_required\"==t.message||\"consent_required\"==t.message||\"interaction_required\"==t.message||\"account_selection_required\"==t.message))return i.Log.info(\"UserManager.querySessionStatus: querySessionStatus success for anonymous user\"),{session_state:t.session_state};throw t}))}))):(i.Log.error(\"UserManager.querySessionStatus: No silent_redirect_uri configured\"),Promise.reject(new Error(\"No silent_redirect_uri configured\")))},e.prototype._signin=function t(e,r){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signinStart(e,r,i).then((function(t){return n._signinEnd(t.url,e)}))},e.prototype._signinStart=function t(e,r){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.prepare(o).then((function(t){return i.Log.debug(\"UserManager._signinStart: got navigator window handle\"),n.createSigninRequest(e).then((function(e){return i.Log.debug(\"UserManager._signinStart: got signin request\"),o.url=e.url,o.id=e.state.id,t.navigate(o)})).catch((function(e){throw t.close&&(i.Log.debug(\"UserManager._signinStart: Error after preparing navigator, closing navigator window\"),t.close()),e}))}))},e.prototype._signinEnd=function t(e){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.processSigninResponse(e).then((function(t){i.Log.debug(\"UserManager._signinEnd: got signin response\");var e=new a.User(t);if(n.current_sub){if(n.current_sub!==e.profile.sub)return i.Log.debug(\"UserManager._signinEnd: current user does not match user returned from signin. sub from signin: \",e.profile.sub),Promise.reject(new Error(\"login_required\"));i.Log.debug(\"UserManager._signinEnd: current user matches user returned from signin\")}return r.storeUser(e).then((function(){return i.Log.debug(\"UserManager._signinEnd: user stored\"),r._events.load(e),e}))}))},e.prototype._signinCallback=function t(e,r){i.Log.debug(\"UserManager._signinCallback\");var n=\"query\"===this._settings.response_mode||!this._settings.response_mode&&l.SigninRequest.isCode(this._settings.response_type)?\"?\":\"#\";return r.callback(e,void 0,n)},e.prototype.signoutRedirect=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"so:r\";var r=e.post_logout_redirect_uri||this.settings.post_logout_redirect_uri;r&&(e.post_logout_redirect_uri=r);var n={useReplaceToNavigate:e.useReplaceToNavigate};return this._signoutStart(e,this._redirectNavigator,n).then((function(){i.Log.info(\"UserManager.signoutRedirect: successful\")}))},e.prototype.signoutRedirectCallback=function t(e){return this._signoutEnd(e||this._redirectNavigator.url).then((function(t){return i.Log.info(\"UserManager.signoutRedirectCallback: successful\"),t}))},e.prototype.signoutPopup=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type=\"so:p\";var r=e.post_logout_redirect_uri||this.settings.popup_post_logout_redirect_uri||this.settings.post_logout_redirect_uri;return e.post_logout_redirect_uri=r,e.display=\"popup\",e.post_logout_redirect_uri&&(e.state=e.state||{}),this._signout(e,this._popupNavigator,{startUrl:r,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(){i.Log.info(\"UserManager.signoutPopup: successful\")}))},e.prototype.signoutPopupCallback=function t(e,r){void 0===r&&\"boolean\"==typeof e&&(r=e,e=null);return this._popupNavigator.callback(e,r,\"?\").then((function(){i.Log.info(\"UserManager.signoutPopupCallback: successful\")}))},e.prototype._signout=function t(e,r){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signoutStart(e,r,i).then((function(t){return n._signoutEnd(t.url)}))},e.prototype._signoutStart=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=this,n=arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.prepare(o).then((function(t){return i.Log.debug(\"UserManager._signoutStart: got navigator window handle\"),r._loadUser().then((function(n){return i.Log.debug(\"UserManager._signoutStart: loaded current user from storage\"),(r._settings.revokeAccessTokenOnSignout?r._revokeInternal(n):Promise.resolve()).then((function(){var s=e.id_token_hint||n&&n.id_token;return s&&(i.Log.debug(\"UserManager._signoutStart: Setting id_token into signout request\"),e.id_token_hint=s),r.removeUser().then((function(){return i.Log.debug(\"UserManager._signoutStart: user removed, creating signout request\"),r.createSignoutRequest(e).then((function(e){return i.Log.debug(\"UserManager._signoutStart: got signout request\"),o.url=e.url,e.state&&(o.id=e.state.id),t.navigate(o)}))}))}))})).catch((function(e){throw t.close&&(i.Log.debug(\"UserManager._signoutStart: Error after preparing navigator, closing navigator window\"),t.close()),e}))}))},e.prototype._signoutEnd=function t(e){return this.processSignoutResponse(e).then((function(t){return i.Log.debug(\"UserManager._signoutEnd: got signout response\"),t}))},e.prototype.revokeAccessToken=function t(){var e=this;return this._loadUser().then((function(t){return e._revokeInternal(t,!0).then((function(r){if(r)return i.Log.debug(\"UserManager.revokeAccessToken: removing token properties from user and re-storing\"),t.access_token=null,t.refresh_token=null,t.expires_at=null,t.token_type=null,e.storeUser(t).then((function(){i.Log.debug(\"UserManager.revokeAccessToken: user stored\"),e._events.load(t)}))}))})).then((function(){i.Log.info(\"UserManager.revokeAccessToken: access token revoked successfully\")}))},e.prototype._revokeInternal=function t(e,r){var n=this;if(e){var o=e.access_token,s=e.refresh_token;return this._revokeAccessTokenInternal(o,r).then((function(t){return n._revokeRefreshTokenInternal(s,r).then((function(e){return t||e||i.Log.debug(\"UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format\"),t||e}))}))}return Promise.resolve(!1)},e.prototype._revokeAccessTokenInternal=function t(e,r){return!e||e.indexOf(\".\")>=0?Promise.resolve(!1):this._tokenRevocationClient.revoke(e,r).then((function(){return!0}))},e.prototype._revokeRefreshTokenInternal=function t(e,r){return e?this._tokenRevocationClient.revoke(e,r,\"refresh_token\").then((function(){return!0})):Promise.resolve(!1)},e.prototype.startSilentRenew=function t(){this._silentRenewService.start()},e.prototype.stopSilentRenew=function t(){this._silentRenewService.stop()},e.prototype._loadUser=function t(){return this._userStore.get(this._userStoreKey).then((function(t){return t?(i.Log.debug(\"UserManager._loadUser: user storageString loaded\"),a.User.fromStorageString(t)):(i.Log.debug(\"UserManager._loadUser: no user storageString\"),null)}))},e.prototype.storeUser=function t(e){if(e){i.Log.debug(\"UserManager.storeUser: storing user\");var r=e.toStorageString();return this._userStore.set(this._userStoreKey,r)}return i.Log.debug(\"storeUser.storeUser: removing user\"),this._userStore.remove(this._userStoreKey)},n(e,[{key:\"_redirectNavigator\",get:function t(){return this.settings.redirectNavigator}},{key:\"_popupNavigator\",get:function t(){return this.settings.popupNavigator}},{key:\"_iframeNavigator\",get:function t(){return this.settings.iframeNavigator}},{key:\"_userStore\",get:function t(){return this.settings.userStore}},{key:\"events\",get:function t(){return this._events}},{key:\"_userStoreKey\",get:function t(){return\"user:\"+this.settings.authority+\":\"+this.settings.client_id}}]),e}(o.OidcClient)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserManagerSettings=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=(r(0),r(5)),o=r(40),s=r(41),a=r(43),u=r(6),c=r(1),h=r(8);function l(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function f(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.UserManagerSettings=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.popup_redirect_uri,i=r.popup_post_logout_redirect_uri,g=r.popupWindowFeatures,d=r.popupWindowTarget,p=r.silent_redirect_uri,v=r.silentRequestTimeout,y=r.automaticSilentRenew,m=void 0!==y&&y,_=r.validateSubOnSilentRenew,S=void 0!==_&&_,b=r.includeIdTokenInSilentRenew,w=void 0===b||b,F=r.monitorSession,E=void 0===F||F,x=r.monitorAnonymousSession,A=void 0!==x&&x,k=r.checkSessionInterval,P=void 0===k?2e3:k,C=r.stopCheckSessionOnError,T=void 0===C||C,R=r.query_status_response_type,I=r.revokeAccessTokenOnSignout,D=void 0!==I&&I,L=r.accessTokenExpiringNotificationTime,N=void 0===L?60:L,U=r.redirectNavigator,B=void 0===U?new o.RedirectNavigator:U,O=r.popupNavigator,j=void 0===O?new s.PopupNavigator:O,M=r.iframeNavigator,H=void 0===M?new a.IFrameNavigator:M,V=r.userStore,K=void 0===V?new u.WebStorageStateStore({store:c.Global.sessionStorage}):V;l(this,e);var q=f(this,t.call(this,arguments[0]));return q._popup_redirect_uri=n,q._popup_post_logout_redirect_uri=i,q._popupWindowFeatures=g,q._popupWindowTarget=d,q._silent_redirect_uri=p,q._silentRequestTimeout=v,q._automaticSilentRenew=m,q._validateSubOnSilentRenew=S,q._includeIdTokenInSilentRenew=w,q._accessTokenExpiringNotificationTime=N,q._monitorSession=E,q._monitorAnonymousSession=A,q._checkSessionInterval=P,q._stopCheckSessionOnError=T,R?q._query_status_response_type=R:arguments[0]&&arguments[0].response_type?q._query_status_response_type=h.SigninRequest.isOidc(arguments[0].response_type)?\"id_token\":\"code\":q._query_status_response_type=\"id_token\",q._revokeAccessTokenOnSignout=D,q._redirectNavigator=B,q._popupNavigator=j,q._iframeNavigator=H,q._userStore=K,q}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),n(e,[{key:\"popup_redirect_uri\",get:function t(){return this._popup_redirect_uri}},{key:\"popup_post_logout_redirect_uri\",get:function t(){return this._popup_post_logout_redirect_uri}},{key:\"popupWindowFeatures\",get:function t(){return this._popupWindowFeatures}},{key:\"popupWindowTarget\",get:function t(){return this._popupWindowTarget}},{key:\"silent_redirect_uri\",get:function t(){return this._silent_redirect_uri}},{key:\"silentRequestTimeout\",get:function t(){return this._silentRequestTimeout}},{key:\"automaticSilentRenew\",get:function t(){return this._automaticSilentRenew}},{key:\"validateSubOnSilentRenew\",get:function t(){return this._validateSubOnSilentRenew}},{key:\"includeIdTokenInSilentRenew\",get:function t(){return this._includeIdTokenInSilentRenew}},{key:\"accessTokenExpiringNotificationTime\",get:function t(){return this._accessTokenExpiringNotificationTime}},{key:\"monitorSession\",get:function t(){return this._monitorSession}},{key:\"monitorAnonymousSession\",get:function t(){return this._monitorAnonymousSession}},{key:\"checkSessionInterval\",get:function t(){return this._checkSessionInterval}},{key:\"stopCheckSessionOnError\",get:function t(){return this._stopCheckSessionOnError}},{key:\"query_status_response_type\",get:function t(){return this._query_status_response_type}},{key:\"revokeAccessTokenOnSignout\",get:function t(){return this._revokeAccessTokenOnSignout}},{key:\"redirectNavigator\",get:function t(){return this._redirectNavigator}},{key:\"popupNavigator\",get:function t(){return this._popupNavigator}},{key:\"iframeNavigator\",get:function t(){return this._iframeNavigator}},{key:\"userStore\",get:function t(){return this._userStore}}]),e}(i.OidcClientSettings)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.RedirectNavigator=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.RedirectNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(){return Promise.resolve(this)},t.prototype.navigate=function t(e){return e&&e.url?(e.useReplaceToNavigate?window.location.replace(e.url):window.location=e.url,Promise.resolve()):(i.Log.error(\"RedirectNavigator.navigate: No url provided\"),Promise.reject(new Error(\"No url provided\")))},n(t,[{key:\"url\",get:function t(){return window.location.href}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PopupNavigator=void 0;var n=r(0),i=r(42);e.PopupNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){var r=new i.PopupWindow(e);return Promise.resolve(r)},t.prototype.callback=function t(e,r,o){n.Log.debug(\"PopupNavigator.callback\");try{return i.PopupWindow.notifyOpener(e,r,o),Promise.resolve()}catch(t){return Promise.reject(t)}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.PopupWindow=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(3);e.PopupWindow=function(){function t(e){var r=this;!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._promise=new Promise((function(t,e){r._resolve=t,r._reject=e}));var o=e.popupWindowTarget||\"_blank\",s=e.popupWindowFeatures||\"location=no,toolbar=no,width=500,height=500,left=100,top=100;\";this._popup=window.open(\"\",o,s),this._popup&&(i.Log.debug(\"PopupWindow.ctor: popup successfully created\"),this._checkForPopupClosedTimer=window.setInterval(this._checkForPopupClosed.bind(this),500))}return t.prototype.navigate=function t(e){return this._popup?e&&e.url?(i.Log.debug(\"PopupWindow.navigate: Setting URL in popup\"),this._id=e.id,this._id&&(window[\"popupCallback_\"+e.id]=this._callback.bind(this)),this._popup.focus(),this._popup.window.location=e.url):(this._error(\"PopupWindow.navigate: no url provided\"),this._error(\"No url provided\")):this._error(\"PopupWindow.navigate: Error opening popup window\"),this.promise},t.prototype._success=function t(e){i.Log.debug(\"PopupWindow.callback: Successful response from popup window\"),this._cleanup(),this._resolve(e)},t.prototype._error=function t(e){i.Log.error(\"PopupWindow.error: \",e),this._cleanup(),this._reject(new Error(e))},t.prototype.close=function t(){this._cleanup(!1)},t.prototype._cleanup=function t(e){i.Log.debug(\"PopupWindow.cleanup\"),window.clearInterval(this._checkForPopupClosedTimer),this._checkForPopupClosedTimer=null,delete window[\"popupCallback_\"+this._id],this._popup&&!e&&this._popup.close(),this._popup=null},t.prototype._checkForPopupClosed=function t(){this._popup&&!this._popup.closed||this._error(\"Popup window closed\")},t.prototype._callback=function t(e,r){this._cleanup(r),e?(i.Log.debug(\"PopupWindow.callback success\"),this._success({url:e})):(i.Log.debug(\"PopupWindow.callback: Invalid response from popup\"),this._error(\"Invalid response from popup\"))},t.notifyOpener=function t(e,r,n){if(window.opener){if(e=e||window.location.href){var s=o.UrlUtility.parseUrlFragment(e,n);if(s.state){var a=\"popupCallback_\"+s.state,u=window.opener[a];u?(i.Log.debug(\"PopupWindow.notifyOpener: passing url message to opener\"),u(e,r)):i.Log.warn(\"PopupWindow.notifyOpener: no matching callback found on opener\")}else i.Log.warn(\"PopupWindow.notifyOpener: no state found in response url\")}}else i.Log.warn(\"PopupWindow.notifyOpener: no window.opener. Can't complete notification.\")},n(t,[{key:\"promise\",get:function t(){return this._promise}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IFrameNavigator=void 0;var n=r(0),i=r(44);e.IFrameNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){var r=new i.IFrameWindow(e);return Promise.resolve(r)},t.prototype.callback=function t(e){n.Log.debug(\"IFrameNavigator.callback\");try{return i.IFrameWindow.notifyParent(e),Promise.resolve()}catch(t){return Promise.reject(t)}},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.IFrameWindow=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0);e.IFrameWindow=function(){function t(e){var r=this;!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._promise=new Promise((function(t,e){r._resolve=t,r._reject=e})),this._boundMessageEvent=this._message.bind(this),window.addEventListener(\"message\",this._boundMessageEvent,!1),this._frame=window.document.createElement(\"iframe\"),this._frame.style.visibility=\"hidden\",this._frame.style.position=\"absolute\",this._frame.width=0,this._frame.height=0,window.document.body.appendChild(this._frame)}return t.prototype.navigate=function t(e){if(e&&e.url){var r=e.silentRequestTimeout||1e4;i.Log.debug(\"IFrameWindow.navigate: Using timeout of:\",r),this._timer=window.setTimeout(this._timeout.bind(this),r),this._frame.src=e.url}else this._error(\"No url provided\");return this.promise},t.prototype._success=function t(e){this._cleanup(),i.Log.debug(\"IFrameWindow: Successful response from frame window\"),this._resolve(e)},t.prototype._error=function t(e){this._cleanup(),i.Log.error(e),this._reject(new Error(e))},t.prototype.close=function t(){this._cleanup()},t.prototype._cleanup=function t(){this._frame&&(i.Log.debug(\"IFrameWindow: cleanup\"),window.removeEventListener(\"message\",this._boundMessageEvent,!1),window.clearTimeout(this._timer),window.document.body.removeChild(this._frame),this._timer=null,this._frame=null,this._boundMessageEvent=null)},t.prototype._timeout=function t(){i.Log.debug(\"IFrameWindow.timeout\"),this._error(\"Frame window timed out\")},t.prototype._message=function t(e){if(i.Log.debug(\"IFrameWindow.message\"),this._timer&&e.origin===this._origin&&e.source===this._frame.contentWindow&&\"string\"==typeof e.data&&(e.data.startsWith(\"http://\")||e.data.startsWith(\"https://\"))){var r=e.data;r?this._success({url:r}):this._error(\"Invalid response from frame\")}},t.notifyParent=function t(e){i.Log.debug(\"IFrameWindow.notifyParent\"),(e=e||window.location.href)&&(i.Log.debug(\"IFrameWindow.notifyParent: posting url message to parent\"),window.parent.postMessage(e,location.protocol+\"//\"+location.host))},n(t,[{key:\"promise\",get:function t(){return this._promise}},{key:\"_origin\",get:function t(){return location.protocol+\"//\"+location.host}}]),t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.UserManagerEvents=void 0;var n=r(0),i=r(16),o=r(17);e.UserManagerEvents=function(t){function e(r){!function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var i=function s(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,t.call(this,r));return i._userLoaded=new o.Event(\"User loaded\"),i._userUnloaded=new o.Event(\"User unloaded\"),i._silentRenewError=new o.Event(\"Silent renew error\"),i._userSignedIn=new o.Event(\"User signed in\"),i._userSignedOut=new o.Event(\"User signed out\"),i._userSessionChanged=new o.Event(\"User session changed\"),i}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.load=function e(r){var i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];n.Log.debug(\"UserManagerEvents.load\"),t.prototype.load.call(this,r),i&&this._userLoaded.raise(r)},e.prototype.unload=function e(){n.Log.debug(\"UserManagerEvents.unload\"),t.prototype.unload.call(this),this._userUnloaded.raise()},e.prototype.addUserLoaded=function t(e){this._userLoaded.addHandler(e)},e.prototype.removeUserLoaded=function t(e){this._userLoaded.removeHandler(e)},e.prototype.addUserUnloaded=function t(e){this._userUnloaded.addHandler(e)},e.prototype.removeUserUnloaded=function t(e){this._userUnloaded.removeHandler(e)},e.prototype.addSilentRenewError=function t(e){this._silentRenewError.addHandler(e)},e.prototype.removeSilentRenewError=function t(e){this._silentRenewError.removeHandler(e)},e.prototype._raiseSilentRenewError=function t(e){n.Log.debug(\"UserManagerEvents._raiseSilentRenewError\",e.message),this._silentRenewError.raise(e)},e.prototype.addUserSignedIn=function t(e){this._userSignedIn.addHandler(e)},e.prototype.removeUserSignedIn=function t(e){this._userSignedIn.removeHandler(e)},e.prototype._raiseUserSignedIn=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSignedIn\"),this._userSignedIn.raise()},e.prototype.addUserSignedOut=function t(e){this._userSignedOut.addHandler(e)},e.prototype.removeUserSignedOut=function t(e){this._userSignedOut.removeHandler(e)},e.prototype._raiseUserSignedOut=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSignedOut\"),this._userSignedOut.raise()},e.prototype.addUserSessionChanged=function t(e){this._userSessionChanged.addHandler(e)},e.prototype.removeUserSessionChanged=function t(e){this._userSessionChanged.removeHandler(e)},e.prototype._raiseUserSessionChanged=function t(){n.Log.debug(\"UserManagerEvents._raiseUserSessionChanged\"),this._userSessionChanged.raise()},e}(i.AccessTokenEvents)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Timer=void 0;var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=r(0),o=r(1),s=r(17);function a(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function u(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}e.Timer=function(t){function e(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Global.timer,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;a(this,e);var s=u(this,t.call(this,r));return s._timer=n,s._nowFunc=i||function(){return Date.now()/1e3},s}return function r(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.init=function t(e){e<=0&&(e=1),e=parseInt(e);var r=this.now+e;if(this.expiration===r&&this._timerHandle)i.Log.debug(\"Timer.init timer \"+this._name+\" skipping initialization since already initialized for expiration:\",this.expiration);else{this.cancel(),i.Log.debug(\"Timer.init timer \"+this._name+\" for duration:\",e),this._expiration=r;var n=5;e<n&&(n=e),this._timerHandle=this._timer.setInterval(this._callback.bind(this),1e3*n)}},e.prototype.cancel=function t(){this._timerHandle&&(i.Log.debug(\"Timer.cancel: \",this._name),this._timer.clearInterval(this._timerHandle),this._timerHandle=null)},e.prototype._callback=function e(){var r=this._expiration-this.now;i.Log.debug(\"Timer.callback; \"+this._name+\" timer expires in:\",r),this._expiration<=this.now&&(this.cancel(),t.prototype.raise.call(this))},n(e,[{key:\"now\",get:function t(){return parseInt(this._nowFunc())}},{key:\"expiration\",get:function t(){return this._expiration}}]),e}(s.Event)},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.SilentRenewService=void 0;var n=r(0);e.SilentRenewService=function(){function t(e){!function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._userManager=e}return t.prototype.start=function t(){this._callback||(this._callback=this._tokenExpiring.bind(this),this._userManager.events.addAccessTokenExpiring(this._callback),this._userManager.getUser().then((function(t){})).catch((function(t){n.Log.error(\"SilentRenewService.start: Error from getUser:\",t.message)})))},t.prototype.stop=function t(){this._callback&&(this._userManager.events.removeAccessTokenExpiring(this._callback),delete this._callback)},t.prototype._tokenExpiring=function t(){var e=this;this._userManager.signinSilent().then((function(t){n.Log.debug(\"SilentRenewService._tokenExpiring: Silent token renewal successful\")}),(function(t){n.Log.error(\"SilentRenewService._tokenExpiring: Error from signinSilent:\",t.message),e._userManager.events._raiseSilentRenewError(t)}))},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CordovaPopupNavigator=void 0;var n=r(21);e.CordovaPopupNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){var r=new n.CordovaPopupWindow(e);return Promise.resolve(r)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.CordovaIFrameNavigator=void 0;var n=r(21);e.CordovaIFrameNavigator=function(){function t(){!function e(t,r){if(!(t instanceof r))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}return t.prototype.prepare=function t(e){e.popupWindowFeatures=\"hidden=yes\";var r=new n.CordovaPopupWindow(e);return Promise.resolve(r)},t}()},function(t,e,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});e.Version=\"1.11.5\"}])}));","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\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 * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(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) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function 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\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var 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 */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = prefix || defaultDelimiter\n var pattern = capture || group\n var prevText = prefix || (typeof tokens[tokens.length - 1] === 'string' ? tokens[tokens.length - 1] : '')\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : restrictBacktrack(delimiter, prevText))\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\nfunction restrictBacktrack(delimiter, prevText) {\n if (!prevText || prevText.indexOf(delimiter) > -1) {\n return '[^' + escapeString(delimiter) + ']+?'\n }\n\n return escapeString(prevText) + '|(?:(?!' + escapeString(prevText) + ')[^' + escapeString(delimiter) + '])+?'\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\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 * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/** @license React v17.0.2\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),m=require(\"react\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar q=60106,r=60107,u=60108,z=60114,B=60109,aa=60110,ba=60112,D=60113,ca=60120,da=60115,ea=60116,fa=60121,ha=60117,ia=60119,ja=60129,ka=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;q=E(\"react.portal\");r=E(\"react.fragment\");u=E(\"react.strict_mode\");z=E(\"react.profiler\");B=E(\"react.provider\");aa=E(\"react.context\");ba=E(\"react.forward_ref\");D=E(\"react.suspense\");ca=E(\"react.suspense_list\");da=E(\"react.memo\");ea=E(\"react.lazy\");fa=E(\"react.block\");ha=E(\"react.fundamental\");ia=E(\"react.scope\");ja=E(\"react.debug_trace_mode\");ka=E(\"react.legacy_hidden\")}\nfunction F(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case r:return\"Fragment\";case q:return\"Portal\";case z:return\"Profiler\";case u:return\"StrictMode\";case D:return\"Suspense\";case ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case aa:return(a.displayName||\"Context\")+\".Consumer\";case B:return(a._context.displayName||\"Context\")+\".Provider\";case ba:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||\n(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case da:return F(a.type);case fa:return F(a._render);case ea:b=a._payload;a=a._init;try{return F(a(b))}catch(c){}}return null}var la=m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,ma={};function I(a,b){for(var c=a._threadCount|0;c<=b;c++)a[c]=a._currentValue2,a._threadCount=c+1}function na(a,b,c,d){if(d&&(d=a.contextType,\"object\"===typeof d&&null!==d))return I(d,c),d[c];if(a=a.contextTypes){c={};for(var f in a)c[f]=b[f];b=c}else b=ma;return b}\nfor(var J=new Uint16Array(16),K=0;15>K;K++)J[K]=K+1;J[15]=0;var oa=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,pa=Object.prototype.hasOwnProperty,qa={},ra={};\nfunction sa(a){if(pa.call(ra,a))return!0;if(pa.call(qa,a))return!1;if(oa.test(a))return ra[a]=!0;qa[a]=!0;return!1}function ta(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction ua(a,b,c,d){if(null===b||\"undefined\"===typeof b||ta(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function M(a,b,c,d,f,h,t){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=h;this.removeEmptyString=t}var N={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){N[a]=new M(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];N[b]=new M(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){N[a]=new M(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){N[a]=new M(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){N[a]=new M(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){N[a]=new M(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){N[a]=new M(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){N[a]=new M(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){N[a]=new M(a,5,!1,a.toLowerCase(),null,!1,!1)});var va=/[\\-:]([a-z])/g;function wa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(va,\nwa);N[b]=new M(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(va,wa);N[b]=new M(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!1,!1)});\nN.xlinkHref=new M(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){N[a]=new M(a,1,!1,a.toLowerCase(),null,!0,!0)});var xa=/[\"'&<>]/;\nfunction O(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=xa.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=\""\";break;case 38:b=\"&\";break;case 39:b=\"'\";break;case 60:b=\"<\";break;case 62:b=\">\";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}\nfunction ya(a,b){var c=N.hasOwnProperty(a)?N[a]:null;var d;if(d=\"style\"!==a)d=null!==c?0===c.type:!(2<a.length)||\"o\"!==a[0]&&\"O\"!==a[0]||\"n\"!==a[1]&&\"N\"!==a[1]?!1:!0;if(d||ua(a,b,c,!1))return\"\";if(null!==c){a=c.attributeName;d=c.type;if(3===d||4===d&&!0===b)return a+'=\"\"';c.sanitizeURL&&(b=\"\"+b);return a+'=\"'+(O(b)+'\"')}return sa(a)?a+'=\"'+(O(b)+'\"'):\"\"}function za(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar Aa=\"function\"===typeof Object.is?Object.is:za,P=null,Q=null,R=null,S=!1,T=!1,U=null,V=0;function W(){if(null===P)throw Error(p(321));return P}function Ba(){if(0<V)throw Error(p(312));return{memoizedState:null,queue:null,next:null}}function Ca(){null===R?null===Q?(S=!1,Q=R=Ba()):(S=!0,R=Q):null===R.next?(S=!1,R=R.next=Ba()):(S=!0,R=R.next);return R}function Da(a,b,c,d){for(;T;)T=!1,V+=1,R=null,c=a(b,d);Ea();return c}function Ea(){P=null;T=!1;Q=null;V=0;R=U=null}\nfunction Fa(a,b){return\"function\"===typeof b?b(a):b}function Ga(a,b,c){P=W();R=Ca();if(S){var d=R.queue;b=d.dispatch;if(null!==U&&(c=U.get(d),void 0!==c)){U.delete(d);d=R.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);R.memoizedState=d;return[d,b]}return[R.memoizedState,b]}a=a===Fa?\"function\"===typeof b?b():b:void 0!==c?c(b):b;R.memoizedState=a;a=R.queue={last:null,dispatch:null};a=a.dispatch=Ha.bind(null,P,a);return[R.memoizedState,a]}\nfunction Ia(a,b){P=W();R=Ca();b=void 0===b?null:b;if(null!==R){var c=R.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!Aa(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();R.memoizedState=[a,b];return a}function Ha(a,b,c){if(!(25>V))throw Error(p(301));if(a===P)if(T=!0,a={action:c,next:null},null===U&&(U=new Map),c=U.get(b),void 0===c)U.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}function Ja(){}\nvar X=null,Ka={readContext:function(a){var b=X.threadID;I(a,b);return a[b]},useContext:function(a){W();var b=X.threadID;I(a,b);return a[b]},useMemo:Ia,useReducer:Ga,useRef:function(a){P=W();R=Ca();var b=R.memoizedState;return null===b?(a={current:a},R.memoizedState=a):b},useState:function(a){return Ga(Fa,a)},useLayoutEffect:function(){},useCallback:function(a,b){return Ia(function(){return a},b)},useImperativeHandle:Ja,useEffect:Ja,useDebugValue:Ja,useDeferredValue:function(a){W();return a},useTransition:function(){W();\nreturn[function(a){a()},!1]},useOpaqueIdentifier:function(){return(X.identifierPrefix||\"\")+\"R:\"+(X.uniqueID++).toString(36)},useMutableSource:function(a,b){W();return b(a._source)}},La={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};function Ma(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nvar Na={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Oa=l({menuitem:!0},Na),Y={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,\ngridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Pa=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(Y).forEach(function(a){Pa.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);Y[b]=Y[a]})});\nvar Qa=/([A-Z])/g,Ra=/^ms-/,Z=m.Children.toArray,Sa=la.ReactCurrentDispatcher,Ta={listing:!0,pre:!0,textarea:!0},Ua=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,Va={},Wa={};function Xa(a){if(void 0===a||null===a)return a;var b=\"\";m.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Ya=Object.prototype.hasOwnProperty,Za={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function $a(a,b){if(void 0===a)throw Error(p(152,F(b)||\"Component\"));}\nfunction ab(a,b,c){function d(d,h){var e=h.prototype&&h.prototype.isReactComponent,f=na(h,b,c,e),t=[],g=!1,n={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===t)return null},enqueueReplaceState:function(a,c){g=!0;t=[c]},enqueueSetState:function(a,c){if(null===t)return null;t.push(c)}};if(e){if(e=new h(d.props,f,n),\"function\"===typeof h.getDerivedStateFromProps){var k=h.getDerivedStateFromProps.call(null,d.props,e.state);null!=k&&(e.state=l({},e.state,k))}}else if(P={},e=h(d.props,\nf,n),e=Da(h,d.props,e,f),null==e||null==e.render){a=e;$a(a,h);return}e.props=d.props;e.context=f;e.updater=n;n=e.state;void 0===n&&(e.state=n=null);if(\"function\"===typeof e.UNSAFE_componentWillMount||\"function\"===typeof e.componentWillMount)if(\"function\"===typeof e.componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof h.getDerivedStateFromProps&&e.UNSAFE_componentWillMount(),t.length){n=t;var v=\ng;t=null;g=!1;if(v&&1===n.length)e.state=n[0];else{k=v?n[0]:e.state;var H=!0;for(v=v?1:0;v<n.length;v++){var x=n[v];x=\"function\"===typeof x?x.call(e,k,d.props,f):x;null!=x&&(H?(H=!1,k=l({},k,x)):l(k,x))}e.state=k}}else t=null;a=e.render();$a(a,h);if(\"function\"===typeof e.getChildContext&&(d=h.childContextTypes,\"object\"===typeof d)){var y=e.getChildContext();for(var A in y)if(!(A in d))throw Error(p(108,F(h)||\"Unknown\",A));}y&&(b=l({},b,y))}for(;m.isValidElement(a);){var f=a,h=f.type;if(\"function\"!==\ntypeof h)break;d(f,h)}return{child:a,context:b}}\nvar bb=function(){function a(a,b,f){m.isValidElement(a)?a.type!==r?a=[a]:(a=a.props.children,a=m.isValidElement(a)?[a]:Z(a)):a=Z(a);a={type:null,domNamespace:La.html,children:a,childIndex:0,context:ma,footer:\"\"};var c=J[0];if(0===c){var d=J;c=d.length;var g=2*c;if(!(65536>=g))throw Error(p(304));var e=new Uint16Array(g);e.set(d);J=e;J[0]=c+1;for(d=c;d<g-1;d++)J[d]=d+1;J[g-1]=0}else J[0]=J[c];this.threadID=c;this.stack=[a];this.exhausted=!1;this.currentSelectValue=null;this.previousWasTextNode=!1;\nthis.makeStaticMarkup=b;this.suspenseDepth=0;this.contextIndex=-1;this.contextStack=[];this.contextValueStack=[];this.uniqueID=0;this.identifierPrefix=f&&f.identifierPrefix||\"\"}var b=a.prototype;b.destroy=function(){if(!this.exhausted){this.exhausted=!0;this.clearProviders();var a=this.threadID;J[a]=J[0];J[0]=a}};b.pushProvider=function(a){var b=++this.contextIndex,c=a.type._context,h=this.threadID;I(c,h);var t=c[h];this.contextStack[b]=c;this.contextValueStack[b]=t;c[h]=a.props.value};b.popProvider=\nfunction(){var a=this.contextIndex,b=this.contextStack[a],f=this.contextValueStack[a];this.contextStack[a]=null;this.contextValueStack[a]=null;this.contextIndex--;b[this.threadID]=f};b.clearProviders=function(){for(var a=this.contextIndex;0<=a;a--)this.contextStack[a][this.threadID]=this.contextValueStack[a]};b.read=function(a){if(this.exhausted)return null;var b=X;X=this;var c=Sa.current;Sa.current=Ka;try{for(var h=[\"\"],t=!1;h[0].length<a;){if(0===this.stack.length){this.exhausted=!0;var g=this.threadID;\nJ[g]=J[0];J[0]=g;break}var e=this.stack[this.stack.length-1];if(t||e.childIndex>=e.children.length){var L=e.footer;\"\"!==L&&(this.previousWasTextNode=!1);this.stack.pop();if(\"select\"===e.type)this.currentSelectValue=null;else if(null!=e.type&&null!=e.type.type&&e.type.type.$$typeof===B)this.popProvider(e.type);else if(e.type===D){this.suspenseDepth--;var G=h.pop();if(t){t=!1;var C=e.fallbackFrame;if(!C)throw Error(p(303));this.stack.push(C);h[this.suspenseDepth]+=\"\\x3c!--$!--\\x3e\";continue}else h[this.suspenseDepth]+=\nG}h[this.suspenseDepth]+=L}else{var n=e.children[e.childIndex++],k=\"\";try{k+=this.render(n,e.context,e.domNamespace)}catch(v){if(null!=v&&\"function\"===typeof v.then)throw Error(p(294));throw v;}finally{}h.length<=this.suspenseDepth&&h.push(\"\");h[this.suspenseDepth]+=k}}return h[0]}finally{Sa.current=c,X=b,Ea()}};b.render=function(a,b,f){if(\"string\"===typeof a||\"number\"===typeof a){f=\"\"+a;if(\"\"===f)return\"\";if(this.makeStaticMarkup)return O(f);if(this.previousWasTextNode)return\"\\x3c!-- --\\x3e\"+O(f);\nthis.previousWasTextNode=!0;return O(f)}b=ab(a,b,this.threadID);a=b.child;b=b.context;if(null===a||!1===a)return\"\";if(!m.isValidElement(a)){if(null!=a&&null!=a.$$typeof){f=a.$$typeof;if(f===q)throw Error(p(257));throw Error(p(258,f.toString()));}a=Z(a);this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"});return\"\"}var c=a.type;if(\"string\"===typeof c)return this.renderDOM(a,b,f);switch(c){case ka:case ja:case u:case z:case ca:case r:return a=Z(a.props.children),this.stack.push({type:null,\ndomNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\"\";case D:throw Error(p(294));case ia:throw Error(p(343));}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case ba:P={};var d=c.render(a.props,a.ref);d=Da(c.render,a.props,d,a.ref);d=Z(d);this.stack.push({type:null,domNamespace:f,children:d,childIndex:0,context:b,footer:\"\"});return\"\";case da:return a=[m.createElement(c.type,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,context:b,footer:\"\"}),\n\"\";case B:return c=Z(a.props.children),f={type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"},this.pushProvider(a),this.stack.push(f),\"\";case aa:c=a.type;d=a.props;var g=this.threadID;I(c,g);c=Z(d.children(c[g]));this.stack.push({type:a,domNamespace:f,children:c,childIndex:0,context:b,footer:\"\"});return\"\";case ha:throw Error(p(338));case ea:return c=a.type,d=c._init,c=d(c._payload),a=[m.createElement(c,l({ref:a.ref},a.props))],this.stack.push({type:null,domNamespace:f,children:a,childIndex:0,\ncontext:b,footer:\"\"}),\"\"}throw Error(p(130,null==c?c:typeof c,\"\"));};b.renderDOM=function(a,b,f){var c=a.type.toLowerCase();f===La.html&&Ma(c);if(!Va.hasOwnProperty(c)){if(!Ua.test(c))throw Error(p(65,c));Va[c]=!0}var d=a.props;if(\"input\"===c)d=l({type:void 0},d,{defaultChecked:void 0,defaultValue:void 0,value:null!=d.value?d.value:d.defaultValue,checked:null!=d.checked?d.checked:d.defaultChecked});else if(\"textarea\"===c){var g=d.value;if(null==g){g=d.defaultValue;var e=d.children;if(null!=e){if(null!=\ng)throw Error(p(92));if(Array.isArray(e)){if(!(1>=e.length))throw Error(p(93));e=e[0]}g=\"\"+e}null==g&&(g=\"\")}d=l({},d,{value:void 0,children:\"\"+g})}else if(\"select\"===c)this.currentSelectValue=null!=d.value?d.value:d.defaultValue,d=l({},d,{value:void 0});else if(\"option\"===c){e=this.currentSelectValue;var L=Xa(d.children);if(null!=e){var G=null!=d.value?d.value+\"\":L;g=!1;if(Array.isArray(e))for(var C=0;C<e.length;C++){if(\"\"+e[C]===G){g=!0;break}}else g=\"\"+e===G;d=l({selected:void 0,children:void 0},\nd,{selected:g,children:L})}}if(g=d){if(Oa[c]&&(null!=g.children||null!=g.dangerouslySetInnerHTML))throw Error(p(137,c));if(null!=g.dangerouslySetInnerHTML){if(null!=g.children)throw Error(p(60));if(!(\"object\"===typeof g.dangerouslySetInnerHTML&&\"__html\"in g.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=g.style&&\"object\"!==typeof g.style)throw Error(p(62));}g=d;e=this.makeStaticMarkup;L=1===this.stack.length;G=\"<\"+a.type;b:if(-1===c.indexOf(\"-\"))C=\"string\"===typeof g.is;else switch(c){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":C=\n!1;break b;default:C=!0}for(w in g)if(Ya.call(g,w)){var n=g[w];if(null!=n){if(\"style\"===w){var k=void 0,v=\"\",H=\"\";for(k in n)if(n.hasOwnProperty(k)){var x=0===k.indexOf(\"--\"),y=n[k];if(null!=y){if(x)var A=k;else if(A=k,Wa.hasOwnProperty(A))A=Wa[A];else{var cb=A.replace(Qa,\"-$1\").toLowerCase().replace(Ra,\"-ms-\");A=Wa[A]=cb}v+=H+A+\":\";H=k;x=null==y||\"boolean\"===typeof y||\"\"===y?\"\":x||\"number\"!==typeof y||0===y||Y.hasOwnProperty(H)&&Y[H]?(\"\"+y).trim():y+\"px\";v+=x;H=\";\"}}n=v||null}k=null;C?Za.hasOwnProperty(w)||\n(k=w,k=sa(k)&&null!=n?k+'=\"'+(O(n)+'\"'):\"\"):k=ya(w,n);k&&(G+=\" \"+k)}}e||L&&(G+=' data-reactroot=\"\"');var w=G;g=\"\";Na.hasOwnProperty(c)?w+=\"/>\":(w+=\">\",g=\"</\"+a.type+\">\");a:{e=d.dangerouslySetInnerHTML;if(null!=e){if(null!=e.__html){e=e.__html;break a}}else if(e=d.children,\"string\"===typeof e||\"number\"===typeof e){e=O(e);break a}e=null}null!=e?(d=[],Ta.hasOwnProperty(c)&&\"\\n\"===e.charAt(0)&&(w+=\"\\n\"),w+=e):d=Z(d.children);a=a.type;f=null==f||\"http://www.w3.org/1999/xhtml\"===f?Ma(a):\"http://www.w3.org/2000/svg\"===\nf&&\"foreignObject\"===a?\"http://www.w3.org/1999/xhtml\":f;this.stack.push({domNamespace:f,type:c,children:d,childIndex:0,context:b,footer:g});this.previousWasTextNode=!1;return w};return a}();exports.renderToNodeStream=function(){throw Error(p(207));};exports.renderToStaticMarkup=function(a,b){a=new bb(a,!0,b);try{return a.read(Infinity)}finally{a.destroy()}};exports.renderToStaticNodeStream=function(){throw Error(p(208));};exports.renderToString=function(a,b){a=new bb(a,!1,b);try{return a.read(Infinity)}finally{a.destroy()}};\nexports.version=\"17.0.2\";\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRequiredForA11y;\nfunction isRequiredForA11y(validator) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\nmodule.exports = exports['default'];","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(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 {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function 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 // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\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 // filter out skipped interceptors\n var requestInterceptorChain = [];\n var 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 var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\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: method,\n url: 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: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n validators[_key] = arguments[_key];\n }\n\n function allPropTypes() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var error = null;\n\n validators.forEach(function (validator) {\n if (error != null) {\n return;\n }\n\n var result = validator.apply(undefined, args);\n if (result != null) {\n error = result;\n }\n });\n\n return error;\n }\n\n return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"ef0b1110\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"reactcratypescript:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkreactcratypescript\"] = self[\"webpackChunkreactcratypescript\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useContext, useMemo } from 'react';\nvar ThemeContext = /*#__PURE__*/React.createContext({});\nvar Consumer = ThemeContext.Consumer,\n Provider = ThemeContext.Provider;\n\nfunction ThemeProvider(_ref) {\n var prefixes = _ref.prefixes,\n children = _ref.children;\n var copiedPrefixes = useMemo(function () {\n return _extends({}, prefixes);\n }, [prefixes]);\n return /*#__PURE__*/React.createElement(Provider, {\n value: copiedPrefixes\n }, children);\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n var prefixes = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n var _opts = opts,\n prefix = _opts.prefix,\n _opts$forwardRefAs = _opts.forwardRefAs,\n forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n var Wrapped = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var props = _extends({}, _ref2);\n\n props[forwardRefAs] = ref;\n var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n bsPrefix: bsPrefix\n }));\n });\n Wrapped.displayName = \"Bootstrap(\" + (Component.displayName || Component.name) + \")\";\n return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"fluid\", \"as\", \"className\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n fluid: false\n};\nvar Container = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n fluid = _ref.fluid,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'container');\n var suffix = typeof fluid === 'string' ? \"-\" + fluid : '-fluid';\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, fluid ? \"\" + prefix + suffix : prefix)\n }));\n});\nContainer.displayName = 'Container';\nContainer.defaultProps = defaultProps;\nexport default Container;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"noGutters\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar defaultProps = {\n noGutters: false\n};\nvar Row = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n noGutters = _ref.noGutters,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n var sizePrefix = decoratedBsPrefix + \"-cols\";\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var cols;\n\n if (propValue != null && typeof propValue === 'object') {\n cols = propValue.cols;\n } else {\n cols = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (cols != null) classes.push(\"\" + sizePrefix + infix + \"-\" + cols);\n });\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames.apply(void 0, [className, decoratedBsPrefix, noGutters && 'no-gutters'].concat(classes))\n }));\n});\nRow.displayName = 'Row';\nRow.defaultProps = defaultProps;\nexport default Row;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'col');\n var spans = [];\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var span;\n var offset;\n var order;\n\n if (typeof propValue === 'object' && propValue != null) {\n var _propValue$span = propValue.span;\n span = _propValue$span === void 0 ? true : _propValue$span;\n offset = propValue.offset;\n order = propValue.order;\n } else {\n span = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (span) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n });\n\n if (!spans.length) {\n spans.push(prefix); // plain 'col'\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames.apply(void 0, [className].concat(spans, classes))\n }));\n});\nCol.displayName = 'Col';\nexport default Col;","var matchesImpl;\n/**\n * Checks if a given element matches a selector.\n * \n * @param node the element\n * @param selector the selector\n */\n\nexport default function matches(node, selector) {\n if (!matchesImpl) {\n var body = document.body;\n var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;\n\n matchesImpl = function matchesImpl(n, s) {\n return nativeMatch.call(n, s);\n };\n }\n\n return matchesImpl(node, selector);\n}","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","import { useEffect, useRef } from 'react';\n\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n * const lastProps = usePrevious(props)\n *\n * if (lastProps.foo !== props.foo)\n * resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\nexport default function usePrevious(value) {\n const ref = useRef(null);\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","import { useReducer } from 'react';\n\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n * forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\nexport default function useForceUpdate() {\n // The toggling state value is designed to defeat React optimizations for skipping\n // updates when they are strictly equal to the last state value\n const [, dispatch] = useReducer(state => !state, false);\n return dispatch;\n}","import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n const ref = useCommittedRef(fn);\n return useCallback(function (...args) {\n return ref.current && ref.current(...args);\n }, [ref]);\n}","import useEventListener from './useEventListener';\nimport { useCallback } from 'react';\n/**\n * Attaches an event handler outside directly to the `document`,\n * bypassing the react synthetic event system.\n *\n * ```ts\n * useGlobalListener('keydown', (event) => {\n * console.log(event.key)\n * })\n * ```\n *\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useGlobalListener(event, handler, capture = false) {\n const documentTarget = useCallback(() => document, []);\n return useEventListener(documentTarget, event, handler, capture);\n}","import { useEffect } from 'react';\nimport useEventCallback from './useEventCallback';\n/**\n * Attaches an event handler outside directly to specified DOM element\n * bypassing the react synthetic event system.\n *\n * @param element The target to listen for events on\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useEventListener(eventTarget, event, listener, capture = false) {\n const handler = useEventCallback(listener);\n useEffect(() => {\n const target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;\n target.addEventListener(event, handler, capture);\n return () => target.removeEventListener(event, handler, capture);\n }, [eventTarget]);\n}","import React from 'react';\nvar DropdownContext = /*#__PURE__*/React.createContext(null);\nexport default DropdownContext;","import { useState } from 'react';\n\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n * if (!element) return\n *\n * const calendar = new FullCalendar.Calendar(element)\n *\n * return () => {\n * calendar.destroy()\n * }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\nexport default function useCallbackRef() {\n return useState(null);\n}","import { useRef, useEffect } from 'react';\n\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n * fetchdata().then((newData) => {\n * if (isMounted()) {\n * setData(newData);\n * }\n * })\n * })\n * ```\n */\nexport default function useMounted() {\n const mounted = useRef(true);\n const isMounted = useRef(() => mounted.current);\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","import { useCallback } from 'react';\nimport useMounted from './useMounted';\n\n/**\n * `useSafeState` takes the return value of a `useState` hook and wraps the\n * setter to prevent updates onces the component has unmounted. Can used\n * with `useMergeState` and `useStateAsync` as well\n *\n * @param state The return value of a useStateHook\n *\n * ```ts\n * const [show, setShow] = useSafeState(useState(true));\n * ```\n */\n\nfunction useSafeState(state) {\n const isMounted = useMounted();\n return [state[0], useCallback(nextState => {\n if (!isMounted()) return;\n return state[1](nextState);\n }, [isMounted, state[1]])];\n}\nexport default useSafeState;","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import arrow from '@popperjs/core/lib/modifiers/arrow';\nimport computeStyles from '@popperjs/core/lib/modifiers/computeStyles';\nimport eventListeners from '@popperjs/core/lib/modifiers/eventListeners';\nimport flip from '@popperjs/core/lib/modifiers/flip';\nimport hide from '@popperjs/core/lib/modifiers/hide';\nimport offset from '@popperjs/core/lib/modifiers/offset';\nimport popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets';\nimport preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow';\nimport { placements } from '@popperjs/core/lib/enums';\nimport { popperGenerator } from '@popperjs/core/lib/popper-base'; // For the common JS build we will turn this file into a bundle with no imports.\n// This is b/c the Popper lib is all esm files, and would break in a common js only environment\n\nexport var createPopper = popperGenerator({\n defaultModifiers: [hide, popperOffsets, computeStyles, eventListeners, offset, flip, preventOverflow, arrow]\n});\nexport { placements };","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport useSafeState from '@restart/hooks/useSafeState';\nimport { createPopper } from './popper';\n\nvar initialPopperStyles = function initialPopperStyles(position) {\n return {\n position: position,\n top: '0',\n left: '0',\n opacity: '0',\n pointerEvents: 'none'\n };\n};\n\nvar disabledApplyStylesModifier = {\n name: 'applyStyles',\n enabled: false\n}; // In order to satisfy the current usage of options, including undefined\n\nvar ariaDescribedByModifier = {\n name: 'ariaDescribedBy',\n enabled: true,\n phase: 'afterWrite',\n effect: function effect(_ref) {\n var state = _ref.state;\n return function () {\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper;\n\n if ('removeAttribute' in reference) {\n var ids = (reference.getAttribute('aria-describedby') || '').split(',').filter(function (id) {\n return id.trim() !== popper.id;\n });\n if (!ids.length) reference.removeAttribute('aria-describedby');else reference.setAttribute('aria-describedby', ids.join(','));\n }\n };\n },\n fn: function fn(_ref2) {\n var _popper$getAttribute;\n\n var state = _ref2.state;\n var _state$elements2 = state.elements,\n popper = _state$elements2.popper,\n reference = _state$elements2.reference;\n var role = (_popper$getAttribute = popper.getAttribute('role')) == null ? void 0 : _popper$getAttribute.toLowerCase();\n\n if (popper.id && role === 'tooltip' && 'setAttribute' in reference) {\n var ids = reference.getAttribute('aria-describedby');\n\n if (ids && ids.split(',').indexOf(popper.id) !== -1) {\n return;\n }\n\n reference.setAttribute('aria-describedby', ids ? ids + \",\" + popper.id : popper.id);\n }\n }\n};\nvar EMPTY_MODIFIERS = [];\n/**\n * Position an element relative some reference element using Popper.js\n *\n * @param referenceElement\n * @param popperElement\n * @param {object} options\n * @param {object=} options.modifiers Popper.js modifiers\n * @param {boolean=} options.enabled toggle the popper functionality on/off\n * @param {string=} options.placement The popper element placement relative to the reference element\n * @param {string=} options.strategy the positioning strategy\n * @param {boolean=} options.eventsEnabled have Popper listen on window resize events to reposition the element\n * @param {function=} options.onCreate called when the popper is created\n * @param {function=} options.onUpdate called when the popper is updated\n *\n * @returns {UsePopperState} The popper state\n */\n\nfunction usePopper(referenceElement, popperElement, _temp) {\n var _ref3 = _temp === void 0 ? {} : _temp,\n _ref3$enabled = _ref3.enabled,\n enabled = _ref3$enabled === void 0 ? true : _ref3$enabled,\n _ref3$placement = _ref3.placement,\n placement = _ref3$placement === void 0 ? 'bottom' : _ref3$placement,\n _ref3$strategy = _ref3.strategy,\n strategy = _ref3$strategy === void 0 ? 'absolute' : _ref3$strategy,\n _ref3$modifiers = _ref3.modifiers,\n modifiers = _ref3$modifiers === void 0 ? EMPTY_MODIFIERS : _ref3$modifiers,\n config = _objectWithoutPropertiesLoose(_ref3, [\"enabled\", \"placement\", \"strategy\", \"modifiers\"]);\n\n var popperInstanceRef = useRef();\n var update = useCallback(function () {\n var _popperInstanceRef$cu;\n\n (_popperInstanceRef$cu = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu.update();\n }, []);\n var forceUpdate = useCallback(function () {\n var _popperInstanceRef$cu2;\n\n (_popperInstanceRef$cu2 = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu2.forceUpdate();\n }, []);\n\n var _useSafeState = useSafeState(useState({\n placement: placement,\n update: update,\n forceUpdate: forceUpdate,\n attributes: {},\n styles: {\n popper: initialPopperStyles(strategy),\n arrow: {}\n }\n })),\n popperState = _useSafeState[0],\n setState = _useSafeState[1];\n\n var updateModifier = useMemo(function () {\n return {\n name: 'updateStateModifier',\n enabled: true,\n phase: 'write',\n requires: ['computeStyles'],\n fn: function fn(_ref4) {\n var state = _ref4.state;\n var styles = {};\n var attributes = {};\n Object.keys(state.elements).forEach(function (element) {\n styles[element] = state.styles[element];\n attributes[element] = state.attributes[element];\n });\n setState({\n state: state,\n styles: styles,\n attributes: attributes,\n update: update,\n forceUpdate: forceUpdate,\n placement: state.placement\n });\n }\n };\n }, [update, forceUpdate, setState]);\n useEffect(function () {\n if (!popperInstanceRef.current || !enabled) return;\n popperInstanceRef.current.setOptions({\n placement: placement,\n strategy: strategy,\n modifiers: [].concat(modifiers, [updateModifier, disabledApplyStylesModifier])\n }); // intentionally NOT re-running on new modifiers\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [strategy, placement, updateModifier, enabled]);\n useEffect(function () {\n if (!enabled || referenceElement == null || popperElement == null) {\n return undefined;\n }\n\n popperInstanceRef.current = createPopper(referenceElement, popperElement, _extends({}, config, {\n placement: placement,\n strategy: strategy,\n modifiers: [].concat(modifiers, [ariaDescribedByModifier, updateModifier])\n }));\n return function () {\n if (popperInstanceRef.current != null) {\n popperInstanceRef.current.destroy();\n popperInstanceRef.current = undefined;\n setState(function (s) {\n return _extends({}, s, {\n attributes: {},\n styles: {\n popper: initialPopperStyles(strategy)\n }\n });\n });\n }\n }; // This is only run once to _create_ the popper\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, referenceElement, popperElement]);\n return popperState;\n}\n\nexport default usePopper;","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n if (context.contains) return context.contains(node);\n if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n if (componentOrElement && 'setState' in componentOrElement) {\n return ReactDOM.findDOMNode(componentOrElement);\n }\n\n return componentOrElement != null ? componentOrElement : null;\n}","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport ownerDocument from './ownerDocument';\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar getRefTarget = function getRefTarget(ref) {\n return ref && ('current' in ref ? ref.current : ref);\n};\n\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref The element boundary\n * @param {function} onRootClose\n * @param {object=} options\n * @param {boolean=} options.disabled\n * @param {string=} options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useRootClose(ref, onRootClose, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n disabled = _ref.disabled,\n _ref$clickTrigger = _ref.clickTrigger,\n clickTrigger = _ref$clickTrigger === void 0 ? 'click' : _ref$clickTrigger;\n\n var preventMouseRootCloseRef = useRef(false);\n var onClose = onRootClose || noop;\n var handleMouseCapture = useCallback(function (e) {\n var _e$composedPath$;\n\n var currentTarget = getRefTarget(ref);\n warning(!!currentTarget, 'RootClose captured a close event but does not have a ref to compare it to. ' + 'useRootClose(), should be passed a ref that resolves to a DOM node');\n preventMouseRootCloseRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, (_e$composedPath$ = e.composedPath == null ? void 0 : e.composedPath()[0]) != null ? _e$composedPath$ : e.target);\n }, [ref]);\n var handleMouse = useEventCallback(function (e) {\n if (!preventMouseRootCloseRef.current) {\n onClose(e);\n }\n });\n var handleKeyUp = useEventCallback(function (e) {\n if (e.keyCode === escapeKeyCode) {\n onClose(e);\n }\n });\n useEffect(function () {\n if (disabled || ref == null) return undefined; // Store the current event to avoid triggering handlers immediately\n // https://github.com/facebook/react/issues/20074\n\n var currentEvent = window.event;\n var doc = ownerDocument(getRefTarget(ref)); // Use capture for this listener so it fires before React's listener, to\n // avoid false positives in the contains() check below if the target DOM\n // element is removed in the React mouse callback.\n\n var removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n var removeMouseListener = listen(doc, clickTrigger, function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleMouse(e);\n });\n var removeKeyupListener = listen(doc, 'keyup', function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleKeyUp(e);\n });\n var mobileSafariHackListeners = [];\n\n if ('ontouchstart' in doc.documentElement) {\n mobileSafariHackListeners = [].slice.call(doc.body.children).map(function (el) {\n return listen(el, 'mousemove', noop);\n });\n }\n\n return function () {\n removeMouseCaptureListener();\n removeMouseListener();\n removeKeyupListener();\n mobileSafariHackListeners.forEach(function (remove) {\n return remove();\n });\n };\n }, [ref, disabled, clickTrigger, handleMouseCapture, handleMouse, handleKeyUp]);\n}\n\nexport default useRootClose;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport safeFindDOMNode from './safeFindDOMNode';\nexport default (function (componentOrElement) {\n return ownerDocument(safeFindDOMNode(componentOrElement));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function toModifierMap(modifiers) {\n var result = {};\n\n if (!Array.isArray(modifiers)) {\n return modifiers || result;\n } // eslint-disable-next-line no-unused-expressions\n\n\n modifiers == null ? void 0 : modifiers.forEach(function (m) {\n result[m.name] = m;\n });\n return result;\n}\nexport function toModifierArray(map) {\n if (map === void 0) {\n map = {};\n }\n\n if (Array.isArray(map)) return map;\n return Object.keys(map).map(function (k) {\n map[k].name = k;\n return map[k];\n });\n}\nexport default function mergeOptionsWithPopperConfig(_ref) {\n var _modifiers$preventOve, _modifiers$preventOve2, _modifiers$offset, _modifiers$arrow;\n\n var enabled = _ref.enabled,\n enableEvents = _ref.enableEvents,\n placement = _ref.placement,\n flip = _ref.flip,\n offset = _ref.offset,\n fixed = _ref.fixed,\n containerPadding = _ref.containerPadding,\n arrowElement = _ref.arrowElement,\n _ref$popperConfig = _ref.popperConfig,\n popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig;\n var modifiers = toModifierMap(popperConfig.modifiers);\n return _extends({}, popperConfig, {\n placement: placement,\n enabled: enabled,\n strategy: fixed ? 'fixed' : popperConfig.strategy,\n modifiers: toModifierArray(_extends({}, modifiers, {\n eventListeners: {\n enabled: enableEvents\n },\n preventOverflow: _extends({}, modifiers.preventOverflow, {\n options: containerPadding ? _extends({\n padding: containerPadding\n }, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) : (_modifiers$preventOve2 = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve2.options\n }),\n offset: {\n options: _extends({\n offset: offset\n }, (_modifiers$offset = modifiers.offset) == null ? void 0 : _modifiers$offset.options)\n },\n arrow: _extends({}, modifiers.arrow, {\n enabled: !!arrowElement,\n options: _extends({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, {\n element: arrowElement\n })\n }),\n flip: _extends({\n enabled: !!flip\n }, modifiers.flip)\n }))\n });\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React, { useContext, useRef } from 'react';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport DropdownContext from './DropdownContext';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\n\nvar noop = function noop() {};\n/**\n * @memberOf Dropdown\n * @param {object} options\n * @param {boolean} options.flip Automatically adjust the menu `drop` position based on viewport edge detection\n * @param {[number, number]} options.offset Define an offset distance between the Menu and the Toggle\n * @param {boolean} options.show Display the menu manually, ignored in the context of a `Dropdown`\n * @param {boolean} options.usePopper opt in/out of using PopperJS to position menus. When disabled you must position it yourself.\n * @param {string} options.rootCloseEvent The pointer event to listen for when determining \"clicks outside\" the menu for triggering a close.\n * @param {object} options.popperConfig Options passed to the [`usePopper`](/api/usePopper) hook.\n */\n\n\nexport function useDropdownMenu(options) {\n if (options === void 0) {\n options = {};\n }\n\n var context = useContext(DropdownContext);\n\n var _useCallbackRef = useCallbackRef(),\n arrowElement = _useCallbackRef[0],\n attachArrowRef = _useCallbackRef[1];\n\n var hasShownRef = useRef(false);\n var _options = options,\n flip = _options.flip,\n offset = _options.offset,\n rootCloseEvent = _options.rootCloseEvent,\n _options$fixed = _options.fixed,\n fixed = _options$fixed === void 0 ? false : _options$fixed,\n _options$popperConfig = _options.popperConfig,\n popperConfig = _options$popperConfig === void 0 ? {} : _options$popperConfig,\n _options$usePopper = _options.usePopper,\n shouldUsePopper = _options$usePopper === void 0 ? !!context : _options$usePopper;\n var show = (context == null ? void 0 : context.show) == null ? !!options.show : context.show;\n var alignEnd = (context == null ? void 0 : context.alignEnd) == null ? options.alignEnd : context.alignEnd;\n\n if (show && !hasShownRef.current) {\n hasShownRef.current = true;\n }\n\n var handleClose = function handleClose(e) {\n context == null ? void 0 : context.toggle(false, e);\n };\n\n var _ref = context || {},\n drop = _ref.drop,\n setMenu = _ref.setMenu,\n menuElement = _ref.menuElement,\n toggleElement = _ref.toggleElement;\n\n var placement = alignEnd ? 'bottom-end' : 'bottom-start';\n if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';else if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';else if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start';\n var popper = usePopper(toggleElement, menuElement, mergeOptionsWithPopperConfig({\n placement: placement,\n enabled: !!(shouldUsePopper && show),\n enableEvents: show,\n offset: offset,\n flip: flip,\n fixed: fixed,\n arrowElement: arrowElement,\n popperConfig: popperConfig\n }));\n\n var menuProps = _extends({\n ref: setMenu || noop,\n 'aria-labelledby': toggleElement == null ? void 0 : toggleElement.id\n }, popper.attributes.popper, {\n style: popper.styles.popper\n });\n\n var metadata = {\n show: show,\n alignEnd: alignEnd,\n hasShown: hasShownRef.current,\n toggle: context == null ? void 0 : context.toggle,\n popper: shouldUsePopper ? popper : null,\n arrowProps: shouldUsePopper ? _extends({\n ref: attachArrowRef\n }, popper.attributes.arrow, {\n style: popper.styles.arrow\n }) : {}\n };\n useRootClose(menuElement, handleClose, {\n clickTrigger: rootCloseEvent,\n disabled: !show\n });\n return [menuProps, metadata];\n}\nvar propTypes = {\n /**\n * A render prop that returns a Menu element. The `props`\n * argument should spread through to **a component that can accept a ref**.\n *\n * @type {Function ({\n * show: boolean,\n * alignEnd: boolean,\n * close: (?SyntheticEvent) => void,\n * placement: Placement,\n * update: () => void,\n * forceUpdate: () => void,\n * props: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * aria-labelledby: ?string\n * },\n * arrowProps: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * },\n * }) => React.Element}\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Controls the visible state of the menu, generally this is\n * provided by the parent `Dropdown` component,\n * but may also be specified as a prop directly.\n */\n show: PropTypes.bool,\n\n /**\n * Aligns the dropdown menu to the 'end' of it's placement position.\n * Generally this is provided by the parent `Dropdown` component,\n * but may also be specified as a prop directly.\n */\n alignEnd: PropTypes.bool,\n\n /**\n * Enables the Popper.js `flip` modifier, allowing the Dropdown to\n * automatically adjust it's placement in case of overlap with the viewport or toggle.\n * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n */\n flip: PropTypes.bool,\n usePopper: PropTypes.oneOf([true, false]),\n\n /**\n * A set of popper options and props passed directly to react-popper's Popper component.\n */\n popperConfig: PropTypes.object,\n\n /**\n * Override the default event used by RootCloseWrapper.\n */\n rootCloseEvent: PropTypes.string\n};\nvar defaultProps = {\n usePopper: true\n};\n\n/**\n * Also exported as `<Dropdown.Menu>` from `Dropdown`.\n *\n * @displayName DropdownMenu\n * @memberOf Dropdown\n */\nfunction DropdownMenu(_ref2) {\n var children = _ref2.children,\n options = _objectWithoutPropertiesLoose(_ref2, [\"children\"]);\n\n var _useDropdownMenu = useDropdownMenu(options),\n props = _useDropdownMenu[0],\n meta = _useDropdownMenu[1];\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, meta.hasShown ? children(props, meta) : null);\n}\n\nDropdownMenu.displayName = 'ReactOverlaysDropdownMenu';\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.defaultProps = defaultProps;\n/** @component */\n\nexport default DropdownMenu;","import PropTypes from 'prop-types';\nimport React, { useContext, useCallback } from 'react';\nimport DropdownContext from './DropdownContext';\n\nvar noop = function noop() {};\n/**\n * Wires up Dropdown toggle functionality, returning a set a props to attach\n * to the element that functions as the dropdown toggle (generally a button).\n *\n * @memberOf Dropdown\n */\n\n\nexport function useDropdownToggle() {\n var _ref = useContext(DropdownContext) || {},\n _ref$show = _ref.show,\n show = _ref$show === void 0 ? false : _ref$show,\n _ref$toggle = _ref.toggle,\n toggle = _ref$toggle === void 0 ? noop : _ref$toggle,\n setToggle = _ref.setToggle;\n\n var handleClick = useCallback(function (e) {\n toggle(!show, e);\n }, [show, toggle]);\n return [{\n ref: setToggle || noop,\n onClick: handleClick,\n 'aria-haspopup': true,\n 'aria-expanded': !!show\n }, {\n show: show,\n toggle: toggle\n }];\n}\nvar propTypes = {\n /**\n * A render prop that returns a Toggle element. The `props`\n * argument should spread through to **a component that can accept a ref**. Use\n * the `onToggle` argument to toggle the menu open or closed\n *\n * @type {Function ({\n * show: boolean,\n * toggle: (show: boolean) => void,\n * props: {\n * ref: (?HTMLElement) => void,\n * aria-haspopup: true\n * aria-expanded: boolean\n * },\n * }) => React.Element}\n */\n children: PropTypes.func.isRequired\n};\n\n/**\n * Also exported as `<Dropdown.Toggle>` from `Dropdown`.\n *\n * @displayName DropdownToggle\n * @memberOf Dropdown\n */\nfunction DropdownToggle(_ref2) {\n var children = _ref2.children;\n\n var _useDropdownToggle = useDropdownToggle(),\n props = _useDropdownToggle[0],\n meta = _useDropdownToggle[1];\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, children(props, meta));\n}\n\nDropdownToggle.displayName = 'ReactOverlaysDropdownToggle';\nDropdownToggle.propTypes = propTypes;\n/** @component */\n\nexport default DropdownToggle;","import matches from 'dom-helpers/matches';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport React, { useCallback, useRef, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useGlobalListener from '@restart/hooks/useGlobalListener';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nvar propTypes = {\n /**\n * A render prop that returns the root dropdown element. The `props`\n * argument should spread through to an element containing _both_ the\n * menu and toggle in order to handle keyboard events for focus management.\n *\n * @type {Function ({\n * props: {\n * onKeyDown: (SyntheticEvent) => void,\n * },\n * }) => React.Element}\n */\n children: PropTypes.node,\n\n /**\n * Determines the direction and location of the Menu in relation to it's Toggle.\n */\n drop: PropTypes.oneOf(['up', 'left', 'right', 'down']),\n\n /**\n * Controls the focus behavior for when the Dropdown is opened. Set to\n * `true` to always focus the first menu item, `keyboard` to focus only when\n * navigating via the keyboard, or `false` to disable completely\n *\n * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n */\n focusFirstItemOnShow: PropTypes.oneOf([false, true, 'keyboard']),\n\n /**\n * A css slector string that will return __focusable__ menu items.\n * Selectors should be relative to the menu component:\n * e.g. ` > li:not('.disabled')`\n */\n itemSelector: PropTypes.string,\n\n /**\n * Align the menu to the 'end' side of the placement side of the Dropdown toggle. The default placement is `top-start` or `bottom-start`.\n */\n alignEnd: PropTypes.bool,\n\n /**\n * Whether or not the Dropdown is visible.\n *\n * @controllable onToggle\n */\n show: PropTypes.bool,\n\n /**\n * Sets the initial show position of the Dropdown.\n */\n defaultShow: PropTypes.bool,\n\n /**\n * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n *\n * ```ts static\n * function(\n * isOpen: boolean,\n * event: SyntheticEvent,\n * ): void\n * ```\n *\n * @controllable show\n */\n onToggle: PropTypes.func\n};\n\nfunction useRefWithUpdate() {\n var forceUpdate = useForceUpdate();\n var ref = useRef(null);\n var attachRef = useCallback(function (element) {\n ref.current = element; // ensure that a menu set triggers an update for consumers\n\n forceUpdate();\n }, [forceUpdate]);\n return [ref, attachRef];\n}\n/**\n * @displayName Dropdown\n * @public\n */\n\n\nfunction Dropdown(_ref) {\n var drop = _ref.drop,\n alignEnd = _ref.alignEnd,\n defaultShow = _ref.defaultShow,\n rawShow = _ref.show,\n rawOnToggle = _ref.onToggle,\n _ref$itemSelector = _ref.itemSelector,\n itemSelector = _ref$itemSelector === void 0 ? '* > *' : _ref$itemSelector,\n focusFirstItemOnShow = _ref.focusFirstItemOnShow,\n children = _ref.children;\n\n var _useUncontrolledProp = useUncontrolledProp(rawShow, defaultShow, rawOnToggle),\n show = _useUncontrolledProp[0],\n onToggle = _useUncontrolledProp[1]; // We use normal refs instead of useCallbackRef in order to populate the\n // the value as quickly as possible, otherwise the effect to focus the element\n // may run before the state value is set\n\n\n var _useRefWithUpdate = useRefWithUpdate(),\n menuRef = _useRefWithUpdate[0],\n setMenu = _useRefWithUpdate[1];\n\n var menuElement = menuRef.current;\n\n var _useRefWithUpdate2 = useRefWithUpdate(),\n toggleRef = _useRefWithUpdate2[0],\n setToggle = _useRefWithUpdate2[1];\n\n var toggleElement = toggleRef.current;\n var lastShow = usePrevious(show);\n var lastSourceEvent = useRef(null);\n var focusInDropdown = useRef(false);\n var toggle = useCallback(function (nextShow, event) {\n onToggle(nextShow, event);\n }, [onToggle]);\n var context = useMemo(function () {\n return {\n toggle: toggle,\n drop: drop,\n show: show,\n alignEnd: alignEnd,\n menuElement: menuElement,\n toggleElement: toggleElement,\n setMenu: setMenu,\n setToggle: setToggle\n };\n }, [toggle, drop, show, alignEnd, menuElement, toggleElement, setMenu, setToggle]);\n\n if (menuElement && lastShow && !show) {\n focusInDropdown.current = menuElement.contains(document.activeElement);\n }\n\n var focusToggle = useEventCallback(function () {\n if (toggleElement && toggleElement.focus) {\n toggleElement.focus();\n }\n });\n var maybeFocusFirst = useEventCallback(function () {\n var type = lastSourceEvent.current;\n var focusType = focusFirstItemOnShow;\n\n if (focusType == null) {\n focusType = menuRef.current && matches(menuRef.current, '[role=menu]') ? 'keyboard' : false;\n }\n\n if (focusType === false || focusType === 'keyboard' && !/^key.+$/.test(type)) {\n return;\n }\n\n var first = qsa(menuRef.current, itemSelector)[0];\n if (first && first.focus) first.focus();\n });\n useEffect(function () {\n if (show) maybeFocusFirst();else if (focusInDropdown.current) {\n focusInDropdown.current = false;\n focusToggle();\n } // only `show` should be changing\n }, [show, focusInDropdown, focusToggle, maybeFocusFirst]);\n useEffect(function () {\n lastSourceEvent.current = null;\n });\n\n var getNextFocusedChild = function getNextFocusedChild(current, offset) {\n if (!menuRef.current) return null;\n var items = qsa(menuRef.current, itemSelector);\n var index = items.indexOf(current) + offset;\n index = Math.max(0, Math.min(index, items.length));\n return items[index];\n };\n\n useGlobalListener('keydown', function (event) {\n var _menuRef$current, _toggleRef$current;\n\n var key = event.key;\n var target = event.target;\n var fromMenu = (_menuRef$current = menuRef.current) == null ? void 0 : _menuRef$current.contains(target);\n var fromToggle = (_toggleRef$current = toggleRef.current) == null ? void 0 : _toggleRef$current.contains(target); // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n // in inscrutability\n\n var isInput = /input|textarea/i.test(target.tagName);\n\n if (isInput && (key === ' ' || key !== 'Escape' && fromMenu)) {\n return;\n }\n\n if (!fromMenu && !fromToggle) {\n return;\n }\n\n if (!menuRef.current && key === 'Tab') {\n return;\n }\n\n lastSourceEvent.current = event.type;\n\n switch (key) {\n case 'ArrowUp':\n {\n var next = getNextFocusedChild(target, -1);\n if (next && next.focus) next.focus();\n event.preventDefault();\n return;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n\n if (!show) {\n onToggle(true, event);\n } else {\n var _next = getNextFocusedChild(target, 1);\n\n if (_next && _next.focus) _next.focus();\n }\n\n return;\n\n case 'Tab':\n // on keydown the target is the element being tabbed FROM, we need that\n // to know if this event is relevant to this dropdown (e.g. in this menu).\n // On `keyup` the target is the element being tagged TO which we use to check\n // if focus has left the menu\n addEventListener(document, 'keyup', function (e) {\n var _menuRef$current2;\n\n if (e.key === 'Tab' && !e.target || !((_menuRef$current2 = menuRef.current) != null && _menuRef$current2.contains(e.target))) {\n onToggle(false, event);\n }\n }, {\n once: true\n });\n break;\n\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n onToggle(false, event);\n break;\n\n default:\n }\n });\n return /*#__PURE__*/React.createElement(DropdownContext.Provider, {\n value: context\n }, children);\n}\n\nDropdown.displayName = 'ReactOverlaysDropdown';\nDropdown.propTypes = propTypes;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","import React from 'react'; // TODO (apparently this is a bare \"onSelect\"?)\n\nvar SelectableContext = /*#__PURE__*/React.createContext(null);\nexport var makeEventKey = function makeEventKey(eventKey, href) {\n if (href === void 0) {\n href = null;\n }\n\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","import React from 'react'; // TODO: check this\n\nvar NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.filter(function (f) {\n return f != null;\n }).reduce(function (acc, f) {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n // @ts-ignore\n acc.apply(this, args); // @ts-ignore\n\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"disabled\", \"onKeyDown\"];\nimport React from 'react';\nimport createChainedFunction from './createChainedFunction';\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'a' : _ref$as,\n disabled = _ref.disabled,\n onKeyDown = _ref.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var handleClick = function handleClick(event) {\n var href = props.href,\n onClick = props.onClick;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n onClick: handleClick,\n onKeyDown: createChainedFunction(handleKeyDown, onKeyDown)\n }));\n});\nSafeAnchor.displayName = 'SafeAnchor';\nexport default SafeAnchor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"eventKey\", \"disabled\", \"href\", \"onClick\", \"onSelect\", \"active\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavContext from './NavContext';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n as: SafeAnchor,\n disabled: false\n};\nvar DropdownItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n eventKey = _ref.eventKey,\n disabled = _ref.disabled,\n href = _ref.href,\n onClick = _ref.onClick,\n onSelect = _ref.onSelect,\n propActive = _ref.active,\n Component = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n var onSelectCtx = useContext(SelectableContext);\n var navContext = useContext(NavContext);\n\n var _ref2 = navContext || {},\n activeKey = _ref2.activeKey;\n\n var key = makeEventKey(eventKey, href);\n var active = propActive == null && key != null ? makeEventKey(activeKey) === key : propActive;\n var handleClick = useEventCallback(function (event) {\n // SafeAnchor handles the disabled case, but we handle it here\n // for other components\n if (disabled) return;\n if (onClick) onClick(event);\n if (onSelectCtx) onSelectCtx(key, event);\n if (onSelect) onSelect(key, event);\n });\n return (\n /*#__PURE__*/\n // \"TS2604: JSX element type 'Component' does not have any construct or call signatures.\"\n // @ts-ignore\n React.createElement(Component, _extends({}, props, {\n ref: ref,\n href: href,\n disabled: disabled,\n className: classNames(className, prefix, active && 'active', disabled && 'disabled'),\n onClick: handleClick\n }), children)\n );\n});\nDropdownItem.displayName = 'DropdownItem';\nDropdownItem.defaultProps = defaultProps;\nexport default DropdownItem;","import { useMemo } from 'react';\nconst toFnRef = ref => !ref || typeof ref === 'function' ? ref : value => {\n ref.current = value;\n};\nexport function mergeRefs(refA, refB) {\n const a = toFnRef(refA);\n const b = toFnRef(refB);\n return value => {\n if (a) a(value);\n if (b) b(value);\n };\n}\n\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\nfunction useMergedRefs(refA, refB) {\n return useMemo(() => mergeRefs(refA, refB), [refA, refB]);\n}\nexport default useMergedRefs;","import React from 'react'; // TODO: check\n\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import invariant from 'invariant';\nimport { useCallback } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nexport default function useWrappedRefWithWarning(ref, componentName) {\n // @ts-ignore\n if (!(process.env.NODE_ENV !== \"production\")) return ref; // eslint-disable-next-line react-hooks/rules-of-hooks\n\n var warningRef = useCallback(function (refValue) {\n !(refValue == null || !refValue.isReactComponent) ? process.env.NODE_ENV !== \"production\" ? invariant(false, componentName + \" injected a ref to a provided `as` component that resolved to a component instance instead of a DOM element. \" + 'Use `React.forwardRef` to provide the injected ref to the class component as a prop in order to pass it directly to a DOM element') : invariant(false) : void 0;\n }, [componentName]); // eslint-disable-next-line react-hooks/rules-of-hooks\n\n return useMergedRefs(warningRef, ref);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import { useCallback, useMemo, useRef } from 'react';\nimport hasClass from 'dom-helpers/hasClass';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nfunction getMargins(element) {\n var styles = window.getComputedStyle(element);\n var top = parseFloat(styles.marginTop) || 0;\n var right = parseFloat(styles.marginRight) || 0;\n var bottom = parseFloat(styles.marginBottom) || 0;\n var left = parseFloat(styles.marginLeft) || 0;\n return {\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n}\n\nexport default function usePopperMarginModifiers() {\n var overlayRef = useRef(null);\n var margins = useRef(null);\n var arrowMargins = useRef(null);\n var popoverClass = useBootstrapPrefix(undefined, 'popover');\n var dropdownMenuClass = useBootstrapPrefix(undefined, 'dropdown-menu');\n var callback = useCallback(function (overlay) {\n if (!overlay || !(hasClass(overlay, popoverClass) || hasClass(overlay, dropdownMenuClass))) return;\n margins.current = getMargins(overlay);\n overlay.style.margin = '0';\n overlayRef.current = overlay;\n }, [popoverClass, dropdownMenuClass]);\n var offset = useMemo(function () {\n return {\n name: 'offset',\n options: {\n offset: function offset(_ref) {\n var placement = _ref.placement;\n if (!margins.current) return [0, 0];\n var _margins$current = margins.current,\n top = _margins$current.top,\n left = _margins$current.left,\n bottom = _margins$current.bottom,\n right = _margins$current.right;\n\n switch (placement.split('-')[0]) {\n case 'top':\n return [0, bottom];\n\n case 'left':\n return [0, right];\n\n case 'bottom':\n return [0, top];\n\n case 'right':\n return [0, left];\n\n default:\n return [0, 0];\n }\n }\n }\n };\n }, [margins]);\n var arrow = useMemo(function () {\n return {\n name: 'arrow',\n options: {\n padding: function padding() {\n // The options here are used for Popper 2.8.4 and up.\n // For earlier version, padding is handled in popoverArrowMargins below.\n if (!arrowMargins.current) {\n return 0;\n }\n\n var _arrowMargins$current = arrowMargins.current,\n top = _arrowMargins$current.top,\n right = _arrowMargins$current.right;\n var padding = top || right;\n return {\n top: padding,\n left: padding,\n right: padding,\n bottom: padding\n };\n }\n }\n };\n }, [arrowMargins]); // Converts popover arrow margin to arrow modifier padding\n\n var popoverArrowMargins = useMemo(function () {\n return {\n name: 'popoverArrowMargins',\n enabled: true,\n phase: 'main',\n fn: function fn() {\n return undefined;\n },\n requiresIfExists: ['arrow'],\n effect: function effect(_ref2) {\n var state = _ref2.state;\n\n if (!overlayRef.current || !state.elements.arrow || !hasClass(overlayRef.current, popoverClass)) {\n return undefined;\n }\n\n if (state.modifiersData['arrow#persistent']) {\n // @popperjs/core <= 2.8.3 uses arrow#persistent to pass padding to arrow modifier.\n var _getMargins = getMargins(state.elements.arrow),\n top = _getMargins.top,\n right = _getMargins.right;\n\n var padding = top || right;\n state.modifiersData['arrow#persistent'].padding = {\n top: padding,\n left: padding,\n right: padding,\n bottom: padding\n };\n } else {\n // @popperjs/core >= 2.8.4 gets the padding from the arrow modifier options,\n // so we'll get the margins here, and let the arrow modifier above pass\n // it to popper.\n arrowMargins.current = getMargins(state.elements.arrow);\n }\n\n state.elements.arrow.style.margin = '0';\n return function () {\n if (state.elements.arrow) state.elements.arrow.style.margin = '';\n };\n }\n };\n }, [popoverClass]);\n return [callback, [offset, arrow, popoverArrowMargins]];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"align\", \"alignRight\", \"rootCloseEvent\", \"flip\", \"show\", \"renderOnMount\", \"as\", \"popperConfig\"];\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { useContext } from 'react';\nimport { useDropdownMenu } from 'react-overlays/DropdownMenu';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport warning from 'warning';\nimport NavbarContext from './NavbarContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nvar alignDirection = PropTypes.oneOf(['left', 'right']);\nexport var alignPropType = PropTypes.oneOfType([alignDirection, PropTypes.shape({\n sm: alignDirection\n}), PropTypes.shape({\n md: alignDirection\n}), PropTypes.shape({\n lg: alignDirection\n}), PropTypes.shape({\n xl: alignDirection\n})]);\nvar defaultProps = {\n align: 'left',\n alignRight: false,\n flip: true\n};\nvar DropdownMenu = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n align = _ref.align,\n alignRight = _ref.alignRight,\n rootCloseEvent = _ref.rootCloseEvent,\n flip = _ref.flip,\n showProps = _ref.show,\n renderOnMount = _ref.renderOnMount,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n popperConfig = _ref.popperConfig,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var isNavbar = useContext(NavbarContext);\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n\n var _usePopperMarginModif = usePopperMarginModifiers(),\n popperRef = _usePopperMarginModif[0],\n marginModifiers = _usePopperMarginModif[1];\n\n var alignClasses = [];\n\n if (align) {\n if (typeof align === 'object') {\n var keys = Object.keys(align);\n process.env.NODE_ENV !== \"production\" ? warning(keys.length === 1, 'There should only be 1 breakpoint when passing an object to `align`') : void 0;\n\n if (keys.length) {\n var brkPoint = keys[0];\n var direction = align[brkPoint]; // .dropdown-menu-right is required for responsively aligning\n // left in addition to align left classes.\n // Reuse alignRight to toggle the class below.\n\n alignRight = direction === 'left';\n alignClasses.push(prefix + \"-\" + brkPoint + \"-\" + direction);\n }\n } else if (align === 'right') {\n alignRight = true;\n }\n }\n\n var _useDropdownMenu = useDropdownMenu({\n flip: flip,\n rootCloseEvent: rootCloseEvent,\n show: showProps,\n alignEnd: alignRight,\n usePopper: !isNavbar && alignClasses.length === 0,\n popperConfig: _extends({}, popperConfig, {\n modifiers: marginModifiers.concat((popperConfig == null ? void 0 : popperConfig.modifiers) || [])\n })\n }),\n menuProps = _useDropdownMenu[0],\n _useDropdownMenu$ = _useDropdownMenu[1],\n hasShown = _useDropdownMenu$.hasShown,\n popper = _useDropdownMenu$.popper,\n show = _useDropdownMenu$.show,\n alignEnd = _useDropdownMenu$.alignEnd,\n toggle = _useDropdownMenu$.toggle;\n\n menuProps.ref = useMergedRefs(popperRef, useMergedRefs(useWrappedRefWithWarning(ref, 'DropdownMenu'), menuProps.ref));\n if (!hasShown && !renderOnMount) return null; // For custom components provide additional, non-DOM, props;\n\n if (typeof Component !== 'string') {\n menuProps.show = show;\n\n menuProps.close = function () {\n return toggle == null ? void 0 : toggle(false);\n };\n\n menuProps.alignRight = alignEnd;\n }\n\n var style = props.style;\n\n if (popper != null && popper.placement) {\n // we don't need the default popper style,\n // menus are display: none when not shown.\n style = _extends({}, props.style, menuProps.style);\n props['x-placement'] = popper.placement;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, menuProps, {\n style: style,\n className: classNames.apply(void 0, [className, prefix, show && 'show', alignEnd && prefix + \"-right\"].concat(alignClasses))\n }));\n});\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\nexport default DropdownMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false\n};\nvar Button = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n size = _ref.size,\n active = _ref.active,\n className = _ref.className,\n block = _ref.block,\n type = _ref.type,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n var classes = classNames(className, prefix, active && 'active', variant && prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n if (props.href) {\n return /*#__PURE__*/React.createElement(SafeAnchor, _extends({}, props, {\n as: as,\n ref: ref,\n className: classNames(classes, props.disabled && 'disabled')\n }));\n }\n\n if (ref) {\n props.ref = ref;\n }\n\n if (type) {\n props.type = type;\n } else if (!as) {\n props.type = 'button';\n }\n\n var Component = as || 'button';\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n className: classes\n }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"split\", \"className\", \"childBsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport React from 'react';\nimport { useDropdownToggle } from 'react-overlays/DropdownToggle';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport Button from './Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nvar DropdownToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n split = _ref.split,\n className = _ref.className,\n childBsPrefix = _ref.childBsPrefix,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? Button : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');\n\n if (childBsPrefix !== undefined) {\n props.bsPrefix = childBsPrefix;\n }\n\n var _useDropdownToggle = useDropdownToggle(),\n toggleProps = _useDropdownToggle[0];\n\n toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle')); // This intentionally forwards size and variant (if set) to the\n // underlying component, to allow it to render size and style variants.\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(className, prefix, split && prefix + \"-split\")\n }, toggleProps, props));\n});\nDropdownToggle.displayName = 'DropdownToggle';\nexport default DropdownToggle;","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"bsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n Component = _ref.Component,\n defaultProps = _ref.defaultProps;\n\n var BsComponent = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var className = _ref2.className,\n bsPrefix = _ref2.bsPrefix,\n _ref2$as = _ref2.as,\n Tag = _ref2$as === void 0 ? Component || 'div' : _ref2$as,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: ref,\n className: classNames(className, resolvedPrefix)\n }, props));\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"drop\", \"show\", \"className\", \"alignRight\", \"onSelect\", \"onToggle\", \"focusFirstItemOnShow\", \"as\", \"navbar\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport BaseDropdown from 'react-overlays/Dropdown';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownItem from './DropdownItem';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport SelectableContext from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar DropdownHeader = createWithBsPrefix('dropdown-header', {\n defaultProps: {\n role: 'heading'\n }\n});\nvar DropdownDivider = createWithBsPrefix('dropdown-divider', {\n defaultProps: {\n role: 'separator'\n }\n});\nvar DropdownItemText = createWithBsPrefix('dropdown-item-text', {\n Component: 'span'\n});\nvar defaultProps = {\n navbar: false\n};\nvar Dropdown = /*#__PURE__*/React.forwardRef(function (pProps, ref) {\n var _useUncontrolled = useUncontrolled(pProps, {\n show: 'onToggle'\n }),\n bsPrefix = _useUncontrolled.bsPrefix,\n drop = _useUncontrolled.drop,\n show = _useUncontrolled.show,\n className = _useUncontrolled.className,\n alignRight = _useUncontrolled.alignRight,\n onSelect = _useUncontrolled.onSelect,\n onToggle = _useUncontrolled.onToggle,\n focusFirstItemOnShow = _useUncontrolled.focusFirstItemOnShow,\n _useUncontrolled$as = _useUncontrolled.as,\n Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n _4 = _useUncontrolled.navbar,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var onSelectCtx = useContext(SelectableContext);\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n var handleToggle = useEventCallback(function (nextShow, event, source) {\n if (source === void 0) {\n source = event.type;\n }\n\n if (event.currentTarget === document && (source !== 'keydown' || event.key === 'Escape')) source = 'rootClose';\n\n if (onToggle) {\n onToggle(nextShow, event, {\n source: source\n });\n }\n });\n var handleSelect = useEventCallback(function (key, event) {\n if (onSelectCtx) onSelectCtx(key, event);\n if (onSelect) onSelect(key, event);\n handleToggle(false, event, 'select');\n });\n return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: handleSelect\n }, /*#__PURE__*/React.createElement(BaseDropdown, {\n drop: drop,\n show: show,\n alignEnd: alignRight,\n onToggle: handleToggle,\n focusFirstItemOnShow: focusFirstItemOnShow,\n itemSelector: \".\" + prefix + \"-item:not(.disabled):not(:disabled)\"\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'right' && 'dropright', drop === 'left' && 'dropleft')\n }))));\n});\nDropdown.displayName = 'Dropdown';\nDropdown.defaultProps = defaultProps;\nDropdown.Divider = DropdownDivider;\nDropdown.Header = DropdownHeader;\nDropdown.Item = DropdownItem;\nDropdown.ItemText = DropdownItemText;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"title\", \"children\", \"bsPrefix\", \"rootCloseEvent\", \"variant\", \"size\", \"menuAlign\", \"menuRole\", \"renderMenuOnMount\", \"disabled\", \"href\", \"id\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Dropdown from './Dropdown';\nimport DropdownToggle from './DropdownToggle';\nimport DropdownMenu, { alignPropType } from './DropdownMenu';\nvar propTypes = {\n /**\n * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n * @type {string|number}\n * @required\n */\n id: PropTypes.any,\n\n /** An `href` passed to the Toggle component */\n href: PropTypes.string,\n\n /** An `onClick` handler passed to the Toggle component */\n onClick: PropTypes.func,\n\n /** The content of the non-toggle Button. */\n title: PropTypes.node.isRequired,\n\n /** Disables both Buttons */\n disabled: PropTypes.bool,\n\n /**\n * Aligns the dropdown menu responsively.\n *\n * _see [DropdownMenu](#dropdown-menu-props) for more details_\n *\n * @type {\"left\"|\"right\"|{ sm: \"left\"|\"right\" }|{ md: \"left\"|\"right\" }|{ lg: \"left\"|\"right\" }|{ xl: \"left\"|\"right\"} }\n */\n menuAlign: alignPropType,\n\n /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n menuRole: PropTypes.string,\n\n /** Whether to render the dropdown menu in the DOM before the first time it is shown */\n renderMenuOnMount: PropTypes.bool,\n\n /**\n * Which event when fired outside the component will cause it to be closed.\n *\n * _see [DropdownMenu](#dropdown-menu-props) for more details_\n */\n rootCloseEvent: PropTypes.string,\n\n /** @ignore */\n bsPrefix: PropTypes.string,\n\n /** @ignore */\n variant: PropTypes.string,\n\n /** @ignore */\n size: PropTypes.string\n};\n/**\n * A convenience component for simple or general use dropdowns. Renders a `Button` toggle and all `children`\n * are passed directly to the default `Dropdown.Menu`. This component accepts all of\n * [`Dropdown`'s props](#dropdown-props).\n *\n * _All unknown props are passed through to the `Dropdown` component._ Only\n * the Button `variant`, `size` and `bsPrefix` props are passed to the toggle,\n * along with menu-related props are passed to the `Dropdown.Menu`\n */\n\nvar DropdownButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var title = _ref.title,\n children = _ref.children,\n bsPrefix = _ref.bsPrefix,\n rootCloseEvent = _ref.rootCloseEvent,\n variant = _ref.variant,\n size = _ref.size,\n menuAlign = _ref.menuAlign,\n menuRole = _ref.menuRole,\n renderMenuOnMount = _ref.renderMenuOnMount,\n disabled = _ref.disabled,\n href = _ref.href,\n id = _ref.id,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(Dropdown, _extends({\n ref: ref\n }, props), /*#__PURE__*/React.createElement(DropdownToggle, {\n id: id,\n href: href,\n size: size,\n variant: variant,\n disabled: disabled,\n childBsPrefix: bsPrefix\n }, title), /*#__PURE__*/React.createElement(DropdownMenu, {\n align: menuAlign,\n role: menuRole,\n renderOnMount: renderMenuOnMount,\n rootCloseEvent: rootCloseEvent\n }, children));\n});\nDropdownButton.displayName = 'DropdownButton';\nDropdownButton.propTypes = propTypes;\nexport default DropdownButton;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavbarBrand = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n var Component = as || (props.href ? 'a' : 'span');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }));\n});\nNavbarBrand.displayName = 'NavbarBrand';\nexport default NavbarBrand;","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\n}","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\n\nfunction parseDuration(node, property) {\n var str = css(node, property) || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nexport default function transitionEndListener(element, handler) {\n var duration = parseDuration(element, 'transitionDuration');\n var delay = parseDuration(element, 'transitionDelay');\n var remove = transitionEnd(element, function (e) {\n if (e.target === element) {\n remove();\n handler(e);\n }\n }, duration + delay);\n}","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n node.offsetHeight;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"className\", \"children\", \"dimension\", \"getDimensionValue\"];\n\nvar _collapseStyles;\n\nimport classNames from 'classnames';\nimport css from 'dom-helpers/css';\nimport React, { useMemo } from 'react';\nimport Transition, { ENTERED, ENTERING, EXITED, EXITING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport createChainedFunction from './createChainedFunction';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar MARGINS = {\n height: ['marginTop', 'marginBottom'],\n width: ['marginLeft', 'marginRight']\n};\n\nfunction getDefaultDimensionValue(dimension, elem) {\n var offset = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n var value = elem[offset];\n var margins = MARGINS[dimension];\n return value + // @ts-ignore\n parseInt(css(elem, margins[0]), 10) + // @ts-ignore\n parseInt(css(elem, margins[1]), 10);\n}\n\nvar collapseStyles = (_collapseStyles = {}, _collapseStyles[EXITED] = 'collapse', _collapseStyles[EXITING] = 'collapsing', _collapseStyles[ENTERING] = 'collapsing', _collapseStyles[ENTERED] = 'collapse show', _collapseStyles);\nvar defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n getDimensionValue: getDefaultDimensionValue\n};\nvar Collapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var onEnter = _ref.onEnter,\n onEntering = _ref.onEntering,\n onEntered = _ref.onEntered,\n onExit = _ref.onExit,\n onExiting = _ref.onExiting,\n className = _ref.className,\n children = _ref.children,\n _ref$dimension = _ref.dimension,\n dimension = _ref$dimension === void 0 ? 'height' : _ref$dimension,\n _ref$getDimensionValu = _ref.getDimensionValue,\n getDimensionValue = _ref$getDimensionValu === void 0 ? getDefaultDimensionValue : _ref$getDimensionValu,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n /* Compute dimension */\n var computedDimension = typeof dimension === 'function' ? dimension() : dimension;\n /* -- Expanding -- */\n\n var handleEnter = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = '0';\n }, onEnter);\n }, [computedDimension, onEnter]);\n var handleEntering = useMemo(function () {\n return createChainedFunction(function (elem) {\n var scroll = \"scroll\" + computedDimension[0].toUpperCase() + computedDimension.slice(1);\n elem.style[computedDimension] = elem[scroll] + \"px\";\n }, onEntering);\n }, [computedDimension, onEntering]);\n var handleEntered = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = null;\n }, onEntered);\n }, [computedDimension, onEntered]);\n /* -- Collapsing -- */\n\n var handleExit = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = getDimensionValue(computedDimension, elem) + \"px\";\n triggerBrowserReflow(elem);\n }, onExit);\n }, [onExit, getDimensionValue, computedDimension]);\n var handleExiting = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = null;\n }, onExiting);\n }, [computedDimension, onExiting]);\n return /*#__PURE__*/React.createElement(Transition // @ts-ignore\n , _extends({\n ref: ref,\n addEndListener: transitionEndListener\n }, props, {\n \"aria-expanded\": props.role ? props.in : null,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: handleEntered,\n onExit: handleExit,\n onExiting: handleExiting\n }), function (state, innerProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {\n className: classNames(className, children.props.className, collapseStyles[state], computedDimension === 'width' && 'width')\n }));\n });\n}); // @ts-ignore\n\n// @ts-ignore\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"bsPrefix\"];\nimport React from 'react';\nimport Collapse from './Collapse';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nvar NavbarCollapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var children = _ref.children,\n bsPrefix = _ref.bsPrefix,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n return /*#__PURE__*/React.createElement(NavbarContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(Collapse, _extends({\n in: !!(context && context.expanded)\n }, props), /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: bsPrefix\n }, children));\n });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nexport default NavbarCollapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"label\", \"as\", \"onClick\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nvar defaultProps = {\n label: 'Toggle navigation'\n};\nvar NavbarToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n label = _ref.label,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'button' : _ref$as,\n onClick = _ref.onClick,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n\n var _ref2 = useContext(NavbarContext) || {},\n onToggle = _ref2.onToggle,\n expanded = _ref2.expanded;\n\n var handleClick = useEventCallback(function (e) {\n if (onClick) onClick(e);\n if (onToggle) onToggle();\n });\n\n if (Component === 'button') {\n props.type = 'button';\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n onClick: handleClick,\n \"aria-label\": label,\n className: classNames(className, bsPrefix, !expanded && 'collapsed')\n }), children || /*#__PURE__*/React.createElement(\"span\", {\n className: bsPrefix + \"-icon\"\n }));\n});\nNavbarToggle.displayName = 'NavbarToggle';\nNavbarToggle.defaultProps = defaultProps;\nexport default NavbarToggle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"expand\", \"variant\", \"bg\", \"fixed\", \"sticky\", \"className\", \"children\", \"as\", \"expanded\", \"onToggle\", \"onSelect\", \"collapseOnSelect\"];\nimport classNames from 'classnames';\nimport React, { useCallback, useMemo } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport NavbarBrand from './NavbarBrand';\nimport NavbarCollapse from './NavbarCollapse';\nimport NavbarToggle from './NavbarToggle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport SelectableContext from './SelectableContext';\nvar NavbarText = createWithBsPrefix('navbar-text', {\n Component: 'span'\n});\nvar defaultProps = {\n expand: true,\n variant: 'light',\n collapseOnSelect: false\n};\nvar Navbar = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _useUncontrolled = useUncontrolled(props, {\n expanded: 'onToggle'\n }),\n initialBsPrefix = _useUncontrolled.bsPrefix,\n expand = _useUncontrolled.expand,\n variant = _useUncontrolled.variant,\n bg = _useUncontrolled.bg,\n fixed = _useUncontrolled.fixed,\n sticky = _useUncontrolled.sticky,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n _useUncontrolled$as = _useUncontrolled.as,\n Component = _useUncontrolled$as === void 0 ? 'nav' : _useUncontrolled$as,\n expanded = _useUncontrolled.expanded,\n _onToggle = _useUncontrolled.onToggle,\n onSelect = _useUncontrolled.onSelect,\n collapseOnSelect = _useUncontrolled.collapseOnSelect,\n controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'navbar');\n var handleCollapse = useCallback(function () {\n if (onSelect) onSelect.apply(void 0, arguments);\n\n if (collapseOnSelect && expanded) {\n if (_onToggle) {\n _onToggle(false);\n }\n }\n }, [onSelect, collapseOnSelect, expanded, _onToggle]); // will result in some false positives but that seems better\n // than false negatives. strict `undefined` check allows explicit\n // \"nulling\" of the role if the user really doesn't want one\n\n if (controlledProps.role === undefined && Component !== 'nav') {\n controlledProps.role = 'navigation';\n }\n\n var expandClass = bsPrefix + \"-expand\";\n if (typeof expand === 'string') expandClass = expandClass + \"-\" + expand;\n var navbarContext = useMemo(function () {\n return {\n onToggle: function onToggle() {\n return _onToggle && _onToggle(!expanded);\n },\n bsPrefix: bsPrefix,\n expanded: !!expanded\n };\n }, [bsPrefix, expanded, _onToggle]);\n return /*#__PURE__*/React.createElement(NavbarContext.Provider, {\n value: navbarContext\n }, /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: handleCollapse\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, controlledProps, {\n className: classNames(className, bsPrefix, expand && expandClass, variant && bsPrefix + \"-\" + variant, bg && \"bg-\" + bg, sticky && \"sticky-\" + sticky, fixed && \"fixed-\" + fixed)\n }), children)));\n});\nNavbar.defaultProps = defaultProps;\nNavbar.displayName = 'Navbar';\nNavbar.Brand = NavbarBrand;\nNavbar.Toggle = NavbarToggle;\nNavbar.Collapse = NavbarCollapse;\nNavbar.Text = NavbarText;\nexport default Navbar;","import React from 'react';\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardContext';\nexport default context;","import React from 'react';\nvar TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\nimport qsa from 'dom-helpers/querySelectorAll';\nimport React, { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nvar noop = function noop() {};\n\nvar AbstractNav = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'ul' : _ref$as,\n onSelect = _ref.onSelect,\n activeKey = _ref.activeKey,\n role = _ref.role,\n onKeyDown = _ref.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n // and don't want to reset the set in the effect\n var forceUpdate = useForceUpdate();\n var needsRefocusRef = useRef(false);\n var parentOnSelect = useContext(SelectableContext);\n var tabContext = useContext(TabContext);\n var getControlledId, getControllerId;\n\n if (tabContext) {\n role = role || 'tablist';\n activeKey = tabContext.activeKey;\n getControlledId = tabContext.getControlledId;\n getControllerId = tabContext.getControllerId;\n }\n\n var listNode = useRef(null);\n\n var getNextActiveChild = function getNextActiveChild(offset) {\n var currentListNode = listNode.current;\n if (!currentListNode) return null;\n var items = qsa(currentListNode, '[data-rb-event-key]:not(.disabled)');\n var activeChild = currentListNode.querySelector('.active');\n if (!activeChild) return null;\n var index = items.indexOf(activeChild);\n if (index === -1) return null;\n var nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n\n var handleSelect = function handleSelect(key, event) {\n if (key == null) return;\n if (onSelect) onSelect(key, event);\n if (parentOnSelect) parentOnSelect(key, event);\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (onKeyDown) onKeyDown(event);\n var nextActiveChild;\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = getNextActiveChild(-1);\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = getNextActiveChild(1);\n break;\n\n default:\n return;\n }\n\n if (!nextActiveChild) return;\n event.preventDefault();\n handleSelect(nextActiveChild.dataset.rbEventKey, event);\n needsRefocusRef.current = true;\n forceUpdate();\n };\n\n useEffect(function () {\n if (listNode.current && needsRefocusRef.current) {\n var activeChild = listNode.current.querySelector('[data-rb-event-key].active');\n if (activeChild) activeChild.focus();\n }\n\n needsRefocusRef.current = false;\n });\n var mergedRef = useMergedRefs(ref, listNode);\n return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: handleSelect\n }, /*#__PURE__*/React.createElement(NavContext.Provider, {\n value: {\n role: role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n }\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n onKeyDown: handleKeyDown,\n ref: mergedRef,\n role: role\n }))));\n});\nexport default AbstractNav;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavItem = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children);\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"active\", \"className\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nvar defaultProps = {\n disabled: false\n};\nvar AbstractNavItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var active = _ref.active,\n className = _ref.className,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n onClick = _ref.onClick,\n Component = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var navKey = makeEventKey(eventKey, props.href);\n var parentOnSelect = useContext(SelectableContext);\n var navContext = useContext(NavContext);\n var isActive = active;\n\n if (navContext) {\n if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n var contextControllerId = navContext.getControllerId(navKey);\n var contextControlledId = navContext.getControlledId(navKey);\n process.env.NODE_ENV !== \"production\" ? warning(!contextControllerId || !props.id, \"[react-bootstrap] The provided id '\" + props.id + \"' was overwritten by the current navContext with '\" + contextControllerId + \"'.\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!contextControlledId || !props['aria-controls'], \"[react-bootstrap] The provided aria-controls value '\" + props['aria-controls'] + \"' was overwritten by the current navContext with '\" + contextControlledId + \"'.\") : void 0;\n props['data-rb-event-key'] = navKey;\n props.id = contextControllerId || props.id;\n props['aria-controls'] = contextControlledId || props['aria-controls'];\n isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n }\n\n if (props.role === 'tab') {\n if (props.disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n props['aria-selected'] = isActive;\n }\n\n var handleOnclick = useEventCallback(function (e) {\n if (onClick) onClick(e);\n if (navKey == null) return;\n if (onSelect) onSelect(navKey, e);\n if (parentOnSelect) parentOnSelect(navKey, e);\n });\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n onClick: handleOnclick,\n className: classNames(className, isActive && 'active')\n }));\n});\nAbstractNavItem.defaultProps = defaultProps;\nexport default AbstractNavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport SafeAnchor from './SafeAnchor';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n disabled: false,\n as: SafeAnchor\n};\nvar NavLink = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n disabled = _ref.disabled,\n className = _ref.className,\n href = _ref.href,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n return /*#__PURE__*/React.createElement(AbstractNavItem, _extends({}, props, {\n href: href,\n ref: ref,\n eventKey: eventKey,\n as: as,\n disabled: disabled,\n onSelect: onSelect,\n className: classNames(className, bsPrefix, disabled && 'disabled')\n }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"variant\", \"fill\", \"justify\", \"navbar\", \"navbarScroll\", \"className\", \"children\", \"activeKey\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardContext from './CardContext';\nimport AbstractNav from './AbstractNav';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nvar defaultProps = {\n justify: false,\n fill: false\n};\nvar Nav = /*#__PURE__*/React.forwardRef(function (uncontrolledProps, ref) {\n var _classNames;\n\n var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n }),\n _useUncontrolled$as = _useUncontrolled.as,\n as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n initialBsPrefix = _useUncontrolled.bsPrefix,\n variant = _useUncontrolled.variant,\n fill = _useUncontrolled.fill,\n justify = _useUncontrolled.justify,\n navbar = _useUncontrolled.navbar,\n navbarScroll = _useUncontrolled.navbarScroll,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n activeKey = _useUncontrolled.activeKey,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n var navbarBsPrefix;\n var cardHeaderBsPrefix;\n var isNavbar = false;\n var navbarContext = useContext(NavbarContext);\n var cardContext = useContext(CardContext);\n\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n isNavbar = navbar == null ? true : navbar;\n } else if (cardContext) {\n cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;\n }\n\n return /*#__PURE__*/React.createElement(AbstractNav, _extends({\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, (_classNames = {}, _classNames[bsPrefix] = !isNavbar, _classNames[navbarBsPrefix + \"-nav\"] = isNavbar, _classNames[navbarBsPrefix + \"-nav-scroll\"] = isNavbar && navbarScroll, _classNames[cardHeaderBsPrefix + \"-\" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + \"-\" + variant] = !!variant, _classNames[bsPrefix + \"-fill\"] = fill, _classNames[bsPrefix + \"-justified\"] = justify, _classNames))\n }, props), children);\n});\nNav.displayName = 'Nav';\nNav.defaultProps = defaultProps;\nNav.Item = NavItem;\nNav.Link = NavLink;\nexport default Nav;","\r\nimport React from \"react\";\r\nimport { IRBACUser } from '../model/IRBACUser' \r\n\r\nexport type AuthContextType = { \r\n userProfile : UserProfileType\r\n setUserProfile: Function\r\n}\r\n\r\nexport type UserProfileType = {\r\n userName?: string;\r\n role: IRBACUser;\r\n}\r\n\r\nexport const AuthContextDefault : AuthContextType = { \r\n userProfile : { userName :'', role : { userId: '', roleName: '', roleID: '', locations:[{LocationCode:'',LocationName:''}] } } ,\r\n setUserProfile: (value:UserProfileType) => {}\r\n}\r\nexport const AuthContext = React.createContext<AuthContextType>(AuthContextDefault);\r\n\r\n\r\nexport interface IErrorContext { \r\n errorMessages: Array<string>\r\n setErrorMessages: Function\r\n}\r\n\r\nexport const ErrorContextDefault ={\r\n errorMessages: [],\r\n setErrorMessages: (value:Array<string>) => {}\r\n}\r\nexport const ErrorContext = React.createContext<IErrorContext>(ErrorContextDefault);\r\n\r\n \r\ntype LocationContextType = {\r\n locationCode: string;\r\n setLocationCode: Function; \r\n};\r\n\r\nconst LocationContextDefault = {\r\n locationCode: '',\r\n setLocationCode: (value: string) => {} \r\n};\r\n\r\n//export const LocationContext = React.createContext<LocationContextType | undefined>(LocationContextDefault);\r\nexport const LocationContext = React.createContext<LocationContextType>(LocationContextDefault);\r\n\r\ntype OrginalSchoolYearType = {\r\n orginalSchoolYear: SchoolYear;\r\n setOrginalSchoolYear: Function; \r\n };\r\n \r\n const OrginalSchoolYearDefault = {\r\n orginalSchoolYear: {id:'', isCurrent:0,schoolYearEndDate:new Date()},\r\n setOrginalSchoolYear: (value: string) => {} \r\n };\r\n \r\n interface SchoolYear {\r\n id:string,\r\n isCurrent:number,\r\n schoolYearEndDate:Date\r\n }\r\n export const Year = React.createContext<OrginalSchoolYearType>(OrginalSchoolYearDefault);\r\n\r\n\r\n ","import { UserProfileType, AuthContextDefault } from \"./AppContext\";\r\nimport appsettings from '../assets/appsettings.json'\r\nimport moment from 'moment';\r\nexport default class LocalStorageService {\r\n private static setItem(key: string, value: any): void {\r\n localStorage.setItem(key, JSON.stringify({ value }));\r\n }\r\n private static getItem<T>(key: string): T | null {\r\n const data: string | null | Date = localStorage.getItem(key);\r\n if (data !== null) {\r\n return JSON.parse(data).value;\r\n }\r\n return null;\r\n }\r\n\r\n public static getUserProfile(): UserProfileType {\r\n return this.getItem<UserProfileType>(\"lmi:userprofile\") ?? AuthContextDefault.userProfile\r\n }\r\n\r\n public static setUserProfile(value: UserProfileType) {\r\n this.setItem(\"lmi:userprofile\", value)\r\n }\r\n\r\n public static getExpirationTime() {\r\n return sessionStorage.getItem(\"expire_at\")\r\n }\r\n\r\n public static setExpirationTime() {\r\n let expirationDate = moment().add(appsettings.AUTH_TOKEN_EXPIRATION_TIME,'minutes').format()\r\n sessionStorage.setItem(\"expire_at\", expirationDate.toString())\r\n } \r\n\r\n public static clear() {\r\n localStorage.clear();\r\n }\r\n\r\n}","import { AxiosInstances as AxiosInstance } from './BaseService'\r\n\r\n//const raback = setupInterceptorsForRBAC(AxiosInstances)\r\nexport default {\r\n getUserRole: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/RBAC`\r\n })\r\n // AxiosInstance({\r\n // 'method': 'GET',\r\n // 'url': `/RBAC`\r\n // }), \r\n}","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = \"InvalidCharacterError\";\n\nfunction polyfill(input) {\n var str = String(input).replace(/=+$/, \"\");\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\n \"'atob' failed: The string to be decoded is not correctly encoded.\"\n );\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n // get next character\n (buffer = str.charAt(idx++));\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ?\n (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :\n 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\nexport default (typeof window !== \"undefined\" &&\n window.atob &&\n window.atob.bind(window)) ||\npolyfill;","\"use strict\";\n\nimport base64_url_decode from \"./base64_url_decode\";\n\nexport function InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\n\nexport default function(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified\");\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split(\".\")[pos]));\n } catch (e) {\n throw new InvalidTokenError(\"Invalid token specified: \" + e.message);\n }\n}","import atob from \"./atob\";\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(\n atob(str).replace(/(.)/g, function(m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n })\n );\n}\n\nexport default function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n}","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nlet nopLogger = {\r\n debug(){},\r\n info(){},\r\n warn(){},\r\n error(){}\r\n};\r\n\r\nconst NONE = 0;\r\nconst ERROR = 1;\r\nconst WARN = 2;\r\nconst INFO = 3;\r\nconst DEBUG = 4;\r\n\r\nlet logger;\r\nlet level;\r\n\r\nexport class Log {\r\n static get NONE() {return NONE};\r\n static get ERROR() {return ERROR};\r\n static get WARN() {return WARN};\r\n static get INFO() {return INFO};\r\n static get DEBUG() {return DEBUG};\r\n \r\n static reset(){\r\n level = INFO;\r\n logger = nopLogger;\r\n }\r\n \r\n static get level(){\r\n return level;\r\n }\r\n static set level(value){\r\n if (NONE <= value && value <= DEBUG){\r\n level = value;\r\n }\r\n else {\r\n throw new Error(\"Invalid log level\");\r\n }\r\n }\r\n \r\n static get logger(){\r\n return logger;\r\n }\r\n static set logger(value){\r\n if (!value.debug && value.info) {\r\n // just to stay backwards compat. can remove in 2.0\r\n value.debug = value.info;\r\n }\r\n\r\n if (value.debug && value.info && value.warn && value.error){\r\n logger = value;\r\n }\r\n else {\r\n throw new Error(\"Invalid logger\");\r\n }\r\n }\r\n \r\n static debug(...args){\r\n if (level >= DEBUG){\r\n logger.debug.apply(logger, Array.from(args));\r\n }\r\n }\r\n static info(...args){\r\n if (level >= INFO){\r\n logger.info.apply(logger, Array.from(args));\r\n }\r\n }\r\n static warn(...args){\r\n if (level >= WARN){\r\n logger.warn.apply(logger, Array.from(args));\r\n }\r\n }\r\n static error(...args){\r\n if (level >= ERROR){\r\n logger.error.apply(logger, Array.from(args));\r\n }\r\n }\r\n}\r\n\r\nLog.reset();\r\n","export class ClockService {\r\n getEpochTime() {\r\n return Promise.resolve(Date.now() / 1000 | 0);\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nconst timer = {\r\n setInterval: function (cb, duration) {\r\n return setInterval(cb, duration);\r\n },\r\n clearInterval: function (handle) {\r\n return clearInterval(handle);\r\n }\r\n};\r\n\r\nlet testing = false;\r\nlet request = null;\r\n\r\nexport class Global {\r\n\r\n static _testing() {\r\n testing = true;\r\n }\r\n\r\n static get location() {\r\n if (!testing) {\r\n return location;\r\n }\r\n }\r\n\r\n static get localStorage() {\r\n if (!testing && typeof window !== 'undefined') {\r\n return localStorage;\r\n }\r\n }\r\n\r\n static get sessionStorage() {\r\n if (!testing && typeof window !== 'undefined') {\r\n return sessionStorage;\r\n }\r\n }\r\n\r\n static setXMLHttpRequest(newRequest) {\r\n request = newRequest;\r\n }\r\n\r\n static get XMLHttpRequest() {\r\n if (!testing && typeof window !== 'undefined') {\r\n return request || XMLHttpRequest;\r\n }\r\n }\r\n\r\n static get timer() {\r\n if (!testing) {\r\n return timer;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { Global } from './Global.js';\r\n\r\nexport class WebStorageStateStore {\r\n constructor({prefix = \"oidc.\", store = Global.localStorage} = {}) {\r\n this._store = store;\r\n this._prefix = prefix;\r\n }\r\n\r\n set(key, value) {\r\n Log.debug(\"WebStorageStateStore.set\", key);\r\n\r\n key = this._prefix + key;\r\n\r\n this._store.setItem(key, value);\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n get(key) {\r\n Log.debug(\"WebStorageStateStore.get\", key);\r\n\r\n key = this._prefix + key;\r\n\r\n let item = this._store.getItem(key);\r\n\r\n return Promise.resolve(item);\r\n }\r\n\r\n remove(key) {\r\n Log.debug(\"WebStorageStateStore.remove\", key);\r\n\r\n key = this._prefix + key;\r\n\r\n let item = this._store.getItem(key);\r\n this._store.removeItem(key);\r\n\r\n return Promise.resolve(item);\r\n }\r\n\r\n getAllKeys() {\r\n Log.debug(\"WebStorageStateStore.getAllKeys\");\r\n\r\n var keys = [];\r\n\r\n for (let index = 0; index < this._store.length; index++) {\r\n let key = this._store.key(index);\r\n\r\n if (key.indexOf(this._prefix) === 0) {\r\n keys.push(key.substr(this._prefix.length));\r\n }\r\n }\r\n\r\n return Promise.resolve(keys);\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { Global } from './Global.js';\r\n\r\nexport class JsonService {\r\n constructor(\r\n additionalContentTypes = null, \r\n XMLHttpRequestCtor = Global.XMLHttpRequest, \r\n jwtHandler = null\r\n ) {\r\n if (additionalContentTypes && Array.isArray(additionalContentTypes))\r\n {\r\n this._contentTypes = additionalContentTypes.slice();\r\n }\r\n else\r\n {\r\n this._contentTypes = [];\r\n }\r\n this._contentTypes.push('application/json');\r\n if (jwtHandler) {\r\n this._contentTypes.push('application/jwt');\r\n }\r\n\r\n this._XMLHttpRequest = XMLHttpRequestCtor;\r\n this._jwtHandler = jwtHandler;\r\n }\r\n\r\n getJson(url, token) {\r\n if (!url){\r\n Log.error(\"JsonService.getJson: No url passed\");\r\n throw new Error(\"url\");\r\n }\r\n\r\n Log.debug(\"JsonService.getJson, url: \", url);\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n var req = new this._XMLHttpRequest();\r\n req.open('GET', url);\r\n\r\n var allowedContentTypes = this._contentTypes;\r\n var jwtHandler = this._jwtHandler;\r\n\r\n req.onload = function() {\r\n Log.debug(\"JsonService.getJson: HTTP response received, status\", req.status);\r\n\r\n if (req.status === 200) {\r\n\r\n var contentType = req.getResponseHeader(\"Content-Type\");\r\n if (contentType) {\r\n\r\n var found = allowedContentTypes.find(item=>{\r\n if (contentType.startsWith(item)) {\r\n return true;\r\n }\r\n });\r\n\r\n if (found == \"application/jwt\") {\r\n jwtHandler(req).then(resolve, reject);\r\n return;\r\n }\r\n\r\n if (found) {\r\n try {\r\n resolve(JSON.parse(req.responseText));\r\n return;\r\n }\r\n catch (e) {\r\n Log.error(\"JsonService.getJson: Error parsing JSON response\", e.message);\r\n reject(e);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n reject(Error(\"Invalid response Content-Type: \" + contentType + \", from URL: \" + url));\r\n }\r\n else {\r\n reject(Error(req.statusText + \" (\" + req.status + \")\"));\r\n }\r\n };\r\n\r\n req.onerror = function() {\r\n Log.error(\"JsonService.getJson: network error\");\r\n reject(Error(\"Network Error\"));\r\n };\r\n\r\n if (token) {\r\n Log.debug(\"JsonService.getJson: token passed, setting Authorization header\");\r\n req.setRequestHeader(\"Authorization\", \"Bearer \" + token);\r\n }\r\n\r\n req.send();\r\n });\r\n }\r\n\r\n postForm(url, payload, basicAuth) {\r\n if (!url){\r\n Log.error(\"JsonService.postForm: No url passed\");\r\n throw new Error(\"url\");\r\n }\r\n\r\n Log.debug(\"JsonService.postForm, url: \", url);\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n var req = new this._XMLHttpRequest();\r\n req.open('POST', url);\r\n\r\n var allowedContentTypes = this._contentTypes;\r\n\r\n req.onload = function() {\r\n Log.debug(\"JsonService.postForm: HTTP response received, status\", req.status);\r\n\r\n if (req.status === 200) {\r\n\r\n var contentType = req.getResponseHeader(\"Content-Type\");\r\n if (contentType) {\r\n\r\n var found = allowedContentTypes.find(item=>{\r\n if (contentType.startsWith(item)) {\r\n return true;\r\n }\r\n });\r\n\r\n if (found) {\r\n try {\r\n resolve(JSON.parse(req.responseText));\r\n return;\r\n }\r\n catch (e) {\r\n Log.error(\"JsonService.postForm: Error parsing JSON response\", e.message);\r\n reject(e);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n reject(Error(\"Invalid response Content-Type: \" + contentType + \", from URL: \" + url));\r\n return;\r\n }\r\n\r\n if (req.status === 400) {\r\n\r\n var contentType = req.getResponseHeader(\"Content-Type\");\r\n if (contentType) {\r\n\r\n var found = allowedContentTypes.find(item=>{\r\n if (contentType.startsWith(item)) {\r\n return true;\r\n }\r\n });\r\n\r\n if (found) {\r\n try {\r\n var payload = JSON.parse(req.responseText);\r\n if (payload && payload.error) {\r\n Log.error(\"JsonService.postForm: Error from server: \", payload.error);\r\n reject(new Error(payload.error));\r\n return;\r\n }\r\n }\r\n catch (e) {\r\n Log.error(\"JsonService.postForm: Error parsing JSON response\", e.message);\r\n reject(e);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n reject(Error(req.statusText + \" (\" + req.status + \")\"));\r\n };\r\n\r\n req.onerror = function() {\r\n Log.error(\"JsonService.postForm: network error\");\r\n reject(Error(\"Network Error\"));\r\n };\r\n\r\n let body = \"\";\r\n for(let key in payload) {\r\n\r\n let value = payload[key];\r\n\r\n if (value) {\r\n\r\n if (body.length > 0) {\r\n body += \"&\";\r\n }\r\n\r\n body += encodeURIComponent(key);\r\n body += \"=\";\r\n body += encodeURIComponent(value);\r\n }\r\n }\r\n\r\n req.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\r\n if (basicAuth !== undefined)\r\n {\r\n req.setRequestHeader(\"Authorization\", \"Basic \" + btoa(basicAuth));\r\n }\r\n\r\n req.send(body);\r\n });\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { JsonService } from './JsonService.js';\r\n\r\nconst OidcMetadataUrlPath = '.well-known/openid-configuration';\r\n\r\nexport class MetadataService {\r\n constructor(settings, JsonServiceCtor = JsonService) {\r\n if (!settings) {\r\n Log.error(\"MetadataService: No settings passed to MetadataService\");\r\n throw new Error(\"settings\");\r\n }\r\n\r\n this._settings = settings;\r\n this._jsonService = new JsonServiceCtor(['application/jwk-set+json']);\r\n }\r\n\r\n get metadataUrl() {\r\n if (!this._metadataUrl) {\r\n if (this._settings.metadataUrl) {\r\n this._metadataUrl = this._settings.metadataUrl;\r\n }\r\n else {\r\n this._metadataUrl = this._settings.authority;\r\n\r\n if (this._metadataUrl && this._metadataUrl.indexOf(OidcMetadataUrlPath) < 0) {\r\n if (this._metadataUrl[this._metadataUrl.length - 1] !== '/') {\r\n this._metadataUrl += '/';\r\n }\r\n this._metadataUrl += OidcMetadataUrlPath;\r\n }\r\n }\r\n }\r\n\r\n return this._metadataUrl;\r\n }\r\n\r\n resetSigningKeys() {\r\n this._settings = this._settings || {}\r\n this._settings.signingKeys = undefined\r\n }\r\n\r\n getMetadata() {\r\n if (this._settings.metadata) {\r\n Log.debug(\"MetadataService.getMetadata: Returning metadata from settings\");\r\n return Promise.resolve(this._settings.metadata);\r\n }\r\n\r\n if (!this.metadataUrl) {\r\n Log.error(\"MetadataService.getMetadata: No authority or metadataUrl configured on settings\");\r\n return Promise.reject(new Error(\"No authority or metadataUrl configured on settings\"));\r\n }\r\n\r\n Log.debug(\"MetadataService.getMetadata: getting metadata from\", this.metadataUrl);\r\n\r\n return this._jsonService.getJson(this.metadataUrl)\r\n .then(metadata => {\r\n Log.debug(\"MetadataService.getMetadata: json received\");\r\n \r\n var seed = this._settings.metadataSeed || {};\r\n this._settings.metadata = Object.assign({}, seed, metadata);\r\n return this._settings.metadata;\r\n });\r\n }\r\n\r\n getIssuer() {\r\n return this._getMetadataProperty(\"issuer\");\r\n }\r\n\r\n getAuthorizationEndpoint() {\r\n return this._getMetadataProperty(\"authorization_endpoint\");\r\n }\r\n\r\n getUserInfoEndpoint() {\r\n return this._getMetadataProperty(\"userinfo_endpoint\");\r\n }\r\n\r\n getTokenEndpoint(optional=true) {\r\n return this._getMetadataProperty(\"token_endpoint\", optional);\r\n }\r\n\r\n getCheckSessionIframe() {\r\n return this._getMetadataProperty(\"check_session_iframe\", true);\r\n }\r\n\r\n getEndSessionEndpoint() {\r\n return this._getMetadataProperty(\"end_session_endpoint\", true);\r\n }\r\n\r\n getRevocationEndpoint() {\r\n return this._getMetadataProperty(\"revocation_endpoint\", true);\r\n }\r\n\r\n getKeysEndpoint() {\r\n return this._getMetadataProperty(\"jwks_uri\", true);\r\n }\r\n\r\n _getMetadataProperty(name, optional=false) {\r\n Log.debug(\"MetadataService.getMetadataProperty for: \" + name);\r\n\r\n return this.getMetadata().then(metadata => {\r\n Log.debug(\"MetadataService.getMetadataProperty: metadata recieved\");\r\n\r\n if (metadata[name] === undefined) {\r\n\r\n if (optional === true) {\r\n Log.warn(\"MetadataService.getMetadataProperty: Metadata does not contain optional property \" + name);\r\n return undefined;\r\n }\r\n else {\r\n Log.error(\"MetadataService.getMetadataProperty: Metadata does not contain property \" + name);\r\n throw new Error(\"Metadata does not contain property \" + name);\r\n }\r\n }\r\n\r\n return metadata[name];\r\n });\r\n }\r\n\r\n getSigningKeys() {\r\n if (this._settings.signingKeys) {\r\n Log.debug(\"MetadataService.getSigningKeys: Returning signingKeys from settings\");\r\n return Promise.resolve(this._settings.signingKeys);\r\n }\r\n\r\n return this._getMetadataProperty(\"jwks_uri\").then(jwks_uri => {\r\n Log.debug(\"MetadataService.getSigningKeys: jwks_uri received\", jwks_uri);\r\n\r\n return this._jsonService.getJson(jwks_uri).then(keySet => {\r\n Log.debug(\"MetadataService.getSigningKeys: key set received\", keySet);\r\n\r\n if (!keySet.keys) {\r\n Log.error(\"MetadataService.getSigningKeys: Missing keys on keyset\");\r\n throw new Error(\"Missing keys on keyset\");\r\n }\r\n\r\n this._settings.signingKeys = keySet.keys;\r\n return this._settings.signingKeys;\r\n });\r\n });\r\n }\r\n}\r\n","/*\r\n * jsrsasign(all) 8.0.12 (2018-04-22) (c) 2010-2018 Kenji Urushima | kjur.github.com/jsrsasign/license\r\n */\r\n\r\nvar navigator = {};\r\nnavigator.userAgent = false;\r\n\r\nvar window = {};\r\n\n/*!\r\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\r\nCode licensed under the BSD License:\r\nhttp://developer.yahoo.com/yui/license.html\r\nversion: 2.9.0\r\n*/\r\nif(YAHOO===undefined){var YAHOO={}}YAHOO.lang={extend:function(g,h,f){if(!h||!g){throw new Error(\"YAHOO.lang.extend failed, please check that all dependencies are included.\")}var d=function(){};d.prototype=h.prototype;g.prototype=new d();g.prototype.constructor=g;g.superclass=h.prototype;if(h.prototype.constructor==Object.prototype.constructor){h.prototype.constructor=h}if(f){var b;for(b in f){g.prototype[b]=f[b]}var e=function(){},c=[\"toString\",\"valueOf\"];try{if(/MSIE/.test(navigator.userAgent)){e=function(j,i){for(b=0;b<c.length;b=b+1){var l=c[b],k=i[l];if(typeof k===\"function\"&&k!=Object.prototype[l]){j[l]=k}}}}}catch(a){}e(g.prototype,f)}}};\n/*! CryptoJS v3.1.2 core-fix.js\r\n * code.google.com/p/crypto-js\r\n * (c) 2009-2013 by Jeff Mott. All rights reserved.\r\n * code.google.com/p/crypto-js/wiki/License\r\n * THIS IS FIX of 'core.js' to fix Hmac issue.\r\n * https://code.google.com/p/crypto-js/issues/detail?id=84\r\n * https://crypto-js.googlecode.com/svn-history/r667/branches/3.x/src/core.js\r\n */\r\nvar CryptoJS=CryptoJS||(function(e,g){var a={};var b=a.lib={};var j=b.Base=(function(){function n(){}return{extend:function(p){n.prototype=this;var o=new n();if(p){o.mixIn(p)}if(!o.hasOwnProperty(\"init\")){o.init=function(){o.$super.init.apply(this,arguments)}}o.init.prototype=o;o.$super=this;return o},create:function(){var o=this.extend();o.init.apply(o,arguments);return o},init:function(){},mixIn:function(p){for(var o in p){if(p.hasOwnProperty(o)){this[o]=p[o]}}if(p.hasOwnProperty(\"toString\")){this.toString=p.toString}},clone:function(){return this.init.prototype.extend(this)}}}());var l=b.WordArray=j.extend({init:function(o,n){o=this.words=o||[];if(n!=g){this.sigBytes=n}else{this.sigBytes=o.length*4}},toString:function(n){return(n||h).stringify(this)},concat:function(t){var q=this.words;var p=t.words;var n=this.sigBytes;var s=t.sigBytes;this.clamp();if(n%4){for(var r=0;r<s;r++){var o=(p[r>>>2]>>>(24-(r%4)*8))&255;q[(n+r)>>>2]|=o<<(24-((n+r)%4)*8)}}else{for(var r=0;r<s;r+=4){q[(n+r)>>>2]=p[r>>>2]}}this.sigBytes+=s;return this},clamp:function(){var o=this.words;var n=this.sigBytes;o[n>>>2]&=4294967295<<(32-(n%4)*8);o.length=e.ceil(n/4)},clone:function(){var n=j.clone.call(this);n.words=this.words.slice(0);return n},random:function(p){var o=[];for(var n=0;n<p;n+=4){o.push((e.random()*4294967296)|0)}return new l.init(o,p)}});var m=a.enc={};var h=m.Hex={stringify:function(p){var r=p.words;var o=p.sigBytes;var q=[];for(var n=0;n<o;n++){var s=(r[n>>>2]>>>(24-(n%4)*8))&255;q.push((s>>>4).toString(16));q.push((s&15).toString(16))}return q.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o<n;o+=2){q[o>>>3]|=parseInt(p.substr(o,2),16)<<(24-(o%8)*4)}return new l.init(q,n/2)}};var d=m.Latin1={stringify:function(q){var r=q.words;var p=q.sigBytes;var n=[];for(var o=0;o<p;o++){var s=(r[o>>>2]>>>(24-(o%4)*8))&255;n.push(String.fromCharCode(s))}return n.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o<n;o++){q[o>>>2]|=(p.charCodeAt(o)&255)<<(24-(o%4)*8)}return new l.init(q,n)}};var c=m.Utf8={stringify:function(n){try{return decodeURIComponent(escape(d.stringify(n)))}catch(o){throw new Error(\"Malformed UTF-8 data\")}},parse:function(n){return d.parse(unescape(encodeURIComponent(n)))}};var i=b.BufferedBlockAlgorithm=j.extend({reset:function(){this._data=new l.init();this._nDataBytes=0},_append:function(n){if(typeof n==\"string\"){n=c.parse(n)}this._data.concat(n);this._nDataBytes+=n.sigBytes},_process:function(w){var q=this._data;var x=q.words;var n=q.sigBytes;var t=this.blockSize;var v=t*4;var u=n/v;if(w){u=e.ceil(u)}else{u=e.max((u|0)-this._minBufferSize,0)}var s=u*t;var r=e.min(s*4,n);if(s){for(var p=0;p<s;p+=t){this._doProcessBlock(x,p)}var o=x.splice(0,s);q.sigBytes-=r}return new l.init(o,r)},clone:function(){var n=j.clone.call(this);n._data=this._data.clone();return n},_minBufferSize:0});var f=b.Hasher=i.extend({cfg:j.extend(),init:function(n){this.cfg=this.cfg.extend(n);this.reset()},reset:function(){i.reset.call(this);this._doReset()},update:function(n){this._append(n);this._process();return this},finalize:function(n){if(n){this._append(n)}var o=this._doFinalize();return o},blockSize:512/32,_createHelper:function(n){return function(p,o){return new n.init(o).finalize(p)}},_createHmacHelper:function(n){return function(p,o){return new k.HMAC.init(n,o).finalize(p)}}});var k=a.algo={};return a}(Math));\n/*\r\nCryptoJS v3.1.2 x64-core-min.js\r\ncode.google.com/p/crypto-js\r\n(c) 2009-2013 by Jeff Mott. All rights reserved.\r\ncode.google.com/p/crypto-js/wiki/License\r\n*/\r\n(function(g){var a=CryptoJS,f=a.lib,e=f.Base,h=f.WordArray,a=a.x64={};a.Word=e.extend({init:function(b,c){this.high=b;this.low=c}});a.WordArray=e.extend({init:function(b,c){b=this.words=b||[];this.sigBytes=c!=g?c:8*b.length},toX32:function(){for(var b=this.words,c=b.length,a=[],d=0;d<c;d++){var e=b[d];a.push(e.high);a.push(e.low)}return h.create(a,this.sigBytes)},clone:function(){for(var b=e.clone.call(this),c=b.words=this.words.slice(0),a=c.length,d=0;d<a;d++)c[d]=c[d].clone();return b}})})();\r\n\n/*\r\nCryptoJS v3.1.2 enc-base64.js\r\ncode.google.com/p/crypto-js\r\n(c) 2009-2013 by Jeff Mott. All rights reserved.\r\ncode.google.com/p/crypto-js/wiki/License\r\n*/\r\n(function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a<f;a+=3)for(var d=(e[a>>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g<f;g++)b.push(c.charAt(d>>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join(\"\")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d<\r\ne;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}})();\r\n\n/*\r\nCryptoJS v3.1.2 sha256-min.js\r\ncode.google.com/p/crypto-js\r\n(c) 2009-2013 by Jeff Mott. All rights reserved.\r\ncode.google.com/p/crypto-js/wiki/License\r\n*/\r\n(function(k){for(var g=CryptoJS,h=g.lib,v=h.WordArray,j=h.Hasher,h=g.algo,s=[],t=[],u=function(q){return 4294967296*(q-(q|0))|0},l=2,b=0;64>b;){var d;a:{d=l;for(var w=k.sqrt(d),r=2;r<=w;r++)if(!(d%r)){d=!1;break a}d=!0}d&&(8>b&&(s[b]=u(k.pow(l,0.5))),t[b]=u(k.pow(l,1/3)),b++);l++}var n=[],h=h.SHA256=j.extend({_doReset:function(){this._hash=new v.init(s.slice(0))},_doProcessBlock:function(q,h){for(var a=this._hash.words,c=a[0],d=a[1],b=a[2],k=a[3],f=a[4],g=a[5],j=a[6],l=a[7],e=0;64>e;e++){if(16>e)n[e]=\r\nq[h+e]|0;else{var m=n[e-15],p=n[e-2];n[e]=((m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3)+n[e-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+n[e-16]}m=l+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&g^~f&j)+t[e]+n[e];p=((c<<30|c>>>2)^(c<<19|c>>>13)^(c<<10|c>>>22))+(c&d^c&b^d&b);l=j;j=g;g=f;f=k+m|0;k=b;b=d;d=c;c=m+p|0}a[0]=a[0]+c|0;a[1]=a[1]+d|0;a[2]=a[2]+b|0;a[3]=a[3]+k|0;a[4]=a[4]+f|0;a[5]=a[5]+g|0;a[6]=a[6]+j|0;a[7]=a[7]+l|0},_doFinalize:function(){var d=this._data,b=d.words,a=8*this._nDataBytes,c=8*d.sigBytes;\r\nb[c>>>5]|=128<<24-c%32;b[(c+64>>>9<<4)+14]=k.floor(a/4294967296);b[(c+64>>>9<<4)+15]=a;d.sigBytes=4*b.length;this._process();return this._hash},clone:function(){var b=j.clone.call(this);b._hash=this._hash.clone();return b}});g.SHA256=j._createHelper(h);g.HmacSHA256=j._createHmacHelper(h)})(Math);\r\n\n/*\r\nCryptoJS v3.1.2 sha512-min.js\r\ncode.google.com/p/crypto-js\r\n(c) 2009-2013 by Jeff Mott. All rights reserved.\r\ncode.google.com/p/crypto-js/wiki/License\r\n*/\r\n(function(){function a(){return d.create.apply(d,arguments)}for(var n=CryptoJS,r=n.lib.Hasher,e=n.x64,d=e.Word,T=e.WordArray,e=n.algo,ea=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),\r\na(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,\r\n2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),\r\na(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,\r\n3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],v=[],w=0;80>w;w++)v[w]=a();e=e.SHA512=r.extend({_doReset:function(){this._hash=new T.init([new d.init(1779033703,4089235720),new d.init(3144134277,2227873595),new d.init(1013904242,4271175723),new d.init(2773480762,1595750129),new d.init(1359893119,2917565137),new d.init(2600822924,725511199),new d.init(528734635,4215389547),new d.init(1541459225,327033209)])},_doProcessBlock:function(a,d){for(var f=this._hash.words,\r\nF=f[0],e=f[1],n=f[2],r=f[3],G=f[4],H=f[5],I=f[6],f=f[7],w=F.high,J=F.low,X=e.high,K=e.low,Y=n.high,L=n.low,Z=r.high,M=r.low,$=G.high,N=G.low,aa=H.high,O=H.low,ba=I.high,P=I.low,ca=f.high,Q=f.low,k=w,g=J,z=X,x=K,A=Y,y=L,U=Z,B=M,l=$,h=N,R=aa,C=O,S=ba,D=P,V=ca,E=Q,m=0;80>m;m++){var s=v[m];if(16>m)var j=s.high=a[d+2*m]|0,b=s.low=a[d+2*m+1]|0;else{var j=v[m-15],b=j.high,p=j.low,j=(b>>>1|p<<31)^(b>>>8|p<<24)^b>>>7,p=(p>>>1|b<<31)^(p>>>8|b<<24)^(p>>>7|b<<25),u=v[m-2],b=u.high,c=u.low,u=(b>>>19|c<<13)^(b<<\r\n3|c>>>29)^b>>>6,c=(c>>>19|b<<13)^(c<<3|b>>>29)^(c>>>6|b<<26),b=v[m-7],W=b.high,t=v[m-16],q=t.high,t=t.low,b=p+b.low,j=j+W+(b>>>0<p>>>0?1:0),b=b+c,j=j+u+(b>>>0<c>>>0?1:0),b=b+t,j=j+q+(b>>>0<t>>>0?1:0);s.high=j;s.low=b}var W=l&R^~l&S,t=h&C^~h&D,s=k&z^k&A^z&A,T=g&x^g&y^x&y,p=(k>>>28|g<<4)^(k<<30|g>>>2)^(k<<25|g>>>7),u=(g>>>28|k<<4)^(g<<30|k>>>2)^(g<<25|k>>>7),c=ea[m],fa=c.high,da=c.low,c=E+((h>>>14|l<<18)^(h>>>18|l<<14)^(h<<23|l>>>9)),q=V+((l>>>14|h<<18)^(l>>>18|h<<14)^(l<<23|h>>>9))+(c>>>0<E>>>0?1:\r\n0),c=c+t,q=q+W+(c>>>0<t>>>0?1:0),c=c+da,q=q+fa+(c>>>0<da>>>0?1:0),c=c+b,q=q+j+(c>>>0<b>>>0?1:0),b=u+T,s=p+s+(b>>>0<u>>>0?1:0),V=S,E=D,S=R,D=C,R=l,C=h,h=B+c|0,l=U+q+(h>>>0<B>>>0?1:0)|0,U=A,B=y,A=z,y=x,z=k,x=g,g=c+b|0,k=q+s+(g>>>0<c>>>0?1:0)|0}J=F.low=J+g;F.high=w+k+(J>>>0<g>>>0?1:0);K=e.low=K+x;e.high=X+z+(K>>>0<x>>>0?1:0);L=n.low=L+y;n.high=Y+A+(L>>>0<y>>>0?1:0);M=r.low=M+B;r.high=Z+U+(M>>>0<B>>>0?1:0);N=G.low=N+h;G.high=$+l+(N>>>0<h>>>0?1:0);O=H.low=O+C;H.high=aa+R+(O>>>0<C>>>0?1:0);P=I.low=P+D;\r\nI.high=ba+S+(P>>>0<D>>>0?1:0);Q=f.low=Q+E;f.high=ca+V+(Q>>>0<E>>>0?1:0)},_doFinalize:function(){var a=this._data,d=a.words,f=8*this._nDataBytes,e=8*a.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+128>>>10<<5)+30]=Math.floor(f/4294967296);d[(e+128>>>10<<5)+31]=f;a.sigBytes=4*d.length;this._process();return this._hash.toX32()},clone:function(){var a=r.clone.call(this);a._hash=this._hash.clone();return a},blockSize:32});n.SHA512=r._createHelper(e);n.HmacSHA512=r._createHmacHelper(e)})();\r\n\n/*\r\nCryptoJS v3.1.2 sha384-min.js\r\ncode.google.com/p/crypto-js\r\n(c) 2009-2013 by Jeff Mott. All rights reserved.\r\ncode.google.com/p/crypto-js/wiki/License\r\n*/\r\n(function(){var c=CryptoJS,a=c.x64,b=a.Word,e=a.WordArray,a=c.algo,d=a.SHA512,a=a.SHA384=d.extend({_doReset:function(){this._hash=new e.init([new b.init(3418070365,3238371032),new b.init(1654270250,914150663),new b.init(2438529370,812702999),new b.init(355462360,4144912697),new b.init(1731405415,4290775857),new b.init(2394180231,1750603025),new b.init(3675008525,1694076839),new b.init(1203062813,3204075428)])},_doFinalize:function(){var a=d._doFinalize.call(this);a.sigBytes-=16;return a}});c.SHA384=\r\nd._createHelper(a);c.HmacSHA384=d._createHmacHelper(a)})();\r\n\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nvar b64map=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var b64pad=\"=\";function hex2b64(d){var b;var e;var a=\"\";for(b=0;b+3<=d.length;b+=3){e=parseInt(d.substring(b,b+3),16);a+=b64map.charAt(e>>6)+b64map.charAt(e&63)}if(b+1==d.length){e=parseInt(d.substring(b,b+1),16);a+=b64map.charAt(e<<2)}else{if(b+2==d.length){e=parseInt(d.substring(b,b+2),16);a+=b64map.charAt(e>>2)+b64map.charAt((e&3)<<4)}}if(b64pad){while((a.length&3)>0){a+=b64pad}}return a}function b64tohex(f){var d=\"\";var e;var b=0;var c;var a;for(e=0;e<f.length;++e){if(f.charAt(e)==b64pad){break}a=b64map.indexOf(f.charAt(e));if(a<0){continue}if(b==0){d+=int2char(a>>2);c=a&3;b=1}else{if(b==1){d+=int2char((c<<2)|(a>>4));c=a&15;b=2}else{if(b==2){d+=int2char(c);d+=int2char(a>>2);c=a&3;b=3}else{d+=int2char((c<<2)|(a>>4));d+=int2char(a&15);b=0}}}}if(b==1){d+=int2char(c<<2)}return d}function b64toBA(e){var d=b64tohex(e);var c;var b=new Array();for(c=0;2*c<d.length;++c){b[c]=parseInt(d.substring(2*c,2*c+2),16)}return b};\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nvar dbits;var canary=244837814094590;var j_lm=((canary&16777215)==15715070);function BigInteger(e,d,f){if(e!=null){if(\"number\"==typeof e){this.fromNumber(e,d,f)}else{if(d==null&&\"string\"!=typeof e){this.fromString(e,256)}else{this.fromString(e,d)}}}}function nbi(){return new BigInteger(null)}function am1(f,a,b,e,h,g){while(--g>=0){var d=a*this[f++]+b[e]+h;h=Math.floor(d/67108864);b[e++]=d&67108863}return h}function am2(f,q,r,e,o,a){var k=q&32767,p=q>>15;while(--a>=0){var d=this[f]&32767;var g=this[f++]>>15;var b=p*d+g*k;d=k*d+((b&32767)<<15)+r[e]+(o&1073741823);o=(d>>>30)+(b>>>15)+p*g+(o>>>30);r[e++]=d&1073741823}return o}function am3(f,q,r,e,o,a){var k=q&16383,p=q>>14;while(--a>=0){var d=this[f]&16383;var g=this[f++]>>14;var b=p*d+g*k;d=k*d+((b&16383)<<14)+r[e]+o;o=(d>>28)+(b>>14)+p*g;r[e++]=d&268435455}return o}if(j_lm&&(navigator.appName==\"Microsoft Internet Explorer\")){BigInteger.prototype.am=am2;dbits=30}else{if(j_lm&&(navigator.appName!=\"Netscape\")){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<<dbits)-1);BigInteger.prototype.DV=(1<<dbits);var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP);BigInteger.prototype.F1=BI_FP-dbits;BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM=\"0123456789abcdefghijklmnopqrstuvwxyz\";var BI_RC=new Array();var rr,vv;rr=\"0\".charCodeAt(0);for(vv=0;vv<=9;++vv){BI_RC[rr++]=vv}rr=\"a\".charCodeAt(0);for(vv=10;vv<36;++vv){BI_RC[rr++]=vv}rr=\"A\".charCodeAt(0);for(vv=10;vv<36;++vv){BI_RC[rr++]=vv}function int2char(a){return BI_RM.charAt(a)}function intAt(b,a){var d=BI_RC[b.charCodeAt(a)];return(d==null)?-1:d}function bnpCopyTo(b){for(var a=this.t-1;a>=0;--a){b[a]=this[a]}b.t=this.t;b.s=this.s}function bnpFromInt(a){this.t=1;this.s=(a<0)?-1:0;if(a>0){this[0]=a}else{if(a<-1){this[0]=a+this.DV}else{this.t=0}}}function nbv(a){var b=nbi();b.fromInt(a);return b}function bnpFromString(h,c){var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==256){e=8}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{this.fromRadix(h,c);return}}}}}}this.t=0;this.s=0;var g=h.length,d=false,f=0;while(--g>=0){var a=(e==8)?h[g]&255:intAt(h,g);if(a<0){if(h.charAt(g)==\"-\"){d=true}continue}d=false;if(f==0){this[this.t++]=a}else{if(f+e>this.DB){this[this.t-1]|=(a&((1<<(this.DB-f))-1))<<f;this[this.t++]=(a>>(this.DB-f))}else{this[this.t-1]|=a<<f}}f+=e;if(f>=this.DB){f-=this.DB}}if(e==8&&(h[0]&128)!=0){this.s=-1;if(f>0){this[this.t-1]|=((1<<(this.DB-f))-1)<<f}}this.clamp();if(d){BigInteger.ZERO.subTo(this,this)}}function bnpClamp(){var a=this.s&this.DM;while(this.t>0&&this[this.t-1]==a){--this.t}}function bnToString(c){if(this.s<0){return\"-\"+this.negate().toString(c)}var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{return this.toRadix(c)}}}}}var g=(1<<e)-1,l,a=false,h=\"\",f=this.t;var j=this.DB-(f*this.DB)%e;if(f-->0){if(j<this.DB&&(l=this[f]>>j)>0){a=true;h=int2char(l)}while(f>=0){if(j<e){l=(this[f]&((1<<j)-1))<<(e-j);l|=this[--f]>>(j+=this.DB-e)}else{l=(this[f]>>(j-=e))&g;if(j<=0){j+=this.DB;--f}}if(l>0){a=true}if(a){h+=int2char(l)}}}return a?h:\"0\"}function bnNegate(){var a=nbi();BigInteger.ZERO.subTo(this,a);return a}function bnAbs(){return(this.s<0)?this.negate():this}function bnCompareTo(b){var d=this.s-b.s;if(d!=0){return d}var c=this.t;d=c-b.t;if(d!=0){return(this.s<0)?-d:d}while(--c>=0){if((d=this[c]-b[c])!=0){return d}}return 0}function nbits(a){var c=1,b;if((b=a>>>16)!=0){a=b;c+=16}if((b=a>>8)!=0){a=b;c+=8}if((b=a>>4)!=0){a=b;c+=4}if((b=a>>2)!=0){a=b;c+=2}if((b=a>>1)!=0){a=b;c+=1}return c}function bnBitLength(){if(this.t<=0){return 0}return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM))}function bnpDLShiftTo(c,b){var a;for(a=this.t-1;a>=0;--a){b[a+c]=this[a]}for(a=c-1;a>=0;--a){b[a]=0}b.t=this.t+c;b.s=this.s}function bnpDRShiftTo(c,b){for(var a=c;a<this.t;++a){b[a-c]=this[a]}b.t=Math.max(this.t-c,0);b.s=this.s}function bnpLShiftTo(j,e){var b=j%this.DB;var a=this.DB-b;var g=(1<<a)-1;var f=Math.floor(j/this.DB),h=(this.s<<b)&this.DM,d;for(d=this.t-1;d>=0;--d){e[d+f+1]=(this[d]>>a)|h;h=(this[d]&g)<<b}for(d=f-1;d>=0;--d){e[d]=0}e[f]=h;e.t=this.t+f+1;e.s=this.s;e.clamp()}function bnpRShiftTo(g,d){d.s=this.s;var e=Math.floor(g/this.DB);if(e>=this.t){d.t=0;return}var b=g%this.DB;var a=this.DB-b;var f=(1<<b)-1;d[0]=this[e]>>b;for(var c=e+1;c<this.t;++c){d[c-e-1]|=(this[c]&f)<<a;d[c-e]=this[c]>>b}if(b>0){d[this.t-e-1]|=(this.s&f)<<a}d.t=this.t-e;d.clamp()}function bnpSubTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e<b){g+=this[e]-d[e];f[e++]=g&this.DM;g>>=this.DB}if(d.t<this.t){g-=d.s;while(e<this.t){g+=this[e];f[e++]=g&this.DM;g>>=this.DB}g+=this.s}else{g+=this.s;while(e<d.t){g-=d[e];f[e++]=g&this.DM;g>>=this.DB}g-=d.s}f.s=(g<0)?-1:0;if(g<-1){f[e++]=this.DV+g}else{if(g>0){f[e++]=g}}f.t=e;f.clamp()}function bnpMultiplyTo(c,e){var b=this.abs(),f=c.abs();var d=b.t;e.t=d+f.t;while(--d>=0){e[d]=0}for(d=0;d<f.t;++d){e[d+b.t]=b.am(0,f[d],e,d,0,b.t)}e.s=0;e.clamp();if(this.s!=c.s){BigInteger.ZERO.subTo(e,e)}}function bnpSquareTo(d){var a=this.abs();var b=d.t=2*a.t;while(--b>=0){d[b]=0}for(b=0;b<a.t-1;++b){var e=a.am(b,a[b],d,2*b,0,1);if((d[b+a.t]+=a.am(b+1,2*a[b],d,2*b+1,e,a.t-b-1))>=a.DV){d[b+a.t]-=a.DV;d[b+a.t+1]=1}}if(d.t>0){d[d.t-1]+=a.am(b,a[b],d,2*b,0,1)}d.s=0;d.clamp()}function bnpDivRemTo(n,h,g){var w=n.abs();if(w.t<=0){return}var k=this.abs();if(k.t<w.t){if(h!=null){h.fromInt(0)}if(g!=null){this.copyTo(g)}return}if(g==null){g=nbi()}var d=nbi(),a=this.s,l=n.s;var v=this.DB-nbits(w[w.t-1]);if(v>0){w.lShiftTo(v,d);k.lShiftTo(v,g)}else{w.copyTo(d);k.copyTo(g)}var p=d.t;var b=d[p-1];if(b==0){return}var o=b*(1<<this.F1)+((p>1)?d[p-2]>>this.F2:0);var A=this.FV/o,z=(1<<this.F1)/o,x=1<<this.F2;var u=g.t,s=u-p,f=(h==null)?nbi():h;d.dlShiftTo(s,f);if(g.compareTo(f)>=0){g[g.t++]=1;g.subTo(f,g)}BigInteger.ONE.dlShiftTo(p,f);f.subTo(d,d);while(d.t<p){d[d.t++]=0}while(--s>=0){var c=(g[--u]==b)?this.DM:Math.floor(g[u]*A+(g[u-1]+x)*z);if((g[u]+=d.am(0,c,g,s,0,p))<c){d.dlShiftTo(s,f);g.subTo(f,g);while(g[u]<--c){g.subTo(f,g)}}}if(h!=null){g.drShiftTo(p,h);if(a!=l){BigInteger.ZERO.subTo(h,h)}}g.t=p;g.clamp();if(v>0){g.rShiftTo(v,g)}if(a<0){BigInteger.ZERO.subTo(g,g)}}function bnMod(b){var c=nbi();this.abs().divRemTo(b,null,c);if(this.s<0&&c.compareTo(BigInteger.ZERO)>0){b.subTo(c,c)}return c}function Classic(a){this.m=a}function cConvert(a){if(a.s<0||a.compareTo(this.m)>=0){return a.mod(this.m)}else{return a}}function cRevert(a){return a}function cReduce(a){a.divRemTo(this.m,null,a)}function cMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}function cSqrTo(a,b){a.squareTo(b);this.reduce(b)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1){return 0}var a=this[0];if((a&1)==0){return 0}var b=a&3;b=(b*(2-(a&15)*b))&15;b=(b*(2-(a&255)*b))&255;b=(b*(2-(((a&65535)*b)&65535)))&65535;b=(b*(2-a*b%this.DV))%this.DV;return(b>0)?this.DV-b:-b}function Montgomery(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(a.DB-15))-1;this.mt2=2*a.t}function montConvert(a){var b=nbi();a.abs().dlShiftTo(this.m.t,b);b.divRemTo(this.m,null,b);if(a.s<0&&b.compareTo(BigInteger.ZERO)>0){this.m.subTo(b,b)}return b}function montRevert(a){var b=nbi();a.copyTo(b);this.reduce(b);return b}function montReduce(a){while(a.t<=this.mt2){a[a.t++]=0}for(var c=0;c<this.m.t;++c){var b=a[c]&32767;var d=(b*this.mpl+(((b*this.mph+(a[c]>>15)*this.mpl)&this.um)<<15))&a.DM;b=c+this.m.t;a[b]+=this.m.am(0,d,a,c,0,this.m.t);while(a[b]>=a.DV){a[b]-=a.DV;a[++b]++}}a.clamp();a.drShiftTo(this.m.t,a);if(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function montSqrTo(a,b){a.squareTo(b);this.reduce(b)}function montMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return((this.t>0)?(this[0]&1):this.s)==0}function bnpExp(h,j){if(h>4294967295||h<1){return BigInteger.ONE}var f=nbi(),a=nbi(),d=j.convert(this),c=nbits(h)-1;d.copyTo(f);while(--c>=0){j.sqrTo(f,a);if((h&(1<<c))>0){j.mulTo(a,d,f)}else{var b=f;f=a;a=b}}return j.revert(f)}function bnModPowInt(b,a){var c;if(b<256||a.isEven()){c=new Classic(a)}else{c=new Montgomery(a)}return this.exp(b,c)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nfunction bnClone(){var a=nbi();this.copyTo(a);return a}function bnIntValue(){if(this.s<0){if(this.t==1){return this[0]-this.DV}else{if(this.t==0){return -1}}}else{if(this.t==1){return this[0]}else{if(this.t==0){return 0}}}return((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0]}function bnByteValue(){return(this.t==0)?this.s:(this[0]<<24)>>24}function bnShortValue(){return(this.t==0)?this.s:(this[0]<<16)>>16}function bnpChunkSize(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function bnSigNum(){if(this.s<0){return -1}else{if(this.t<=0||(this.t==1&&this[0]<=0)){return 0}else{return 1}}}function bnpToRadix(c){if(c==null){c=10}if(this.signum()==0||c<2||c>36){return\"0\"}var f=this.chunkSize(c);var e=Math.pow(c,f);var i=nbv(e),j=nbi(),h=nbi(),g=\"\";this.divRemTo(i,j,h);while(j.signum()>0){g=(e+h.intValue()).toString(c).substr(1)+g;j.divRemTo(i,j,h)}return h.intValue().toString(c)+g}function bnpFromRadix(m,h){this.fromInt(0);if(h==null){h=10}var f=this.chunkSize(h);var g=Math.pow(h,f),e=false,a=0,l=0;for(var c=0;c<m.length;++c){var k=intAt(m,c);if(k<0){if(m.charAt(c)==\"-\"&&this.signum()==0){e=true}continue}l=h*l+k;if(++a>=f){this.dMultiply(g);this.dAddOffset(l,0);a=0;l=0}}if(a>0){this.dMultiply(Math.pow(h,a));this.dAddOffset(l,0)}if(e){BigInteger.ZERO.subTo(this,this)}}function bnpFromNumber(f,e,h){if(\"number\"==typeof e){if(f<2){this.fromInt(1)}else{this.fromNumber(f,h);if(!this.testBit(f-1)){this.bitwiseTo(BigInteger.ONE.shiftLeft(f-1),op_or,this)}if(this.isEven()){this.dAddOffset(1,0)}while(!this.isProbablePrime(e)){this.dAddOffset(2,0);if(this.bitLength()>f){this.subTo(BigInteger.ONE.shiftLeft(f-1),this)}}}}else{var d=new Array(),g=f&7;d.length=(f>>3)+1;e.nextBytes(d);if(g>0){d[0]&=((1<<g)-1)}else{d[0]=0}this.fromString(d,256)}}function bnToByteArray(){var b=this.t,c=new Array();c[0]=this.s;var e=this.DB-(b*this.DB)%8,f,a=0;if(b-->0){if(e<this.DB&&(f=this[b]>>e)!=(this.s&this.DM)>>e){c[a++]=f|(this.s<<(this.DB-e))}while(b>=0){if(e<8){f=(this[b]&((1<<e)-1))<<(8-e);f|=this[--b]>>(e+=this.DB-8)}else{f=(this[b]>>(e-=8))&255;if(e<=0){e+=this.DB;--b}}if((f&128)!=0){f|=-256}if(a==0&&(this.s&128)!=(f&128)){++a}if(a>0||f!=this.s){c[a++]=f}}}return c}function bnEquals(b){return(this.compareTo(b)==0)}function bnMin(b){return(this.compareTo(b)<0)?this:b}function bnMax(b){return(this.compareTo(b)>0)?this:b}function bnpBitwiseTo(c,h,e){var d,g,b=Math.min(c.t,this.t);for(d=0;d<b;++d){e[d]=h(this[d],c[d])}if(c.t<this.t){g=c.s&this.DM;for(d=b;d<this.t;++d){e[d]=h(this[d],g)}e.t=this.t}else{g=this.s&this.DM;for(d=b;d<c.t;++d){e[d]=h(g,c[d])}e.t=c.t}e.s=h(this.s,c.s);e.clamp()}function op_and(a,b){return a&b}function bnAnd(b){var c=nbi();this.bitwiseTo(b,op_and,c);return c}function op_or(a,b){return a|b}function bnOr(b){var c=nbi();this.bitwiseTo(b,op_or,c);return c}function op_xor(a,b){return a^b}function bnXor(b){var c=nbi();this.bitwiseTo(b,op_xor,c);return c}function op_andnot(a,b){return a&~b}function bnAndNot(b){var c=nbi();this.bitwiseTo(b,op_andnot,c);return c}function bnNot(){var b=nbi();for(var a=0;a<this.t;++a){b[a]=this.DM&~this[a]}b.t=this.t;b.s=~this.s;return b}function bnShiftLeft(b){var a=nbi();if(b<0){this.rShiftTo(-b,a)}else{this.lShiftTo(b,a)}return a}function bnShiftRight(b){var a=nbi();if(b<0){this.lShiftTo(-b,a)}else{this.rShiftTo(b,a)}return a}function lbit(a){if(a==0){return -1}var b=0;if((a&65535)==0){a>>=16;b+=16}if((a&255)==0){a>>=8;b+=8}if((a&15)==0){a>>=4;b+=4}if((a&3)==0){a>>=2;b+=2}if((a&1)==0){++b}return b}function bnGetLowestSetBit(){for(var a=0;a<this.t;++a){if(this[a]!=0){return a*this.DB+lbit(this[a])}}if(this.s<0){return this.t*this.DB}return -1}function cbit(a){var b=0;while(a!=0){a&=a-1;++b}return b}function bnBitCount(){var c=0,a=this.s&this.DM;for(var b=0;b<this.t;++b){c+=cbit(this[b]^a)}return c}function bnTestBit(b){var a=Math.floor(b/this.DB);if(a>=this.t){return(this.s!=0)}return((this[a]&(1<<(b%this.DB)))!=0)}function bnpChangeBit(c,b){var a=BigInteger.ONE.shiftLeft(c);this.bitwiseTo(a,b,a);return a}function bnSetBit(a){return this.changeBit(a,op_or)}function bnClearBit(a){return this.changeBit(a,op_andnot)}function bnFlipBit(a){return this.changeBit(a,op_xor)}function bnpAddTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e<b){g+=this[e]+d[e];f[e++]=g&this.DM;g>>=this.DB}if(d.t<this.t){g+=d.s;while(e<this.t){g+=this[e];f[e++]=g&this.DM;g>>=this.DB}g+=this.s}else{g+=this.s;while(e<d.t){g+=d[e];f[e++]=g&this.DM;g>>=this.DB}g+=d.s}f.s=(g<0)?-1:0;if(g>0){f[e++]=g}else{if(g<-1){f[e++]=this.DV+g}}f.t=e;f.clamp()}function bnAdd(b){var c=nbi();this.addTo(b,c);return c}function bnSubtract(b){var c=nbi();this.subTo(b,c);return c}function bnMultiply(b){var c=nbi();this.multiplyTo(b,c);return c}function bnSquare(){var a=nbi();this.squareTo(a);return a}function bnDivide(b){var c=nbi();this.divRemTo(b,c,null);return c}function bnRemainder(b){var c=nbi();this.divRemTo(b,null,c);return c}function bnDivideAndRemainder(b){var d=nbi(),c=nbi();this.divRemTo(b,d,c);return new Array(d,c)}function bnpDMultiply(a){this[this.t]=this.am(0,a-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(b,a){if(b==0){return}while(this.t<=a){this[this.t++]=0}this[a]+=b;while(this[a]>=this.DV){this[a]-=this.DV;if(++a>=this.t){this[this.t++]=0}++this[a]}}function NullExp(){}function nNop(a){return a}function nMulTo(a,c,b){a.multiplyTo(c,b)}function nSqrTo(a,b){a.squareTo(b)}NullExp.prototype.convert=nNop;NullExp.prototype.revert=nNop;NullExp.prototype.mulTo=nMulTo;NullExp.prototype.sqrTo=nSqrTo;function bnPow(a){return this.exp(a,new NullExp())}function bnpMultiplyLowerTo(b,f,e){var d=Math.min(this.t+b.t,f);e.s=0;e.t=d;while(d>0){e[--d]=0}var c;for(c=e.t-this.t;d<c;++d){e[d+this.t]=this.am(0,b[d],e,d,0,this.t)}for(c=Math.min(b.t,f);d<c;++d){this.am(0,b[d],e,d,0,f-d)}e.clamp()}function bnpMultiplyUpperTo(b,e,d){--e;var c=d.t=this.t+b.t-e;d.s=0;while(--c>=0){d[c]=0}for(c=Math.max(e-this.t,0);c<b.t;++c){d[this.t+c-e]=this.am(e-c,b[c],d,0,0,this.t+c-e)}d.clamp();d.drShiftTo(1,d)}function Barrett(a){this.r2=nbi();this.q3=nbi();BigInteger.ONE.dlShiftTo(2*a.t,this.r2);this.mu=this.r2.divide(a);this.m=a}function barrettConvert(a){if(a.s<0||a.t>2*this.m.t){return a.mod(this.m)}else{if(a.compareTo(this.m)<0){return a}else{var b=nbi();a.copyTo(b);this.reduce(b);return b}}}function barrettRevert(a){return a}function barrettReduce(a){a.drShiftTo(this.m.t-1,this.r2);if(a.t>this.m.t+1){a.t=this.m.t+1;a.clamp()}this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(a.compareTo(this.r2)<0){a.dAddOffset(1,this.m.t+1)}a.subTo(this.r2,a);while(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function barrettSqrTo(a,b){a.squareTo(b);this.reduce(b)}function barrettMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Barrett.prototype.convert=barrettConvert;Barrett.prototype.revert=barrettRevert;Barrett.prototype.reduce=barrettReduce;Barrett.prototype.mulTo=barrettMulTo;Barrett.prototype.sqrTo=barrettSqrTo;function bnModPow(q,f){var o=q.bitLength(),h,b=nbv(1),v;if(o<=0){return b}else{if(o<18){h=1}else{if(o<48){h=3}else{if(o<144){h=4}else{if(o<768){h=5}else{h=6}}}}}if(o<8){v=new Classic(f)}else{if(f.isEven()){v=new Barrett(f)}else{v=new Montgomery(f)}}var p=new Array(),d=3,s=h-1,a=(1<<h)-1;p[1]=v.convert(this);if(h>1){var A=nbi();v.sqrTo(p[1],A);while(d<=a){p[d]=nbi();v.mulTo(A,p[d-2],p[d]);d+=2}}var l=q.t-1,x,u=true,c=nbi(),y;o=nbits(q[l])-1;while(l>=0){if(o>=s){x=(q[l]>>(o-s))&a}else{x=(q[l]&((1<<(o+1))-1))<<(s-o);if(l>0){x|=q[l-1]>>(this.DB+o-s)}}d=h;while((x&1)==0){x>>=1;--d}if((o-=d)<0){o+=this.DB;--l}if(u){p[x].copyTo(b);u=false}else{while(d>1){v.sqrTo(b,c);v.sqrTo(c,b);d-=2}if(d>0){v.sqrTo(b,c)}else{y=b;b=c;c=y}v.mulTo(c,p[x],b)}while(l>=0&&(q[l]&(1<<o))==0){v.sqrTo(b,c);y=b;b=c;c=y;if(--o<0){o=this.DB-1;--l}}}return v.revert(b)}function bnGCD(c){var b=(this.s<0)?this.negate():this.clone();var h=(c.s<0)?c.negate():c.clone();if(b.compareTo(h)<0){var e=b;b=h;h=e}var d=b.getLowestSetBit(),f=h.getLowestSetBit();if(f<0){return b}if(d<f){f=d}if(f>0){b.rShiftTo(f,b);h.rShiftTo(f,h)}while(b.signum()>0){if((d=b.getLowestSetBit())>0){b.rShiftTo(d,b)}if((d=h.getLowestSetBit())>0){h.rShiftTo(d,h)}if(b.compareTo(h)>=0){b.subTo(h,b);b.rShiftTo(1,b)}else{h.subTo(b,h);h.rShiftTo(1,h)}}if(f>0){h.lShiftTo(f,h)}return h}function bnpModInt(e){if(e<=0){return 0}var c=this.DV%e,b=(this.s<0)?e-1:0;if(this.t>0){if(c==0){b=this[0]%e}else{for(var a=this.t-1;a>=0;--a){b=(c*b+this[a])%e}}}return b}function bnModInverse(f){var j=f.isEven();if((this.isEven()&&j)||f.signum()==0){return BigInteger.ZERO}var i=f.clone(),h=this.clone();var g=nbv(1),e=nbv(0),l=nbv(0),k=nbv(1);while(i.signum()!=0){while(i.isEven()){i.rShiftTo(1,i);if(j){if(!g.isEven()||!e.isEven()){g.addTo(this,g);e.subTo(f,e)}g.rShiftTo(1,g)}else{if(!e.isEven()){e.subTo(f,e)}}e.rShiftTo(1,e)}while(h.isEven()){h.rShiftTo(1,h);if(j){if(!l.isEven()||!k.isEven()){l.addTo(this,l);k.subTo(f,k)}l.rShiftTo(1,l)}else{if(!k.isEven()){k.subTo(f,k)}}k.rShiftTo(1,k)}if(i.compareTo(h)>=0){i.subTo(h,i);if(j){g.subTo(l,g)}e.subTo(k,e)}else{h.subTo(i,h);if(j){l.subTo(g,l)}k.subTo(e,k)}}if(h.compareTo(BigInteger.ONE)!=0){return BigInteger.ZERO}if(k.compareTo(f)>=0){return k.subtract(f)}if(k.signum()<0){k.addTo(f,k)}else{return k}if(k.signum()<0){return k.add(f)}else{return k}}var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];var lplim=(1<<26)/lowprimes[lowprimes.length-1];function bnIsProbablePrime(e){var d,b=this.abs();if(b.t==1&&b[0]<=lowprimes[lowprimes.length-1]){for(d=0;d<lowprimes.length;++d){if(b[0]==lowprimes[d]){return true}}return false}if(b.isEven()){return false}d=1;while(d<lowprimes.length){var a=lowprimes[d],c=d+1;while(c<lowprimes.length&&a<lplim){a*=lowprimes[c++]}a=b.modInt(a);while(d<c){if(a%lowprimes[d++]==0){return false}}}return b.millerRabin(e)}function bnpMillerRabin(f){var g=this.subtract(BigInteger.ONE);var c=g.getLowestSetBit();if(c<=0){return false}var h=g.shiftRight(c);f=(f+1)>>1;if(f>lowprimes.length){f=lowprimes.length}var b=nbi();for(var e=0;e<f;++e){b.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);var l=b.modPow(h,this);if(l.compareTo(BigInteger.ONE)!=0&&l.compareTo(g)!=0){var d=1;while(d++<c&&l.compareTo(g)!=0){l=l.modPowInt(2,this);if(l.compareTo(BigInteger.ONE)==0){return false}}if(l.compareTo(g)!=0){return false}}}return true}BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.fromNumber=bnpFromNumber;BigInteger.prototype.bitwiseTo=bnpBitwiseTo;BigInteger.prototype.changeBit=bnpChangeBit;BigInteger.prototype.addTo=bnpAddTo;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.multiplyLowerTo=bnpMultiplyLowerTo;BigInteger.prototype.multiplyUpperTo=bnpMultiplyUpperTo;BigInteger.prototype.modInt=bnpModInt;BigInteger.prototype.millerRabin=bnpMillerRabin;BigInteger.prototype.clone=bnClone;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.byteValue=bnByteValue;BigInteger.prototype.shortValue=bnShortValue;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.toByteArray=bnToByteArray;BigInteger.prototype.equals=bnEquals;BigInteger.prototype.min=bnMin;BigInteger.prototype.max=bnMax;BigInteger.prototype.and=bnAnd;BigInteger.prototype.or=bnOr;BigInteger.prototype.xor=bnXor;BigInteger.prototype.andNot=bnAndNot;BigInteger.prototype.not=bnNot;BigInteger.prototype.shiftLeft=bnShiftLeft;BigInteger.prototype.shiftRight=bnShiftRight;BigInteger.prototype.getLowestSetBit=bnGetLowestSetBit;BigInteger.prototype.bitCount=bnBitCount;BigInteger.prototype.testBit=bnTestBit;BigInteger.prototype.setBit=bnSetBit;BigInteger.prototype.clearBit=bnClearBit;BigInteger.prototype.flipBit=bnFlipBit;BigInteger.prototype.add=bnAdd;BigInteger.prototype.subtract=bnSubtract;BigInteger.prototype.multiply=bnMultiply;BigInteger.prototype.divide=bnDivide;BigInteger.prototype.remainder=bnRemainder;BigInteger.prototype.divideAndRemainder=bnDivideAndRemainder;BigInteger.prototype.modPow=bnModPow;BigInteger.prototype.modInverse=bnModInverse;BigInteger.prototype.pow=bnPow;BigInteger.prototype.gcd=bnGCD;BigInteger.prototype.isProbablePrime=bnIsProbablePrime;BigInteger.prototype.square=bnSquare;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nfunction Arcfour(){this.i=0;this.j=0;this.S=new Array()}function ARC4init(d){var c,a,b;for(c=0;c<256;++c){this.S[c]=c}a=0;for(c=0;c<256;++c){a=(a+this.S[c]+d[c%d.length])&255;b=this.S[c];this.S[c]=this.S[a];this.S[a]=b}this.i=0;this.j=0}function ARC4next(){var a;this.i=(this.i+1)&255;this.j=(this.j+this.S[this.i])&255;a=this.S[this.i];this.S[this.i]=this.S[this.j];this.S[this.j]=a;return this.S[(a+this.S[this.i])&255]}Arcfour.prototype.init=ARC4init;Arcfour.prototype.next=ARC4next;function prng_newstate(){return new Arcfour()}var rng_psize=256;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nvar rng_state;var rng_pool;var rng_pptr;function rng_seed_int(a){rng_pool[rng_pptr++]^=a&255;rng_pool[rng_pptr++]^=(a>>8)&255;rng_pool[rng_pptr++]^=(a>>16)&255;rng_pool[rng_pptr++]^=(a>>24)&255;if(rng_pptr>=rng_psize){rng_pptr-=rng_psize}}function rng_seed_time(){rng_seed_int(new Date().getTime())}if(rng_pool==null){rng_pool=new Array();rng_pptr=0;var t;if(window!==undefined&&(window.crypto!==undefined||window.msCrypto!==undefined)){var crypto=window.crypto||window.msCrypto;if(crypto.getRandomValues){var ua=new Uint8Array(32);crypto.getRandomValues(ua);for(t=0;t<32;++t){rng_pool[rng_pptr++]=ua[t]}}else{if(navigator.appName==\"Netscape\"&&navigator.appVersion<\"5\"){var z=window.crypto.random(32);for(t=0;t<z.length;++t){rng_pool[rng_pptr++]=z.charCodeAt(t)&255}}}}while(rng_pptr<rng_psize){t=Math.floor(65536*Math.random());rng_pool[rng_pptr++]=t>>>8;rng_pool[rng_pptr++]=t&255}rng_pptr=0;rng_seed_time()}function rng_get_byte(){if(rng_state==null){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr<rng_pool.length;++rng_pptr){rng_pool[rng_pptr]=0}rng_pptr=0}return rng_state.next()}function rng_get_bytes(b){var a;for(a=0;a<b.length;++a){b[a]=rng_get_byte()}}function SecureRandom(){}SecureRandom.prototype.nextBytes=rng_get_bytes;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nfunction parseBigInt(b,a){return new BigInteger(b,a)}function linebrk(c,d){var a=\"\";var b=0;while(b+d<c.length){a+=c.substring(b,b+d)+\"\\n\";b+=d}return a+c.substring(b,c.length)}function byte2Hex(a){if(a<16){return\"0\"+a.toString(16)}else{return a.toString(16)}}function pkcs1pad2(e,h){if(h<e.length+11){throw\"Message too long for RSA\";return null}var g=new Array();var d=e.length-1;while(d>=0&&h>0){var f=e.charCodeAt(d--);if(f<128){g[--h]=f}else{if((f>127)&&(f<2048)){g[--h]=(f&63)|128;g[--h]=(f>>6)|192}else{g[--h]=(f&63)|128;g[--h]=((f>>6)&63)|128;g[--h]=(f>>12)|224}}}g[--h]=0;var b=new SecureRandom();var a=new Array();while(h>2){a[0]=0;while(a[0]==0){b.nextBytes(a)}g[--h]=a[0]}g[--h]=2;g[--h]=0;return new BigInteger(g)}function oaep_mgf1_arr(c,a,e){var b=\"\",d=0;while(b.length<a){b+=e(String.fromCharCode.apply(String,c.concat([(d&4278190080)>>24,(d&16711680)>>16,(d&65280)>>8,d&255])));d+=1}return b}function oaep_pad(q,a,f,l){var c=KJUR.crypto.MessageDigest;var o=KJUR.crypto.Util;var b=null;if(!f){f=\"sha1\"}if(typeof f===\"string\"){b=c.getCanonicalAlgName(f);l=c.getHashLength(b);f=function(i){return hextorstr(o.hashHex(rstrtohex(i),b))}}if(q.length+2*l+2>a){throw\"Message too long for RSA\"}var k=\"\",e;for(e=0;e<a-q.length-2*l-2;e+=1){k+=\"\\x00\"}var h=f(\"\")+k+\"\\x01\"+q;var g=new Array(l);new SecureRandom().nextBytes(g);var j=oaep_mgf1_arr(g,h.length,f);var p=[];for(e=0;e<h.length;e+=1){p[e]=h.charCodeAt(e)^j.charCodeAt(e)}var m=oaep_mgf1_arr(p,g.length,f);var d=[0];for(e=0;e<g.length;e+=1){d[e+1]=g[e]^m.charCodeAt(e)}return new BigInteger(d.concat(p))}function RSAKey(){this.n=null;this.e=0;this.d=null;this.p=null;this.q=null;this.dmp1=null;this.dmq1=null;this.coeff=null}function RSASetPublic(b,a){this.isPublic=true;this.isPrivate=false;if(typeof b!==\"string\"){this.n=b;this.e=a}else{if(b!=null&&a!=null&&b.length>0&&a.length>0){this.n=parseBigInt(b,16);this.e=parseInt(a,16)}else{throw\"Invalid RSA public key\"}}}function RSADoPublic(a){return a.modPowInt(this.e,this.n)}function RSAEncrypt(d){var a=pkcs1pad2(d,(this.n.bitLength()+7)>>3);if(a==null){return null}var e=this.doPublic(a);if(e==null){return null}var b=e.toString(16);if((b.length&1)==0){return b}else{return\"0\"+b}}function RSAEncryptOAEP(f,e,b){var a=oaep_pad(f,(this.n.bitLength()+7)>>3,e,b);if(a==null){return null}var g=this.doPublic(a);if(g==null){return null}var d=g.toString(16);if((d.length&1)==0){return d}else{return\"0\"+d}}RSAKey.prototype.doPublic=RSADoPublic;RSAKey.prototype.setPublic=RSASetPublic;RSAKey.prototype.encrypt=RSAEncrypt;RSAKey.prototype.encryptOAEP=RSAEncryptOAEP;RSAKey.prototype.type=\"RSA\";\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n */\r\nfunction ECFieldElementFp(b,a){this.x=a;this.q=b}function feFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.x.equals(a.x))}function feFpToBigInteger(){return this.x}function feFpNegate(){return new ECFieldElementFp(this.q,this.x.negate().mod(this.q))}function feFpAdd(a){return new ECFieldElementFp(this.q,this.x.add(a.toBigInteger()).mod(this.q))}function feFpSubtract(a){return new ECFieldElementFp(this.q,this.x.subtract(a.toBigInteger()).mod(this.q))}function feFpMultiply(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger()).mod(this.q))}function feFpSquare(){return new ECFieldElementFp(this.q,this.x.square().mod(this.q))}function feFpDivide(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger().modInverse(this.q)).mod(this.q))}ECFieldElementFp.prototype.equals=feFpEquals;ECFieldElementFp.prototype.toBigInteger=feFpToBigInteger;ECFieldElementFp.prototype.negate=feFpNegate;ECFieldElementFp.prototype.add=feFpAdd;ECFieldElementFp.prototype.subtract=feFpSubtract;ECFieldElementFp.prototype.multiply=feFpMultiply;ECFieldElementFp.prototype.square=feFpSquare;ECFieldElementFp.prototype.divide=feFpDivide;function ECPointFp(c,a,d,b){this.curve=c;this.x=a;this.y=d;if(b==null){this.z=BigInteger.ONE}else{this.z=b}this.zinv=null}function pointFpGetX(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpGetY(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpEquals(a){if(a==this){return true}if(this.isInfinity()){return a.isInfinity()}if(a.isInfinity()){return this.isInfinity()}var c,b;c=a.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(a.z)).mod(this.curve.q);if(!c.equals(BigInteger.ZERO)){return false}b=a.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(a.z)).mod(this.curve.q);return b.equals(BigInteger.ZERO)}function pointFpIsInfinity(){if((this.x==null)&&(this.y==null)){return true}return this.z.equals(BigInteger.ZERO)&&!this.y.toBigInteger().equals(BigInteger.ZERO)}function pointFpNegate(){return new ECPointFp(this.curve,this.x,this.y.negate(),this.z)}function pointFpAdd(l){if(this.isInfinity()){return l}if(l.isInfinity()){return this}var p=l.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(l.z)).mod(this.curve.q);var o=l.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(l.z)).mod(this.curve.q);if(BigInteger.ZERO.equals(o)){if(BigInteger.ZERO.equals(p)){return this.twice()}return this.curve.getInfinity()}var j=new BigInteger(\"3\");var e=this.x.toBigInteger();var n=this.y.toBigInteger();var c=l.x.toBigInteger();var k=l.y.toBigInteger();var m=o.square();var i=m.multiply(o);var d=e.multiply(m);var g=p.square().multiply(this.z);var a=g.subtract(d.shiftLeft(1)).multiply(l.z).subtract(i).multiply(o).mod(this.curve.q);var h=d.multiply(j).multiply(p).subtract(n.multiply(i)).subtract(g.multiply(p)).multiply(l.z).add(p.multiply(i)).mod(this.curve.q);var f=i.multiply(this.z).multiply(l.z).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(h),f)}function pointFpTwice(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var g=new BigInteger(\"3\");var c=this.x.toBigInteger();var h=this.y.toBigInteger();var e=h.multiply(this.z);var j=e.multiply(h).mod(this.curve.q);var i=this.curve.a.toBigInteger();var k=c.square().multiply(g);if(!BigInteger.ZERO.equals(i)){k=k.add(this.z.square().multiply(i))}k=k.mod(this.curve.q);var b=k.square().subtract(c.shiftLeft(3).multiply(j)).shiftLeft(1).multiply(e).mod(this.curve.q);var f=k.multiply(g).multiply(c).subtract(j.shiftLeft(1)).shiftLeft(2).multiply(j).subtract(k.square().multiply(k)).mod(this.curve.q);var d=e.square().multiply(e).shiftLeft(3).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(b),this.curve.fromBigInteger(f),d)}function pointFpMultiply(d){if(this.isInfinity()){return this}if(d.signum()==0){return this.curve.getInfinity()}var m=d;var l=m.multiply(new BigInteger(\"3\"));var b=this.negate();var j=this;var q=this.curve.q.subtract(d);var o=q.multiply(new BigInteger(\"3\"));var c=new ECPointFp(this.curve,this.x,this.y);var a=c.negate();var g;for(g=l.bitLength()-2;g>0;--g){j=j.twice();var n=l.testBit(g);var f=m.testBit(g);if(n!=f){j=j.add(n?this:b)}}for(g=o.bitLength()-2;g>0;--g){c=c.twice();var p=o.testBit(g);var r=q.testBit(g);if(p!=r){c=c.add(p?c:a)}}return j}function pointFpMultiplyTwo(c,a,b){var d;if(c.bitLength()>b.bitLength()){d=c.bitLength()-1}else{d=b.bitLength()-1}var f=this.curve.getInfinity();var e=this.add(a);while(d>=0){f=f.twice();if(c.testBit(d)){if(b.testBit(d)){f=f.add(e)}else{f=f.add(this)}}else{if(b.testBit(d)){f=f.add(a)}}--d}return f}ECPointFp.prototype.getX=pointFpGetX;ECPointFp.prototype.getY=pointFpGetY;ECPointFp.prototype.equals=pointFpEquals;ECPointFp.prototype.isInfinity=pointFpIsInfinity;ECPointFp.prototype.negate=pointFpNegate;ECPointFp.prototype.add=pointFpAdd;ECPointFp.prototype.twice=pointFpTwice;ECPointFp.prototype.multiply=pointFpMultiply;ECPointFp.prototype.multiplyTwo=pointFpMultiplyTwo;function ECCurveFp(e,d,c){this.q=e;this.a=this.fromBigInteger(d);this.b=this.fromBigInteger(c);this.infinity=new ECPointFp(this,null,null)}function curveFpGetQ(){return this.q}function curveFpGetA(){return this.a}function curveFpGetB(){return this.b}function curveFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.a.equals(a.a)&&this.b.equals(a.b))}function curveFpGetInfinity(){return this.infinity}function curveFpFromBigInteger(a){return new ECFieldElementFp(this.q,a)}function curveFpDecodePointHex(d){switch(parseInt(d.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var a=(d.length-2)/2;var c=d.substr(2,a);var b=d.substr(a+2,a);return new ECPointFp(this,this.fromBigInteger(new BigInteger(c,16)),this.fromBigInteger(new BigInteger(b,16)));default:return null}}ECCurveFp.prototype.getQ=curveFpGetQ;ECCurveFp.prototype.getA=curveFpGetA;ECCurveFp.prototype.getB=curveFpGetB;ECCurveFp.prototype.equals=curveFpEquals;ECCurveFp.prototype.getInfinity=curveFpGetInfinity;ECCurveFp.prototype.fromBigInteger=curveFpFromBigInteger;ECCurveFp.prototype.decodePointHex=curveFpDecodePointHex;\n/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib\r\n */\r\nECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)};ECPointFp.prototype.getEncoded=function(c){var d=function(h,f){var g=h.toByteArrayUnsigned();if(f<g.length){g=g.slice(g.length-f)}else{while(f>g.length){g.unshift(0)}}return g};var a=this.getX().toBigInteger();var e=this.getY().toBigInteger();var b=d(a,32);if(c){if(e.isEven()){b.unshift(2)}else{b.unshift(3)}}else{b.unshift(4);b=b.concat(d(e,32))}return b};ECPointFp.decodeFrom=function(g,c){var f=c[0];var e=c.length-1;var d=c.slice(1,1+e/2);var b=c.slice(1+e/2,1+e);d.unshift(0);b.unshift(0);var a=new BigInteger(d);var h=new BigInteger(b);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.decodeFromHex=function(g,c){var f=c.substr(0,2);var e=c.length-2;var d=c.substr(2,e/2);var b=c.substr(2+e/2,e/2);var a=new BigInteger(d,16);var h=new BigInteger(b,16);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.prototype.add2D=function(c){if(this.isInfinity()){return c}if(c.isInfinity()){return this}if(this.x.equals(c.x)){if(this.y.equals(c.y)){return this.twice()}return this.curve.getInfinity()}var g=c.x.subtract(this.x);var e=c.y.subtract(this.y);var a=e.divide(g);var d=a.square().subtract(this.x).subtract(c.x);var f=a.multiply(this.x.subtract(d)).subtract(this.y);return new ECPointFp(this.curve,d,f)};ECPointFp.prototype.twice2D=function(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var b=this.curve.fromBigInteger(BigInteger.valueOf(2));var e=this.curve.fromBigInteger(BigInteger.valueOf(3));var a=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(b));var c=a.square().subtract(this.x.multiply(b));var d=a.multiply(this.x.subtract(c)).subtract(this.y);return new ECPointFp(this.curve,c,d)};ECPointFp.prototype.multiply2D=function(b){if(this.isInfinity()){return this}if(b.signum()==0){return this.curve.getInfinity()}var g=b;var f=g.multiply(new BigInteger(\"3\"));var l=this.negate();var d=this;var c;for(c=f.bitLength()-2;c>0;--c){d=d.twice();var a=f.testBit(c);var j=g.testBit(c);if(a!=j){d=d.add2D(a?this:l)}}return d};ECPointFp.prototype.isOnCurve=function(){var d=this.getX().toBigInteger();var i=this.getY().toBigInteger();var f=this.curve.getA().toBigInteger();var c=this.curve.getB().toBigInteger();var h=this.curve.getQ();var e=i.multiply(i).mod(h);var g=d.multiply(d).multiply(d).add(f.multiply(d)).add(c).mod(h);return e.equals(g)};ECPointFp.prototype.toString=function(){return\"(\"+this.getX().toBigInteger().toString()+\",\"+this.getY().toBigInteger().toString()+\")\"};ECPointFp.prototype.validate=function(){var c=this.curve.getQ();if(this.isInfinity()){throw new Error(\"Point is at infinity.\")}var a=this.getX().toBigInteger();var b=this.getY().toBigInteger();if(a.compareTo(BigInteger.ONE)<0||a.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"x coordinate out of bounds\")}if(b.compareTo(BigInteger.ONE)<0||b.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"y coordinate out of bounds\")}if(!this.isOnCurve()){throw new Error(\"Point is not on the curve.\")}if(this.multiply(c).isInfinity()){throw new Error(\"Point is not a scalar multiple of G.\")}return true};\n/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval\r\n */\r\nvar jsonParse=(function(){var e=\"(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)\";var j='(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))';var i='(?:\"'+j+'*\")';var d=new RegExp(\"(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|\"+e+\"|\"+i+\")\",\"g\");var k=new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\",\"g\");var g={'\"':'\"',\"/\":\"/\",\"\\\\\":\"\\\\\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"};function h(l,m,n){return m?g[m]:String.fromCharCode(parseInt(n,16))}var c=new String(\"\");var a=\"\\\\\";var f={\"{\":Object,\"[\":Array};var b=Object.hasOwnProperty;return function(u,q){var p=u.match(d);var x;var v=p[0];var l=false;if(\"{\"===v){x={}}else{if(\"[\"===v){x=[]}else{x=[];l=true}}var t;var r=[x];for(var o=1-l,m=p.length;o<m;++o){v=p[o];var w;switch(v.charCodeAt(0)){default:w=r[0];w[t||w.length]=+(v);t=void 0;break;case 34:v=v.substring(1,v.length-1);if(v.indexOf(a)!==-1){v=v.replace(k,h)}w=r[0];if(!t){if(w instanceof Array){t=w.length}else{t=v||c;break}}w[t]=v;t=void 0;break;case 91:w=r[0];r.unshift(w[t||w.length]=[]);t=void 0;break;case 93:r.shift();break;case 102:w=r[0];w[t||w.length]=false;t=void 0;break;case 110:w=r[0];w[t||w.length]=null;t=void 0;break;case 116:w=r[0];w[t||w.length]=true;t=void 0;break;case 123:w=r[0];r.unshift(w[t||w.length]={});t=void 0;break;case 125:r.shift();break}}if(l){if(r.length!==1){throw new Error()}x=x[0]}else{if(r.length){throw new Error()}}if(q){var s=function(C,B){var D=C[B];if(D&&typeof D===\"object\"){var n=null;for(var z in D){if(b.call(D,z)&&D!==C){var y=s(D,z);if(y!==void 0){D[z]=y}else{if(!n){n=[]}n.push(z)}}}if(n){for(var A=n.length;--A>=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({\"\":x},\"\")}return x}})();\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.asn1==\"undefined\"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b=\"0\"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!=\"-\"){if(f.length%2==1){f=\"0\"+f}else{if(!f.match(/^[0-7]/)){f=\"00\"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g=\"\";for(var d=0;d<e;d++){g+=\"f\"}var c=new BigInteger(g,16);var b=c.xor(j).add(BigInteger.ONE);f=b.toString(16).replace(/^-/,\"\")}return f};this.getPEMStringFromHex=function(a,b){return hextopem(a,b)};this.newObject=function(k){var F=KJUR,o=F.asn1,v=o.ASN1Object,B=o.DERBoolean,e=o.DERInteger,t=o.DERBitString,h=o.DEROctetString,x=o.DERNull,y=o.DERObjectIdentifier,m=o.DEREnumerated,g=o.DERUTF8String,f=o.DERNumericString,A=o.DERPrintableString,w=o.DERTeletexString,q=o.DERIA5String,E=o.DERUTCTime,j=o.DERGeneralizedTime,b=o.DERVisibleString,l=o.DERBMPString,n=o.DERSequence,c=o.DERSet,s=o.DERTaggedObject,p=o.ASN1Util.newObject;if(k instanceof o.ASN1Object){return k}var u=Object.keys(k);if(u.length!=1){throw new Error(\"key of param shall be only one.\")}var H=u[0];if(\":asn1:bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:visstr:bmpstr:seq:set:tag:\".indexOf(\":\"+H+\":\")==-1){throw new Error(\"undefined key: \"+H)}if(H==\"bool\"){return new B(k[H])}if(H==\"int\"){return new e(k[H])}if(H==\"bitstr\"){return new t(k[H])}if(H==\"octstr\"){return new h(k[H])}if(H==\"null\"){return new x(k[H])}if(H==\"oid\"){return new y(k[H])}if(H==\"enum\"){return new m(k[H])}if(H==\"utf8str\"){return new g(k[H])}if(H==\"numstr\"){return new f(k[H])}if(H==\"prnstr\"){return new A(k[H])}if(H==\"telstr\"){return new w(k[H])}if(H==\"ia5str\"){return new q(k[H])}if(H==\"utctime\"){return new E(k[H])}if(H==\"gentime\"){return new j(k[H])}if(H==\"visstr\"){return new b(k[H])}if(H==\"bmpstr\"){return new l(k[H])}if(H==\"asn1\"){return new v(k[H])}if(H==\"seq\"){var d=k[H];var G=[];for(var z=0;z<d.length;z++){var D=p(d[z]);G.push(D)}return new n({array:G})}if(H==\"set\"){var d=k[H];var G=[];for(var z=0;z<d.length;z++){var D=p(d[z]);G.push(D)}return new c({array:G})}if(H==\"tag\"){var C=k[H];if(Object.prototype.toString.call(C)===\"[object Array]\"&&C.length==3){var r=p(C[2]);return new s({tag:C[0],explicit:C[1],obj:r})}else{return new s(C)}}};this.jsonToASN1HEX=function(b){var a=this.newObject(b);return a.getEncodedHex()}};KJUR.asn1.ASN1Util.oidHexToInt=function(a){var j=\"\";var k=parseInt(a.substr(0,2),16);var d=Math.floor(k/40);var c=k%40;var j=d+\".\"+c;var e=\"\";for(var f=2;f<a.length;f+=2){var g=parseInt(a.substr(f,2),16);var h=(\"00000000\"+g.toString(2)).slice(-8);e=e+h.substr(1,7);if(h.substr(0,1)==\"0\"){var b=new BigInteger(e,2);j=j+\".\"+b.toString(10);e=\"\"}}return j};KJUR.asn1.ASN1Util.oidIntToHex=function(f){var e=function(a){var k=a.toString(16);if(k.length==1){k=\"0\"+k}return k};var d=function(o){var n=\"\";var k=new BigInteger(o,10);var a=k.toString(2);var l=7-a.length%7;if(l==7){l=0}var q=\"\";for(var m=0;m<l;m++){q+=\"0\"}a=q+a;for(var m=0;m<a.length-1;m+=7){var p=a.substr(m,7);if(m!=a.length-7){p=\"1\"+p}n+=e(parseInt(p,2))}return n};if(!f.match(/^[0-9.]+$/)){throw\"malformed oid string: \"+f}var g=\"\";var b=f.split(\".\");var j=parseInt(b[0])*40+parseInt(b[1]);g+=e(j);b.splice(0,2);for(var c=0;c<b.length;c++){g+=d(b[c])}return g};KJUR.asn1.ASN1Object=function(e){var c=true;var b=null;var d=\"00\";var f=\"00\";var a=\"\";this.params=null;this.getLengthHexFromValue=function(){if(typeof this.hV==\"undefined\"||this.hV==null){throw new Error(\"this.hV is null or undefined\")}if(this.hV.length%2==1){throw new Error(\"value hex must be even length: n=\"+a.length+\",v=\"+this.hV)}var j=this.hV.length/2;var i=j.toString(16);if(i.length%2==1){i=\"0\"+i}if(j<128){return i}else{var h=i.length/2;if(h>15){throw\"ASN.1 length too long to represent by 8x: n = \"+j.toString(16)}var g=128+h;return g.toString(16)+i}};this.getEncodedHex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getValueHex=function(){this.getEncodedHex();return this.hV};this.getFreshValueHex=function(){return\"\"};this.setByParam=function(g){this.params=g};if(e!=undefined){if(e.tlv!=undefined){this.hTLV=e.tlv;this.isModified=false}}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=utf8tohex(this.s).toLowerCase()};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!=\"undefined\"){if(typeof c==\"string\"){this.setString(c)}else{if(typeof c.str!=\"undefined\"){this.setString(c.str)}else{if(typeof c.hex!=\"undefined\"){this.setStringHex(c.hex)}}}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(g){var e=g.getTime()+(g.getTimezoneOffset()*60000);var f=new Date(e);return f};this.formatDate=function(m,o,e){var g=this.zeroPadding;var n=this.localDateToUTC(m);var p=String(n.getFullYear());if(o==\"utc\"){p=p.substr(2,2)}var l=g(String(n.getMonth()+1),2);var q=g(String(n.getDate()),2);var h=g(String(n.getHours()),2);var i=g(String(n.getMinutes()),2);var j=g(String(n.getSeconds()),2);var r=p+l+q+h+i+j;if(e===true){var f=n.getMilliseconds();if(f!=0){var k=g(String(f),3);k=k.replace(/[0]+$/,\"\");r=r+\".\"+k}}return r+\"Z\"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join(\"0\")+e};this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=stohex(d)};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};YAHOO.lang.extend(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!=\"undefined\"){if(typeof b.array!=\"undefined\"){this.asn1Array=b.array}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(a){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT=\"01\";if(a==false){this.hTLV=\"010100\"}else{this.hTLV=\"0101ff\"}};YAHOO.lang.extend(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(a){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT=\"02\";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!=\"undefined\"){if(typeof a.bigint!=\"undefined\"){this.setByBigInteger(a.bigint)}else{if(typeof a[\"int\"]!=\"undefined\"){this.setByInteger(a[\"int\"])}else{if(typeof a==\"number\"){this.setByInteger(a)}else{if(typeof a.hex!=\"undefined\"){this.setValueHex(a.hex)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(b){if(b!==undefined&&typeof b.obj!==\"undefined\"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex=\"00\"+a.getEncodedHex()}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT=\"03\";this.setHexValueIncludingUnusedBits=function(c){this.hTLV=null;this.isModified=true;this.hV=c};this.setUnusedBitsAndHexValue=function(c,e){if(c<0||7<c){throw\"unused bits shall be from 0 to 7: u = \"+c}var d=\"0\"+c;this.hTLV=null;this.isModified=true;this.hV=d+e};this.setByBinaryString=function(e){e=e.replace(/0+$/,\"\");var f=8-e.length%8;if(f==8){f=0}for(var g=0;g<=f;g++){e+=\"0\"}var j=\"\";for(var g=0;g<e.length-1;g+=8){var d=e.substr(g,8);var c=parseInt(d,2).toString(16);if(c.length==1){c=\"0\"+c}j+=c}this.hTLV=null;this.isModified=true;this.hV=\"0\"+f+j};this.setByBooleanArray=function(e){var d=\"\";for(var c=0;c<e.length;c++){if(e[c]==true){d+=\"1\"}else{d+=\"0\"}}this.setByBinaryString(d)};this.newFalseArray=function(e){var c=new Array(e);for(var d=0;d<e;d++){c[d]=false}return c};this.getFreshValueHex=function(){return this.hV};if(typeof b!=\"undefined\"){if(typeof b==\"string\"&&b.toLowerCase().match(/^[0-9a-f]+$/)){this.setHexValueIncludingUnusedBits(b)}else{if(typeof b.hex!=\"undefined\"){this.setHexValueIncludingUnusedBits(b.hex)}else{if(typeof b.bin!=\"undefined\"){this.setByBinaryString(b.bin)}else{if(typeof b.array!=\"undefined\"){this.setByBooleanArray(b.array)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERBitString,KJUR.asn1.ASN1Object);KJUR.asn1.DEROctetString=function(b){if(b!==undefined&&typeof b.obj!==\"undefined\"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex=a.getEncodedHex()}KJUR.asn1.DEROctetString.superclass.constructor.call(this,b);this.hT=\"04\"};YAHOO.lang.extend(KJUR.asn1.DEROctetString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERNull=function(){KJUR.asn1.DERNull.superclass.constructor.call(this);this.hT=\"05\";this.hTLV=\"0500\"};YAHOO.lang.extend(KJUR.asn1.DERNull,KJUR.asn1.ASN1Object);KJUR.asn1.DERObjectIdentifier=function(a){KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);this.hT=\"06\";this.setValueHex=function(b){this.hTLV=null;this.isModified=true;this.s=null;this.hV=b};this.setValueOidString=function(b){var c=oidtohex(b);if(c==null){throw new Error(\"malformed oid string: \"+b)}this.hTLV=null;this.isModified=true;this.s=null;this.hV=c};this.setValueName=function(c){var b=KJUR.asn1.x509.OID.name2oid(c);if(b!==\"\"){this.setValueOidString(b)}else{throw new Error(\"DERObjectIdentifier oidName undefined: \"+c)}};this.setValueNameOrOid=function(b){if(b.match(/^[0-2].[0-9.]+$/)){this.setValueOidString(b)}else{this.setValueName(b)}};this.getFreshValueHex=function(){return this.hV};this.setByParam=function(b){if(typeof b===\"string\"){this.setValueNameOrOid(b)}else{if(b.oid!==undefined){this.setValueNameOrOid(b.oid)}else{if(b.name!==undefined){this.setValueNameOrOid(b.name)}else{if(b.hex!==undefined){this.setValueHex(b.hex)}}}}};if(a!==undefined){this.setByParam(a)}};YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.DEREnumerated=function(a){KJUR.asn1.DEREnumerated.superclass.constructor.call(this);this.hT=\"0a\";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!=\"undefined\"){if(typeof a[\"int\"]!=\"undefined\"){this.setByInteger(a[\"int\"])}else{if(typeof a==\"number\"){this.setByInteger(a)}else{if(typeof a.hex!=\"undefined\"){this.setValueHex(a.hex)}}}}};YAHOO.lang.extend(KJUR.asn1.DEREnumerated,KJUR.asn1.ASN1Object);KJUR.asn1.DERUTF8String=function(a){KJUR.asn1.DERUTF8String.superclass.constructor.call(this,a);this.hT=\"0c\"};YAHOO.lang.extend(KJUR.asn1.DERUTF8String,KJUR.asn1.DERAbstractString);KJUR.asn1.DERNumericString=function(a){KJUR.asn1.DERNumericString.superclass.constructor.call(this,a);this.hT=\"12\"};YAHOO.lang.extend(KJUR.asn1.DERNumericString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERPrintableString=function(a){KJUR.asn1.DERPrintableString.superclass.constructor.call(this,a);this.hT=\"13\"};YAHOO.lang.extend(KJUR.asn1.DERPrintableString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERTeletexString=function(a){KJUR.asn1.DERTeletexString.superclass.constructor.call(this,a);this.hT=\"14\"};YAHOO.lang.extend(KJUR.asn1.DERTeletexString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERIA5String=function(a){KJUR.asn1.DERIA5String.superclass.constructor.call(this,a);this.hT=\"16\"};YAHOO.lang.extend(KJUR.asn1.DERIA5String,KJUR.asn1.DERAbstractString);KJUR.asn1.DERVisibleString=function(a){KJUR.asn1.DERIA5String.superclass.constructor.call(this,a);this.hT=\"1a\"};YAHOO.lang.extend(KJUR.asn1.DERVisibleString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERBMPString=function(a){KJUR.asn1.DERBMPString.superclass.constructor.call(this,a);this.hT=\"1e\"};YAHOO.lang.extend(KJUR.asn1.DERBMPString,KJUR.asn1.DERAbstractString);KJUR.asn1.DERUTCTime=function(a){KJUR.asn1.DERUTCTime.superclass.constructor.call(this,a);this.hT=\"17\";this.setByDate=function(b){this.hTLV=null;this.isModified=true;this.date=b;this.s=this.formatDate(this.date,\"utc\");this.hV=stohex(this.s)};this.getFreshValueHex=function(){if(typeof this.date==\"undefined\"&&typeof this.s==\"undefined\"){this.date=new Date();this.s=this.formatDate(this.date,\"utc\");this.hV=stohex(this.s)}return this.hV};if(a!==undefined){if(a.str!==undefined){this.setString(a.str)}else{if(typeof a==\"string\"&&a.match(/^[0-9]{12}Z$/)){this.setString(a)}else{if(a.hex!==undefined){this.setStringHex(a.hex)}else{if(a.date!==undefined){this.setByDate(a.date)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERUTCTime,KJUR.asn1.DERAbstractTime);KJUR.asn1.DERGeneralizedTime=function(a){KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this,a);this.hT=\"18\";this.withMillis=false;this.setByDate=function(b){this.hTLV=null;this.isModified=true;this.date=b;this.s=this.formatDate(this.date,\"gen\",this.withMillis);this.hV=stohex(this.s)};this.getFreshValueHex=function(){if(this.date===undefined&&this.s===undefined){this.date=new Date();this.s=this.formatDate(this.date,\"gen\",this.withMillis);this.hV=stohex(this.s)}return this.hV};if(a!==undefined){if(a.str!==undefined){this.setString(a.str)}else{if(typeof a==\"string\"&&a.match(/^[0-9]{14}Z$/)){this.setString(a)}else{if(a.hex!==undefined){this.setStringHex(a.hex)}else{if(a.date!==undefined){this.setByDate(a.date)}}}}if(a.millis===true){this.withMillis=true}}};YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime,KJUR.asn1.DERAbstractTime);KJUR.asn1.DERSequence=function(a){KJUR.asn1.DERSequence.superclass.constructor.call(this,a);this.hT=\"30\";this.getFreshValueHex=function(){var c=\"\";for(var b=0;b<this.asn1Array.length;b++){var d=this.asn1Array[b];c+=d.getEncodedHex()}this.hV=c;return this.hV}};YAHOO.lang.extend(KJUR.asn1.DERSequence,KJUR.asn1.DERAbstractStructured);KJUR.asn1.DERSet=function(a){KJUR.asn1.DERSet.superclass.constructor.call(this,a);this.hT=\"31\";this.sortFlag=true;this.getFreshValueHex=function(){var b=new Array();for(var c=0;c<this.asn1Array.length;c++){var d=this.asn1Array[c];b.push(d.getEncodedHex())}if(this.sortFlag==true){b.sort()}this.hV=b.join(\"\");return this.hV};if(typeof a!=\"undefined\"){if(typeof a.sortflag!=\"undefined\"&&a.sortflag==false){this.sortFlag=false}}};YAHOO.lang.extend(KJUR.asn1.DERSet,KJUR.asn1.DERAbstractStructured);KJUR.asn1.DERTaggedObject=function(b){KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);var a=KJUR.asn1;this.hT=\"a0\";this.hV=\"\";this.isExplicit=true;this.asn1Object=null;this.setASN1Object=function(c,d,e){this.hT=d;this.isExplicit=c;this.asn1Object=e;if(this.isExplicit){this.hV=this.asn1Object.getEncodedHex();this.hTLV=null;this.isModified=true}else{this.hV=null;this.hTLV=e.getEncodedHex();this.hTLV=this.hTLV.replace(/^../,d);this.isModified=false}};this.getFreshValueHex=function(){return this.hV};this.setByParam=function(c){if(c.tag!=undefined){this.hT=c.tag}if(c.explicit!=undefined){this.isExplicit=c.explicit}if(c.tage!=undefined){this.hT=c.tage;this.isExplicit=true}if(c.tagi!=undefined){this.hT=c.tagi;this.isExplicit=false}if(c.obj!=undefined){if(c.obj instanceof a.ASN1Object){this.asn1Object=c.obj;this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)}else{if(typeof c.obj==\"object\"){this.asn1Object=a.ASN1Util.newObject(c.obj);this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)}}}};if(b!=undefined){this.setByParam(b)}};YAHOO.lang.extend(KJUR.asn1.DERTaggedObject,KJUR.asn1.ASN1Object);\nvar ASN1HEX=new function(){};ASN1HEX.getLblen=function(c,a){if(c.substr(a+2,1)!=\"8\"){return 1}var b=parseInt(c.substr(a+3,1));if(b==0){return -1}if(0<b&&b<10){return b+1}return -2};ASN1HEX.getL=function(c,b){var a=ASN1HEX.getLblen(c,b);if(a<1){return\"\"}return c.substr(b+2,a*2)};ASN1HEX.getVblen=function(d,a){var c,b;c=ASN1HEX.getL(d,a);if(c==\"\"){return -1}if(c.substr(0,1)===\"8\"){b=new BigInteger(c.substr(2),16)}else{b=new BigInteger(c,16)}return b.intValue()};ASN1HEX.getVidx=function(c,b){var a=ASN1HEX.getLblen(c,b);if(a<0){return a}return b+(a+1)*2};ASN1HEX.getV=function(d,a){var c=ASN1HEX.getVidx(d,a);var b=ASN1HEX.getVblen(d,a);return d.substr(c,b*2)};ASN1HEX.getTLV=function(b,a){return b.substr(a,2)+ASN1HEX.getL(b,a)+ASN1HEX.getV(b,a)};ASN1HEX.getTLVblen=function(b,a){return 2+ASN1HEX.getLblen(b,a)*2+ASN1HEX.getVblen(b,a)*2};ASN1HEX.getNextSiblingIdx=function(d,a){var c=ASN1HEX.getVidx(d,a);var b=ASN1HEX.getVblen(d,a);return c+b*2};ASN1HEX.getChildIdx=function(e,k){var l=ASN1HEX;var j=[];var c,f,g;c=l.getVidx(e,k);f=l.getVblen(e,k)*2;if(e.substr(k,2)==\"03\"){c+=2;f-=2}g=0;var d=c;while(g<=f){var b=l.getTLVblen(e,d);g+=b;if(g<=f){j.push(d)}d+=b;if(g>=f){break}}return j};ASN1HEX.getNthChildIdx=function(d,b,e){var c=ASN1HEX.getChildIdx(d,b);return c[e]};ASN1HEX.getIdxbyList=function(e,d,c,i){var g=ASN1HEX;var f,b;if(c.length==0){if(i!==undefined){if(e.substr(d,2)!==i){return -1}}return d}f=c.shift();b=g.getChildIdx(e,d);if(f>=b.length){return -1}return g.getIdxbyList(e,b[f],c,i)};ASN1HEX.getIdxbyListEx=function(f,k,b,g){var m=ASN1HEX;var d,l;if(b.length==0){if(g!==undefined){if(f.substr(k,2)!==g){return -1}}return k}d=b.shift();l=m.getChildIdx(f,k);var j=0;for(var e=0;e<l.length;e++){var c=f.substr(l[e],2);if((typeof d==\"number\"&&(!m.isContextTag(c))&&j==d)||(typeof d==\"string\"&&m.isContextTag(c,d))){return m.getIdxbyListEx(f,l[e],b,g)}if(!m.isContextTag(c)){j++}}return -1};ASN1HEX.getTLVbyList=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyList(d,c,b,f);if(a==-1){return null}if(a>=d.length){return null}return e.getTLV(d,a)};ASN1HEX.getTLVbyListEx=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyListEx(d,c,b,f);if(a==-1){return null}return e.getTLV(d,a)};ASN1HEX.getVbyList=function(e,c,b,g,i){var f=ASN1HEX;var a,d;a=f.getIdxbyList(e,c,b,g);if(a==-1){return null}if(a>=e.length){return null}d=f.getV(e,a);if(i===true){d=d.substr(2)}return d};ASN1HEX.getVbyListEx=function(b,e,a,d,f){var j=ASN1HEX;var g,c,i;g=j.getIdxbyListEx(b,e,a,d);if(g==-1){return null}i=j.getV(b,g);if(b.substr(g,2)==\"03\"&&f!==false){i=i.substr(2)}return i};ASN1HEX.getInt=function(e,b,f){if(f==undefined){f=-1}try{var c=e.substr(b,2);if(c!=\"02\"&&c!=\"03\"){return f}var a=ASN1HEX.getV(e,b);if(c==\"02\"){return parseInt(a,16)}else{return bitstrtoint(a)}}catch(d){return f}};ASN1HEX.getOID=function(c,a,d){if(d==undefined){d=null}try{if(c.substr(a,2)!=\"06\"){return d}var e=ASN1HEX.getV(c,a);return hextooid(e)}catch(b){return d}};ASN1HEX.getOIDName=function(d,a,f){if(f==undefined){f=null}try{var e=ASN1HEX.getOID(d,a,f);if(e==f){return f}var b=KJUR.asn1.x509.OID.oid2name(e);if(b==\"\"){return e}return b}catch(c){return f}};ASN1HEX.getString=function(d,b,e){if(e==undefined){e=null}try{var a=ASN1HEX.getV(d,b);return hextorstr(a)}catch(c){return e}};ASN1HEX.hextooidstr=function(e){var h=function(b,a){if(b.length>=a){return b}return new Array(a-b.length+1).join(\"0\")+b};var l=[];var o=e.substr(0,2);var f=parseInt(o,16);l[0]=new String(Math.floor(f/40));l[1]=new String(f%40);var m=e.substr(2);var k=[];for(var g=0;g<m.length/2;g++){k.push(parseInt(m.substr(g*2,2),16))}var j=[];var d=\"\";for(var g=0;g<k.length;g++){if(k[g]&128){d=d+h((k[g]&127).toString(2),7)}else{d=d+h((k[g]&127).toString(2),7);j.push(new String(parseInt(d,2)));d=\"\"}}var n=l.join(\".\");if(j.length>0){n=n+\".\"+j.join(\".\")}return n};ASN1HEX.dump=function(t,c,l,g){var p=ASN1HEX;var j=p.getV;var y=p.dump;var w=p.getChildIdx;var e=t;if(t instanceof KJUR.asn1.ASN1Object){e=t.getEncodedHex()}var q=function(A,i){if(A.length<=i*2){return A}else{var v=A.substr(0,i)+\"..(total \"+A.length/2+\"bytes)..\"+A.substr(A.length-i,i);return v}};if(c===undefined){c={ommit_long_octet:32}}if(l===undefined){l=0}if(g===undefined){g=\"\"}var x=c.ommit_long_octet;var z=e.substr(l,2);if(z==\"01\"){var h=j(e,l);if(h==\"00\"){return g+\"BOOLEAN FALSE\\n\"}else{return g+\"BOOLEAN TRUE\\n\"}}if(z==\"02\"){var h=j(e,l);return g+\"INTEGER \"+q(h,x)+\"\\n\"}if(z==\"03\"){var h=j(e,l);if(p.isASN1HEX(h.substr(2))){var k=g+\"BITSTRING, encapsulates\\n\";k=k+y(h.substr(2),c,0,g+\" \");return k}else{return g+\"BITSTRING \"+q(h,x)+\"\\n\"}}if(z==\"04\"){var h=j(e,l);if(p.isASN1HEX(h)){var k=g+\"OCTETSTRING, encapsulates\\n\";k=k+y(h,c,0,g+\" \");return k}else{return g+\"OCTETSTRING \"+q(h,x)+\"\\n\"}}if(z==\"05\"){return g+\"NULL\\n\"}if(z==\"06\"){var m=j(e,l);var b=KJUR.asn1.ASN1Util.oidHexToInt(m);var o=KJUR.asn1.x509.OID.oid2name(b);var a=b.replace(/\\./g,\" \");if(o!=\"\"){return g+\"ObjectIdentifier \"+o+\" (\"+a+\")\\n\"}else{return g+\"ObjectIdentifier (\"+a+\")\\n\"}}if(z==\"0a\"){return g+\"ENUMERATED \"+parseInt(j(e,l))+\"\\n\"}if(z==\"0c\"){return g+\"UTF8String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"13\"){return g+\"PrintableString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"14\"){return g+\"TeletexString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"16\"){return g+\"IA5String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"17\"){return g+\"UTCTime \"+hextoutf8(j(e,l))+\"\\n\"}if(z==\"18\"){return g+\"GeneralizedTime \"+hextoutf8(j(e,l))+\"\\n\"}if(z==\"1a\"){return g+\"VisualString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"1e\"){return g+\"BMPString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"30\"){if(e.substr(l,4)==\"3000\"){return g+\"SEQUENCE {}\\n\"}var k=g+\"SEQUENCE\\n\";var d=w(e,l);var f=c;if((d.length==2||d.length==3)&&e.substr(d[0],2)==\"06\"&&e.substr(d[d.length-1],2)==\"04\"){var o=p.oidname(j(e,d[0]));var r=JSON.parse(JSON.stringify(c));r.x509ExtName=o;f=r}for(var u=0;u<d.length;u++){k=k+y(e,f,d[u],g+\" \")}return k}if(z==\"31\"){var k=g+\"SET\\n\";var d=w(e,l);for(var u=0;u<d.length;u++){k=k+y(e,c,d[u],g+\" \")}return k}var z=parseInt(z,16);if((z&128)!=0){var n=z&31;if((z&32)!=0){var k=g+\"[\"+n+\"]\\n\";var d=w(e,l);for(var u=0;u<d.length;u++){k=k+y(e,c,d[u],g+\" \")}return k}else{var h=j(e,l);if(ASN1HEX.isASN1HEX(h)){var k=g+\"[\"+n+\"]\\n\";k=k+y(h,c,0,g+\" \");return k}else{if(h.substr(0,8)==\"68747470\"){h=hextoutf8(h)}else{if(c.x509ExtName===\"subjectAltName\"&&n==2){h=hextoutf8(h)}}}var k=g+\"[\"+n+\"] \"+h+\"\\n\";return k}}return g+\"UNKNOWN(\"+z+\") \"+j(e,l)+\"\\n\"};ASN1HEX.isContextTag=function(c,b){c=c.toLowerCase();var f,e;try{f=parseInt(c,16)}catch(d){return -1}if(b===undefined){if((f&192)==128){return true}else{return false}}try{var a=b.match(/^\\[[0-9]+\\]$/);if(a==null){return false}e=parseInt(b.substr(1,b.length-1),10);if(e>31){return false}if(((f&192)==128)&&((f&31)==e)){return true}return false}catch(d){return false}};ASN1HEX.isASN1HEX=function(e){var d=ASN1HEX;if(e.length%2==1){return false}var c=d.getVblen(e,0);var b=e.substr(0,2);var f=d.getL(e,0);var a=e.length-b.length-f.length;if(a==c*2){return true}return false};ASN1HEX.checkStrictDER=function(g,o,d,c,r){var s=ASN1HEX;if(d===undefined){if(typeof g!=\"string\"){throw new Error(\"not hex string\")}g=g.toLowerCase();if(!KJUR.lang.String.isHex(g)){throw new Error(\"not hex string\")}d=g.length;c=g.length/2;if(c<128){r=1}else{r=Math.ceil(c.toString(16))+1}}var k=s.getL(g,o);if(k.length>r*2){throw new Error(\"L of TLV too long: idx=\"+o)}var n=s.getVblen(g,o);if(n>c){throw new Error(\"value of L too long than hex: idx=\"+o)}var q=s.getTLV(g,o);var f=q.length-2-s.getL(g,o).length;if(f!==(n*2)){throw new Error(\"V string length and L's value not the same:\"+f+\"/\"+(n*2))}if(o===0){if(g.length!=q.length){throw new Error(\"total length and TLV length unmatch:\"+g.length+\"!=\"+q.length)}}var b=g.substr(o,2);if(b===\"02\"){var a=s.getVidx(g,o);if(g.substr(a,2)==\"00\"&&g.charCodeAt(a+2)<56){throw new Error(\"not least zeros for DER INTEGER\")}}if(parseInt(b,16)&32){var p=s.getVblen(g,o);var m=0;var l=s.getChildIdx(g,o);for(var e=0;e<l.length;e++){var j=s.getTLV(g,l[e]);m+=j.length;s.checkStrictDER(g,l[e],d,c,r)}if((p*2)!=m){throw new Error(\"sum of children's TLV length and L unmatch: \"+(p*2)+\"!=\"+m)}}};ASN1HEX.oidname=function(a){var c=KJUR.asn1;if(KJUR.lang.String.isHex(a)){a=c.ASN1Util.oidHexToInt(a)}var b=c.x509.OID.oid2name(a);if(b===\"\"){b=a}return b};\nvar KJUR;if(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.lang==\"undefined\"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c<d.length;c++){b[c]=d.charCodeAt(c)}return b}function BAtos(b){var d=\"\";for(var c=0;c<b.length;c++){d=d+String.fromCharCode(b[c])}return d}function BAtohex(b){var e=\"\";for(var d=0;d<b.length;d++){var c=b[d].toString(16);if(c.length==1){c=\"0\"+c}e=e+c}return e}function stohex(a){return BAtohex(stoBA(a))}function stob64(a){return hex2b64(stohex(a))}function stob64u(a){return b64tob64u(hex2b64(stohex(a)))}function b64utos(a){return BAtos(b64toBA(b64utob64(a)))}function b64tob64u(a){a=a.replace(/\\=/g,\"\");a=a.replace(/\\+/g,\"-\");a=a.replace(/\\//g,\"_\");return a}function b64utob64(a){if(a.length%4==2){a=a+\"==\"}else{if(a.length%4==3){a=a+\"=\"}}a=a.replace(/-/g,\"+\");a=a.replace(/_/g,\"/\");return a}function hextob64u(a){if(a.length%2==1){a=\"0\"+a}return b64tob64u(hex2b64(a))}function b64utohex(a){return b64tohex(b64utob64(a))}var utf8tob64u,b64utoutf8;if(typeof Buffer===\"function\"){utf8tob64u=function(a){return b64tob64u(Buffer.from(a,\"utf8\").toString(\"base64\"))};b64utoutf8=function(a){return Buffer.from(b64utob64(a),\"base64\").toString(\"utf8\")}}else{utf8tob64u=function(a){return hextob64u(uricmptohex(encodeURIComponentAll(a)))};b64utoutf8=function(a){return decodeURIComponent(hextouricmp(b64utohex(a)))}}function utf8tob64(a){return hex2b64(uricmptohex(encodeURIComponentAll(a)))}function b64toutf8(a){return decodeURIComponent(hextouricmp(b64tohex(a)))}function utf8tohex(a){return uricmptohex(encodeURIComponentAll(a))}function hextoutf8(a){return decodeURIComponent(hextouricmp(a))}function hextorstr(c){var b=\"\";for(var a=0;a<c.length-1;a+=2){b+=String.fromCharCode(parseInt(c.substr(a,2),16))}return b}function rstrtohex(c){var a=\"\";for(var b=0;b<c.length;b++){a+=(\"0\"+c.charCodeAt(b).toString(16)).slice(-2)}return a}function hextob64(a){return hex2b64(a)}function hextob64nl(b){var a=hextob64(b);var c=a.replace(/(.{64})/g,\"$1\\r\\n\");c=c.replace(/\\r\\n$/,\"\");return c}function b64nltohex(b){var a=b.replace(/[^0-9A-Za-z\\/+=]*/g,\"\");var c=b64tohex(a);return c}function hextopem(a,b){var c=hextob64nl(a);return\"-----BEGIN \"+b+\"-----\\r\\n\"+c+\"\\r\\n-----END \"+b+\"-----\\r\\n\"}function pemtohex(a,b){if(a.indexOf(\"-----BEGIN \")==-1){throw\"can't find PEM header: \"+b}if(b!==undefined){a=a.replace(new RegExp(\"^[^]*-----BEGIN \"+b+\"-----\"),\"\");a=a.replace(new RegExp(\"-----END \"+b+\"-----[^]*$\"),\"\")}else{a=a.replace(/^[^]*-----BEGIN [^-]+-----/,\"\");a=a.replace(/-----END [^-]+-----[^]*$/,\"\")}return b64nltohex(a)}function hextoArrayBuffer(d){if(d.length%2!=0){throw\"input is not even length\"}if(d.match(/^[0-9A-Fa-f]+$/)==null){throw\"input is not hexadecimal\"}var b=new ArrayBuffer(d.length/2);var a=new DataView(b);for(var c=0;c<d.length/2;c++){a.setUint8(c,parseInt(d.substr(c*2,2),16))}return b}function ArrayBuffertohex(b){var d=\"\";var a=new DataView(b);for(var c=0;c<b.byteLength;c++){d+=(\"00\"+a.getUint8(c).toString(16)).slice(-2)}return d}function zulutomsec(n){var l,j,m,e,f,i,b,k;var a,h,g,c;c=n.match(/^(\\d{2}|\\d{4})(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(|\\.\\d+)Z$/);if(c){a=c[1];l=parseInt(a);if(a.length===2){if(50<=l&&l<100){l=1900+l}else{if(0<=l&&l<50){l=2000+l}}}j=parseInt(c[2])-1;m=parseInt(c[3]);e=parseInt(c[4]);f=parseInt(c[5]);i=parseInt(c[6]);b=0;h=c[7];if(h!==\"\"){g=(h.substr(1)+\"00\").substr(0,3);b=parseInt(g)}return Date.UTC(l,j,m,e,f,i,b)}throw\"unsupported zulu format: \"+n}function zulutosec(a){var b=zulutomsec(a);return ~~(b/1000)}function zulutodate(a){return new Date(zulutomsec(a))}function datetozulu(g,e,f){var b;var a=g.getUTCFullYear();if(e){if(a<1950||2049<a){throw\"not proper year for UTCTime: \"+a}b=(\"\"+a).slice(-2)}else{b=(\"000\"+a).slice(-4)}b+=(\"0\"+(g.getUTCMonth()+1)).slice(-2);b+=(\"0\"+g.getUTCDate()).slice(-2);b+=(\"0\"+g.getUTCHours()).slice(-2);b+=(\"0\"+g.getUTCMinutes()).slice(-2);b+=(\"0\"+g.getUTCSeconds()).slice(-2);if(f){var c=g.getUTCMilliseconds();if(c!==0){c=(\"00\"+c).slice(-3);c=c.replace(/0+$/g,\"\");b+=\".\"+c}}b+=\"Z\";return b}function uricmptohex(a){return a.replace(/%/g,\"\")}function hextouricmp(a){return a.replace(/(..)/g,\"%$1\")}function ipv6tohex(g){var b=\"malformed IPv6 address\";if(!g.match(/^[0-9A-Fa-f:]+$/)){throw b}g=g.toLowerCase();var d=g.split(\":\").length-1;if(d<2){throw b}var e=\":\".repeat(7-d+2);g=g.replace(\"::\",e);var c=g.split(\":\");if(c.length!=8){throw b}for(var f=0;f<8;f++){c[f]=(\"0000\"+c[f]).slice(-4)}return c.join(\"\")}function hextoipv6(e){if(!e.match(/^[0-9A-Fa-f]{32}$/)){throw\"malformed IPv6 address octet\"}e=e.toLowerCase();var b=e.match(/.{1,4}/g);for(var d=0;d<8;d++){b[d]=b[d].replace(/^0+/,\"\");if(b[d]==\"\"){b[d]=\"0\"}}e=\":\"+b.join(\":\")+\":\";var c=e.match(/:(0:){2,}/g);if(c===null){return e.slice(1,-1)}var f=\"\";for(var d=0;d<c.length;d++){if(c[d].length>f.length){f=c[d]}}e=e.replace(f,\"::\");return e.slice(1,-1)}function hextoip(b){var d=\"malformed hex value\";if(!b.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)){throw d}if(b.length==8){var c;try{c=parseInt(b.substr(0,2),16)+\".\"+parseInt(b.substr(2,2),16)+\".\"+parseInt(b.substr(4,2),16)+\".\"+parseInt(b.substr(6,2),16);return c}catch(a){throw d}}else{if(b.length==32){return hextoipv6(b)}else{return b}}}function iptohex(f){var j=\"malformed IP address\";f=f.toLowerCase(f);if(f.match(/^[0-9.]+$/)){var b=f.split(\".\");if(b.length!==4){throw j}var g=\"\";try{for(var e=0;e<4;e++){var h=parseInt(b[e]);g+=(\"0\"+h.toString(16)).slice(-2)}return g}catch(c){throw j}}else{if(f.match(/^[0-9a-f:]+$/)&&f.indexOf(\":\")!==-1){return ipv6tohex(f)}else{throw j}}}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b=\"\";for(var c=0;c<d.length;c++){if(d[c]==\"%\"){b=b+d.substr(c,3);c=c+2}else{b=b+\"%\"+stohex(d[c])}}return b}function newline_toUnix(a){a=a.replace(/\\r\\n/mg,\"\\n\");return a}function newline_toDos(a){a=a.replace(/\\r\\n/mg,\"\\n\");a=a.replace(/\\n/mg,\"\\r\\n\");return a}KJUR.lang.String.isInteger=function(a){if(a.match(/^[0-9]+$/)){return true}else{if(a.match(/^-[0-9]+$/)){return true}else{return false}}};KJUR.lang.String.isHex=function(a){return ishex(a)};function ishex(a){if(a.length%2==0&&(a.match(/^[0-9a-f]+$/)||a.match(/^[0-9A-F]+$/))){return true}else{return false}}KJUR.lang.String.isBase64=function(a){a=a.replace(/\\s+/g,\"\");if(a.match(/^[0-9A-Za-z+\\/]+={0,3}$/)&&a.length%4==0){return true}else{return false}};KJUR.lang.String.isBase64URL=function(a){if(a.match(/[+/=]/)){return false}a=b64utob64(a);return KJUR.lang.String.isBase64(a)};KJUR.lang.String.isIntegerArray=function(a){a=a.replace(/\\s+/g,\"\");if(a.match(/^\\[[0-9,]+\\]$/)){return true}else{return false}};KJUR.lang.String.isPrintable=function(a){if(a.match(/^[0-9A-Za-z '()+,-./:=?]*$/)!==null){return true}return false};KJUR.lang.String.isIA5=function(a){if(a.match(/^[\\x20-\\x21\\x23-\\x7f]*$/)!==null){return true}return false};KJUR.lang.String.isMail=function(a){if(a.match(/^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}\\.[A-Za-z0-9]{1,}$/)!==null){return true}return false};function hextoposhex(a){if(a.length%2==1){return\"0\"+a}if(a.substr(0,1)>\"7\"){return\"00\"+a}return a}function intarystrtohex(b){b=b.replace(/^\\s*\\[\\s*/,\"\");b=b.replace(/\\s*\\]\\s*$/,\"\");b=b.replace(/\\s*/g,\"\");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255<f){throw\"integer not in range 0-255\"}var d=(\"00\"+f.toString(16)).slice(-2);return d}).join(\"\");return c}catch(a){throw\"malformed integer array string: \"+a}}var strdiffidx=function(c,a){var d=c.length;if(c.length>a.length){d=a.length}for(var b=0;b<d;b++){if(c.charCodeAt(b)!=a.charCodeAt(b)){return b}}if(c.length!=a.length){return d}return -1};function oidtohex(g){var f=function(a){var l=a.toString(16);if(l.length==1){l=\"0\"+l}return l};var e=function(p){var o=\"\";var l=parseInt(p,10);var a=l.toString(2);var m=7-a.length%7;if(m==7){m=0}var r=\"\";for(var n=0;n<m;n++){r+=\"0\"}a=r+a;for(var n=0;n<a.length-1;n+=7){var q=a.substr(n,7);if(n!=a.length-7){q=\"1\"+q}o+=f(parseInt(q,2))}return o};try{if(!g.match(/^[0-9.]+$/)){return null}var j=\"\";var b=g.split(\".\");var k=parseInt(b[0],10)*40+parseInt(b[1],10);j+=f(k);b.splice(0,2);for(var d=0;d<b.length;d++){j+=e(b[d])}return j}catch(c){return null}}function hextooid(g){if(!ishex(g)){return null}try{var m=[];var p=g.substr(0,2);var e=parseInt(p,16);m[0]=new String(Math.floor(e/40));m[1]=new String(e%40);var n=g.substr(2);var l=[];for(var f=0;f<n.length/2;f++){l.push(parseInt(n.substr(f*2,2),16))}var k=[];var d=\"\";for(var f=0;f<l.length;f++){if(l[f]&128){d=d+strpad((l[f]&127).toString(2),7)}else{d=d+strpad((l[f]&127).toString(2),7);k.push(new String(parseInt(d,2)));d=\"\"}}var o=m.join(\".\");if(k.length>0){o=o+\".\"+k.join(\".\")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a=\"0\"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){try{var a=e.substr(0,2);if(a==\"00\"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);var f=e.substr(2);var d=parseInt(f,16).toString(2);if(d==\"0\"){d=\"00000000\"}d=d.slice(0,0-b);return parseInt(d,2)}catch(c){return -1}}function inttobitstr(e){var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad(\"\",b,\"0\");var d=parseInt(c,2).toString(16);if(d.length%2==1){d=\"0\"+d}var a=\"0\"+b;return a+d};\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:\"3021300906052b0e03021a05000414\",sha224:\"302d300d06096086480165030402040500041c\",sha256:\"3031300d060960864801650304020105000420\",sha384:\"3041300d060960864801650304020205000430\",sha512:\"3051300d060960864801650304020305000440\",md2:\"3020300c06082a864886f70d020205000410\",md5:\"3020300c06082a864886f70d020505000410\",ripemd160:\"3021300906052b2403020105000414\",};this.DEFAULTPROVIDER={md5:\"cryptojs\",sha1:\"cryptojs\",sha224:\"cryptojs\",sha256:\"cryptojs\",sha384:\"cryptojs\",sha512:\"cryptojs\",ripemd160:\"cryptojs\",hmacmd5:\"cryptojs\",hmacsha1:\"cryptojs\",hmacsha224:\"cryptojs\",hmacsha256:\"cryptojs\",hmacsha384:\"cryptojs\",hmacsha512:\"cryptojs\",hmacripemd160:\"cryptojs\",MD5withRSA:\"cryptojs/jsrsa\",SHA1withRSA:\"cryptojs/jsrsa\",SHA224withRSA:\"cryptojs/jsrsa\",SHA256withRSA:\"cryptojs/jsrsa\",SHA384withRSA:\"cryptojs/jsrsa\",SHA512withRSA:\"cryptojs/jsrsa\",RIPEMD160withRSA:\"cryptojs/jsrsa\",MD5withECDSA:\"cryptojs/jsrsa\",SHA1withECDSA:\"cryptojs/jsrsa\",SHA224withECDSA:\"cryptojs/jsrsa\",SHA256withECDSA:\"cryptojs/jsrsa\",SHA384withECDSA:\"cryptojs/jsrsa\",SHA512withECDSA:\"cryptojs/jsrsa\",RIPEMD160withECDSA:\"cryptojs/jsrsa\",SHA1withDSA:\"cryptojs/jsrsa\",SHA224withDSA:\"cryptojs/jsrsa\",SHA256withDSA:\"cryptojs/jsrsa\",MD5withRSAandMGF1:\"cryptojs/jsrsa\",SHAwithRSAandMGF1:\"cryptojs/jsrsa\",SHA1withRSAandMGF1:\"cryptojs/jsrsa\",SHA224withRSAandMGF1:\"cryptojs/jsrsa\",SHA256withRSAandMGF1:\"cryptojs/jsrsa\",SHA384withRSAandMGF1:\"cryptojs/jsrsa\",SHA512withRSAandMGF1:\"cryptojs/jsrsa\",RIPEMD160withRSAandMGF1:\"cryptojs/jsrsa\",};this.CRYPTOJSMESSAGEDIGESTNAME={md5:CryptoJS.algo.MD5,sha1:CryptoJS.algo.SHA1,sha224:CryptoJS.algo.SHA224,sha256:CryptoJS.algo.SHA256,sha384:CryptoJS.algo.SHA384,sha512:CryptoJS.algo.SHA512,ripemd160:CryptoJS.algo.RIPEMD160};this.getDigestInfoHex=function(a,b){if(typeof this.DIGESTINFOHEAD[b]==\"undefined\"){throw\"alg not supported in Util.DIGESTINFOHEAD: \"+b}return this.DIGESTINFOHEAD[b]+a};this.getPaddedDigestInfoHex=function(h,a,j){var c=this.getDigestInfoHex(h,a);var d=j/4;if(c.length+22>d){throw\"key is too short for SigAlg: keylen=\"+j+\",\"+a}var b=\"0001\";var k=\"00\"+c;var g=\"\";var l=d-b.length-k.length;for(var f=0;f<l;f+=2){g+=\"ff\"}var e=b+g+k;return e};this.hashString=function(a,c){var b=new KJUR.crypto.MessageDigest({alg:c});return b.digestString(a)};this.hashHex=function(b,c){var a=new KJUR.crypto.MessageDigest({alg:c});return a.digestHex(b)};this.sha1=function(a){return this.hashString(a,\"sha1\")};this.sha256=function(a){return this.hashString(a,\"sha256\")};this.sha256Hex=function(a){return this.hashHex(a,\"sha256\")};this.sha512=function(a){return this.hashString(a,\"sha512\")};this.sha512Hex=function(a){return this.hashHex(a,\"sha512\")};this.isKey=function(a){if(a instanceof RSAKey||a instanceof KJUR.crypto.DSA||a instanceof KJUR.crypto.ECDSA){return true}else{return false}}};KJUR.crypto.Util.md5=function(a){var b=new KJUR.crypto.MessageDigest({alg:\"md5\",prov:\"cryptojs\"});return b.digestString(a)};KJUR.crypto.Util.ripemd160=function(a){var b=new KJUR.crypto.MessageDigest({alg:\"ripemd160\",prov:\"cryptojs\"});return b.digestString(a)};KJUR.crypto.Util.SECURERANDOMGEN=new SecureRandom();KJUR.crypto.Util.getRandomHexOfNbytes=function(b){var a=new Array(b);KJUR.crypto.Util.SECURERANDOMGEN.nextBytes(a);return BAtohex(a)};KJUR.crypto.Util.getRandomBigIntegerOfNbytes=function(a){return new BigInteger(KJUR.crypto.Util.getRandomHexOfNbytes(a),16)};KJUR.crypto.Util.getRandomHexOfNbits=function(d){var c=d%8;var a=(d-c)/8;var b=new Array(a+1);KJUR.crypto.Util.SECURERANDOMGEN.nextBytes(b);b[0]=(((255<<c)&255)^255)&b[0];return BAtohex(b)};KJUR.crypto.Util.getRandomBigIntegerOfNbits=function(a){return new BigInteger(KJUR.crypto.Util.getRandomHexOfNbits(a),16)};KJUR.crypto.Util.getRandomBigIntegerZeroToMax=function(b){var a=b.bitLength();while(1){var c=KJUR.crypto.Util.getRandomBigIntegerOfNbits(a);if(b.compareTo(c)!=-1){return c}}};KJUR.crypto.Util.getRandomBigIntegerMinToMax=function(e,b){var c=e.compareTo(b);if(c==1){throw\"biMin is greater than biMax\"}if(c==0){return e}var a=b.subtract(e);var d=KJUR.crypto.Util.getRandomBigIntegerZeroToMax(a);return d.add(e)};KJUR.crypto.MessageDigest=function(c){var b=null;var a=null;var d=null;this.setAlgAndProvider=function(g,f){g=KJUR.crypto.MessageDigest.getCanonicalAlgName(g);if(g!==null&&f===undefined){f=KJUR.crypto.Util.DEFAULTPROVIDER[g]}if(\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(g)!=-1&&f==\"cryptojs\"){try{this.md=KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[g].create()}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+g+\"/\"+e}this.updateString=function(h){this.md.update(h)};this.updateHex=function(h){var i=CryptoJS.enc.Hex.parse(h);this.md.update(i)};this.digest=function(){var h=this.md.finalize();return h.toString(CryptoJS.enc.Hex)};this.digestString=function(h){this.updateString(h);return this.digest()};this.digestHex=function(h){this.updateHex(h);return this.digest()}}if(\":sha256:\".indexOf(g)!=-1&&f==\"sjcl\"){try{this.md=new sjcl.hash.sha256()}catch(e){throw\"setAlgAndProvider hash alg set fail alg=\"+g+\"/\"+e}this.updateString=function(h){this.md.update(h)};this.updateHex=function(i){var h=sjcl.codec.hex.toBits(i);this.md.update(h)};this.digest=function(){var h=this.md.finalize();return sjcl.codec.hex.fromBits(h)};this.digestString=function(h){this.updateString(h);return this.digest()};this.digestHex=function(h){this.updateHex(h);return this.digest()}}};this.updateString=function(e){throw\"updateString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.updateHex=function(e){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.digest=function(){throw\"digest() not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.digestString=function(e){throw\"digestString(str) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};this.digestHex=function(e){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algName+\"/\"+this.provName};if(c!==undefined){if(c.alg!==undefined){this.algName=c.alg;if(c.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}this.setAlgAndProvider(this.algName,this.provName)}}};KJUR.crypto.MessageDigest.getCanonicalAlgName=function(a){if(typeof a===\"string\"){a=a.toLowerCase();a=a.replace(/-/,\"\")}return a};KJUR.crypto.MessageDigest.getHashLength=function(c){var b=KJUR.crypto.MessageDigest;var a=b.getCanonicalAlgName(c);if(b.HASHLENGTH[a]===undefined){throw\"not supported algorithm: \"+c}return b.HASHLENGTH[a]};KJUR.crypto.MessageDigest.HASHLENGTH={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,ripemd160:20};KJUR.crypto.Mac=function(d){var f=null;var c=null;var a=null;var e=null;var b=null;this.setAlgAndProvider=function(k,i){k=k.toLowerCase();if(k==null){k=\"hmacsha1\"}k=k.toLowerCase();if(k.substr(0,4)!=\"hmac\"){throw\"setAlgAndProvider unsupported HMAC alg: \"+k}if(i===undefined){i=KJUR.crypto.Util.DEFAULTPROVIDER[k]}this.algProv=k+\"/\"+i;var g=k.substr(4);if(\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(g)!=-1&&i==\"cryptojs\"){try{var j=KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[g];this.mac=CryptoJS.algo.HMAC.create(j,this.pass)}catch(h){throw\"setAlgAndProvider hash alg set fail hashAlg=\"+g+\"/\"+h}this.updateString=function(l){this.mac.update(l)};this.updateHex=function(l){var m=CryptoJS.enc.Hex.parse(l);this.mac.update(m)};this.doFinal=function(){var l=this.mac.finalize();return l.toString(CryptoJS.enc.Hex)};this.doFinalString=function(l){this.updateString(l);return this.doFinal()};this.doFinalHex=function(l){this.updateHex(l);return this.doFinal()}}};this.updateString=function(g){throw\"updateString(str) not supported for this alg/prov: \"+this.algProv};this.updateHex=function(g){throw\"updateHex(hex) not supported for this alg/prov: \"+this.algProv};this.doFinal=function(){throw\"digest() not supported for this alg/prov: \"+this.algProv};this.doFinalString=function(g){throw\"digestString(str) not supported for this alg/prov: \"+this.algProv};this.doFinalHex=function(g){throw\"digestHex(hex) not supported for this alg/prov: \"+this.algProv};this.setPassword=function(h){if(typeof h==\"string\"){var g=h;if(h.length%2==1||!h.match(/^[0-9A-Fa-f]+$/)){g=rstrtohex(h)}this.pass=CryptoJS.enc.Hex.parse(g);return}if(typeof h!=\"object\"){throw\"KJUR.crypto.Mac unsupported password type: \"+h}var g=null;if(h.hex!==undefined){if(h.hex.length%2!=0||!h.hex.match(/^[0-9A-Fa-f]+$/)){throw\"Mac: wrong hex password: \"+h.hex}g=h.hex}if(h.utf8!==undefined){g=utf8tohex(h.utf8)}if(h.rstr!==undefined){g=rstrtohex(h.rstr)}if(h.b64!==undefined){g=b64tohex(h.b64)}if(h.b64u!==undefined){g=b64utohex(h.b64u)}if(g==null){throw\"KJUR.crypto.Mac unsupported password type: \"+h}this.pass=CryptoJS.enc.Hex.parse(g)};if(d!==undefined){if(d.pass!==undefined){this.setPassword(d.pass)}if(d.alg!==undefined){this.algName=d.alg;if(d.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}this.setAlgAndProvider(this.algName,this.provName)}}};KJUR.crypto.Signature=function(o){var q=null;var n=null;var r=null;var c=null;var l=null;var d=null;var k=null;var h=null;var p=null;var e=null;var b=-1;var g=null;var j=null;var a=null;var i=null;var f=null;this._setAlgNames=function(){var s=this.algName.match(/^(.+)with(.+)$/);if(s){this.mdAlgName=s[1].toLowerCase();this.pubkeyAlgName=s[2].toLowerCase();if(this.pubkeyAlgName==\"rsaandmgf1\"&&this.mdAlgName==\"sha\"){this.mdAlgName=\"sha1\"}}};this._zeroPaddingOfSignature=function(x,w){var v=\"\";var t=w/4-x.length;for(var u=0;u<t;u++){v=v+\"0\"}return v+x};this.setAlgAndProvider=function(u,t){this._setAlgNames();if(t!=\"cryptojs/jsrsa\"){throw new Error(\"provider not supported: \"+t)}if(\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(this.mdAlgName)!=-1){try{this.md=new KJUR.crypto.MessageDigest({alg:this.mdAlgName})}catch(s){throw new Error(\"setAlgAndProvider hash alg set fail alg=\"+this.mdAlgName+\"/\"+s)}this.init=function(w,x){var y=null;try{if(x===undefined){y=KEYUTIL.getKey(w)}else{y=KEYUTIL.getKey(w,x)}}catch(v){throw\"init failed:\"+v}if(y.isPrivate===true){this.prvKey=y;this.state=\"SIGN\"}else{if(y.isPublic===true){this.pubKey=y;this.state=\"VERIFY\"}else{throw\"init failed.:\"+y}}};this.updateString=function(v){this.md.updateString(v)};this.updateHex=function(v){this.md.updateHex(v)};this.sign=function(){this.sHashHex=this.md.digest();if(this.prvKey===undefined&&this.ecprvhex!==undefined&&this.eccurvename!==undefined&&KJUR.crypto.ECDSA!==undefined){this.prvKey=new KJUR.crypto.ECDSA({curve:this.eccurvename,prv:this.ecprvhex})}if(this.prvKey instanceof RSAKey&&this.pubkeyAlgName===\"rsaandmgf1\"){this.hSign=this.prvKey.signWithMessageHashPSS(this.sHashHex,this.mdAlgName,this.pssSaltLen)}else{if(this.prvKey instanceof RSAKey&&this.pubkeyAlgName===\"rsa\"){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex,this.mdAlgName)}else{if(this.prvKey instanceof KJUR.crypto.ECDSA){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex)}else{if(this.prvKey instanceof KJUR.crypto.DSA){this.hSign=this.prvKey.signWithMessageHash(this.sHashHex)}else{throw\"Signature: unsupported private key alg: \"+this.pubkeyAlgName}}}}return this.hSign};this.signString=function(v){this.updateString(v);return this.sign()};this.signHex=function(v){this.updateHex(v);return this.sign()};this.verify=function(v){this.sHashHex=this.md.digest();if(this.pubKey===undefined&&this.ecpubhex!==undefined&&this.eccurvename!==undefined&&KJUR.crypto.ECDSA!==undefined){this.pubKey=new KJUR.crypto.ECDSA({curve:this.eccurvename,pub:this.ecpubhex})}if(this.pubKey instanceof RSAKey&&this.pubkeyAlgName===\"rsaandmgf1\"){return this.pubKey.verifyWithMessageHashPSS(this.sHashHex,v,this.mdAlgName,this.pssSaltLen)}else{if(this.pubKey instanceof RSAKey&&this.pubkeyAlgName===\"rsa\"){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{if(KJUR.crypto.ECDSA!==undefined&&this.pubKey instanceof KJUR.crypto.ECDSA){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{if(KJUR.crypto.DSA!==undefined&&this.pubKey instanceof KJUR.crypto.DSA){return this.pubKey.verifyWithMessageHash(this.sHashHex,v)}else{throw\"Signature: unsupported public key alg: \"+this.pubkeyAlgName}}}}}}};this.init=function(s,t){throw\"init(key, pass) not supported for this alg:prov=\"+this.algProvName};this.updateString=function(s){throw\"updateString(str) not supported for this alg:prov=\"+this.algProvName};this.updateHex=function(s){throw\"updateHex(hex) not supported for this alg:prov=\"+this.algProvName};this.sign=function(){throw\"sign() not supported for this alg:prov=\"+this.algProvName};this.signString=function(s){throw\"digestString(str) not supported for this alg:prov=\"+this.algProvName};this.signHex=function(s){throw\"digestHex(hex) not supported for this alg:prov=\"+this.algProvName};this.verify=function(s){throw\"verify(hSigVal) not supported for this alg:prov=\"+this.algProvName};this.initParams=o;if(o!==undefined){if(o.alg!==undefined){this.algName=o.alg;if(o.prov===undefined){this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]}else{this.provName=o.prov}this.algProvName=this.algName+\":\"+this.provName;this.setAlgAndProvider(this.algName,this.provName);this._setAlgNames()}if(o.psssaltlen!==undefined){this.pssSaltLen=o.psssaltlen}if(o.prvkeypem!==undefined){if(o.prvkeypas!==undefined){throw\"both prvkeypem and prvkeypas parameters not supported\"}else{try{var q=KEYUTIL.getKey(o.prvkeypem);this.init(q)}catch(m){throw\"fatal error to load pem private key: \"+m}}}}};KJUR.crypto.Cipher=function(a){};KJUR.crypto.Cipher.encrypt=function(e,f,d){if(f instanceof RSAKey&&f.isPublic){var c=KJUR.crypto.Cipher.getAlgByKeyAndName(f,d);if(c===\"RSA\"){return f.encrypt(e)}if(c===\"RSAOAEP\"){return f.encryptOAEP(e,\"sha1\")}var b=c.match(/^RSAOAEP(\\d+)$/);if(b!==null){return f.encryptOAEP(e,\"sha\"+b[1])}throw\"Cipher.encrypt: unsupported algorithm for RSAKey: \"+d}else{throw\"Cipher.encrypt: unsupported key or algorithm\"}};KJUR.crypto.Cipher.decrypt=function(e,f,d){if(f instanceof RSAKey&&f.isPrivate){var c=KJUR.crypto.Cipher.getAlgByKeyAndName(f,d);if(c===\"RSA\"){return f.decrypt(e)}if(c===\"RSAOAEP\"){return f.decryptOAEP(e,\"sha1\")}var b=c.match(/^RSAOAEP(\\d+)$/);if(b!==null){return f.decryptOAEP(e,\"sha\"+b[1])}throw\"Cipher.decrypt: unsupported algorithm for RSAKey: \"+d}else{throw\"Cipher.decrypt: unsupported key or algorithm\"}};KJUR.crypto.Cipher.getAlgByKeyAndName=function(b,a){if(b instanceof RSAKey){if(\":RSA:RSAOAEP:RSAOAEP224:RSAOAEP256:RSAOAEP384:RSAOAEP512:\".indexOf(a)!=-1){return a}if(a===null||a===undefined){return\"RSA\"}throw\"getAlgByKeyAndName: not supported algorithm name for RSAKey: \"+a}throw\"getAlgByKeyAndName: not supported algorithm name: \"+a};KJUR.crypto.OID=new function(){this.oidhex2name={\"2a864886f70d010101\":\"rsaEncryption\",\"2a8648ce3d0201\":\"ecPublicKey\",\"2a8648ce380401\":\"dsa\",\"2a8648ce3d030107\":\"secp256r1\",\"2b8104001f\":\"secp192k1\",\"2b81040021\":\"secp224r1\",\"2b8104000a\":\"secp256k1\",\"2b81040023\":\"secp521r1\",\"2b81040022\":\"secp384r1\",\"2a8648ce380403\":\"SHA1withDSA\",\"608648016503040301\":\"SHA224withDSA\",\"608648016503040302\":\"SHA256withDSA\",}};\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECDSA=function(e){var g=\"secp256r1\";var p=null;var b=null;var i=null;var j=Error,f=BigInteger,h=ECPointFp,m=KJUR.crypto.ECDSA,c=KJUR.crypto.ECParameterDB,d=m.getName,q=ASN1HEX,n=q.getVbyListEx,k=q.isASN1HEX;var a=new SecureRandom();var o=null;this.type=\"EC\";this.isPrivate=false;this.isPublic=false;function l(x,t,w,s){var r=Math.max(t.bitLength(),s.bitLength());var y=x.add2D(w);var v=x.curve.getInfinity();for(var u=r-1;u>=0;--u){v=v.twice2D();v.z=f.ONE;if(t.testBit(u)){if(s.testBit(u)){v=v.add2D(y)}else{v=v.add2D(x)}}else{if(s.testBit(u)){v=v.add2D(w)}}}return v}this.getBigRandom=function(r){return new f(r.bitLength(),a).mod(r.subtract(f.ONE)).add(f.ONE)};this.setNamedCurve=function(r){this.ecparams=c.getByName(r);this.prvKeyHex=null;this.pubKeyHex=null;this.curveName=r};this.setPrivateKeyHex=function(r){this.isPrivate=true;this.prvKeyHex=r};this.setPublicKeyHex=function(r){this.isPublic=true;this.pubKeyHex=r};this.getPublicKeyXYHex=function(){var t=this.pubKeyHex;if(t.substr(0,2)!==\"04\"){throw\"this method supports uncompressed format(04) only\"}var s=this.ecparams.keylen/4;if(t.length!==2+s*2){throw\"malformed public key hex length\"}var r={};r.x=t.substr(2,s);r.y=t.substr(2+s);return r};this.getShortNISTPCurveName=function(){var r=this.curveName;if(r===\"secp256r1\"||r===\"NIST P-256\"||r===\"P-256\"||r===\"prime256v1\"){return\"P-256\"}if(r===\"secp384r1\"||r===\"NIST P-384\"||r===\"P-384\"){return\"P-384\"}return null};this.generateKeyPairHex=function(){var t=this.ecparams.n;var w=this.getBigRandom(t);var u=this.ecparams.G.multiply(w);var z=u.getX().toBigInteger();var x=u.getY().toBigInteger();var r=this.ecparams.keylen/4;var v=(\"0000000000\"+w.toString(16)).slice(-r);var A=(\"0000000000\"+z.toString(16)).slice(-r);var y=(\"0000000000\"+x.toString(16)).slice(-r);var s=\"04\"+A+y;this.setPrivateKeyHex(v);this.setPublicKeyHex(s);return{ecprvhex:v,ecpubhex:s}};this.signWithMessageHash=function(r){return this.signHex(r,this.prvKeyHex)};this.signHex=function(x,u){var A=new f(u,16);var v=this.ecparams.n;var z=new f(x.substring(0,this.ecparams.keylen/4),16);do{var w=this.getBigRandom(v);var B=this.ecparams.G;var y=B.multiply(w);var t=y.getX().toBigInteger().mod(v)}while(t.compareTo(f.ZERO)<=0);var C=w.modInverse(v).multiply(z.add(A.multiply(t))).mod(v);return m.biRSSigToASN1Sig(t,C)};this.sign=function(w,B){var z=B;var u=this.ecparams.n;var y=f.fromByteArrayUnsigned(w);do{var v=this.getBigRandom(u);var A=this.ecparams.G;var x=A.multiply(v);var t=x.getX().toBigInteger().mod(u)}while(t.compareTo(BigInteger.ZERO)<=0);var C=v.modInverse(u).multiply(y.add(z.multiply(t))).mod(u);return this.serializeSig(t,C)};this.verifyWithMessageHash=function(s,r){return this.verifyHex(s,r,this.pubKeyHex)};this.verifyHex=function(v,y,u){try{var t,B;var w=m.parseSigHex(y);t=w.r;B=w.s;var x=h.decodeFromHex(this.ecparams.curve,u);var z=new f(v.substring(0,this.ecparams.keylen/4),16);return this.verifyRaw(z,t,B,x)}catch(A){return false}};this.verify=function(z,A,u){var w,t;if(Bitcoin.Util.isArray(A)){var y=this.parseSig(A);w=y.r;t=y.s}else{if(\"object\"===typeof A&&A.r&&A.s){w=A.r;t=A.s}else{throw\"Invalid value for signature\"}}var v;if(u instanceof ECPointFp){v=u}else{if(Bitcoin.Util.isArray(u)){v=h.decodeFrom(this.ecparams.curve,u)}else{throw\"Invalid format for pubkey value, must be byte array or ECPointFp\"}}var x=f.fromByteArrayUnsigned(z);return this.verifyRaw(x,w,t,v)};this.verifyRaw=function(z,t,E,y){var x=this.ecparams.n;var D=this.ecparams.G;if(t.compareTo(f.ONE)<0||t.compareTo(x)>=0){return false}if(E.compareTo(f.ONE)<0||E.compareTo(x)>=0){return false}var A=E.modInverse(x);var w=z.multiply(A).mod(x);var u=t.multiply(A).mod(x);var B=D.multiply(w).add(y.multiply(u));var C=B.getX().toBigInteger().mod(x);return C.equals(t)};this.serializeSig=function(v,u){var w=v.toByteArraySigned();var t=u.toByteArraySigned();var x=[];x.push(2);x.push(w.length);x=x.concat(w);x.push(2);x.push(t.length);x=x.concat(t);x.unshift(x.length);x.unshift(48);return x};this.parseSig=function(y){var x;if(y[0]!=48){throw new Error(\"Signature not a valid DERSequence\")}x=2;if(y[x]!=2){throw new Error(\"First element in signature must be a DERInteger\")}var w=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];if(y[x]!=2){throw new Error(\"Second element in signature must be a DERInteger\")}var t=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];var v=f.fromByteArrayUnsigned(w);var u=f.fromByteArrayUnsigned(t);return{r:v,s:u}};this.parseSigCompact=function(w){if(w.length!==65){throw\"Signature has the wrong length\"}var t=w[0]-27;if(t<0||t>7){throw\"Invalid signature type\"}var x=this.ecparams.n;var v=f.fromByteArrayUnsigned(w.slice(1,33)).mod(x);var u=f.fromByteArrayUnsigned(w.slice(33,65)).mod(x);return{r:v,s:u,i:t}};this.readPKCS5PrvKeyHex=function(u){if(k(u)===false){throw new Error(\"not ASN.1 hex string\")}var r,t,v;try{r=n(u,0,[\"[0]\",0],\"06\");t=n(u,0,[1],\"04\");try{v=n(u,0,[\"[1]\",0],\"03\")}catch(s){}}catch(s){throw new Error(\"malformed PKCS#1/5 plain ECC private key\")}this.curveName=d(r);if(this.curveName===undefined){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v);this.setPrivateKeyHex(t);this.isPublic=false};this.readPKCS8PrvKeyHex=function(v){if(k(v)===false){throw new j(\"not ASN.1 hex string\")}var t,r,u,w;try{t=n(v,0,[1,0],\"06\");r=n(v,0,[1,1],\"06\");u=n(v,0,[2,0,1],\"04\");try{w=n(v,0,[2,0,\"[1]\",0],\"03\")}catch(s){}}catch(s){throw new j(\"malformed PKCS#8 plain ECC private key\")}this.curveName=d(r);if(this.curveName===undefined){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(w);this.setPrivateKeyHex(u);this.isPublic=false};this.readPKCS8PubKeyHex=function(u){if(k(u)===false){throw new j(\"not ASN.1 hex string\")}var t,r,v;try{t=n(u,0,[0,0],\"06\");r=n(u,0,[0,1],\"06\");v=n(u,0,[1],\"03\")}catch(s){throw new j(\"malformed PKCS#8 ECC public key\")}this.curveName=d(r);if(this.curveName===null){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v)};this.readCertPubKeyHex=function(t,v){if(k(t)===false){throw new j(\"not ASN.1 hex string\")}var r,u;try{r=n(t,0,[0,5,0,1],\"06\");u=n(t,0,[0,5,1],\"03\")}catch(s){throw new j(\"malformed X.509 certificate ECC public key\")}this.curveName=d(r);if(this.curveName===null){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(u)};if(e!==undefined){if(e.curve!==undefined){this.curveName=e.curve}}if(this.curveName===undefined){this.curveName=g}this.setNamedCurve(this.curveName);if(e!==undefined){if(e.prv!==undefined){this.setPrivateKeyHex(e.prv)}if(e.pub!==undefined){this.setPublicKeyHex(e.pub)}}};KJUR.crypto.ECDSA.parseSigHex=function(a){var b=KJUR.crypto.ECDSA.parseSigHexInHexRS(a);var d=new BigInteger(b.r,16);var c=new BigInteger(b.s,16);return{r:d,s:c}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(f){var j=ASN1HEX,i=j.getChildIdx,g=j.getV;j.checkStrictDER(f,0);if(f.substr(0,2)!=\"30\"){throw new Error(\"signature is not a ASN.1 sequence\")}var h=i(f,0);if(h.length!=2){throw new Error(\"signature shall have two elements\")}var e=h[0];var d=h[1];if(f.substr(e,2)!=\"02\"){throw new Error(\"1st item not ASN.1 integer\")}if(f.substr(d,2)!=\"02\"){throw new Error(\"2nd item not ASN.1 integer\")}var c=g(f,e);var b=g(f,d);return{r:c,s:b}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(c){var d=KJUR.crypto.ECDSA.parseSigHexInHexRS(c);var b=d.r;var a=d.s;if(b.substr(0,2)==\"00\"&&(b.length%32)==2){b=b.substr(2)}if(a.substr(0,2)==\"00\"&&(a.length%32)==2){a=a.substr(2)}if((b.length%32)==30){b=\"00\"+b}if((a.length%32)==30){a=\"00\"+a}if(b.length%32!=0){throw\"unknown ECDSA sig r length error\"}if(a.length%32!=0){throw\"unknown ECDSA sig s length error\"}return b+a};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(a){if((((a.length/2)*8)%(16*8))!=0){throw\"unknown ECDSA concatinated r-s sig length error\"}var c=a.substr(0,a.length/2);var b=a.substr(a.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c,b)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(b,a){var d=new BigInteger(b,16);var c=new BigInteger(a,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d,c)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(f,d){var c=KJUR.asn1;var b=new c.DERInteger({bigint:f});var a=new c.DERInteger({bigint:d});var e=new c.DERSequence({array:[b,a]});return e.getEncodedHex()};KJUR.crypto.ECDSA.getName=function(a){if(a===\"2b8104001f\"){return\"secp192k1\"}if(a===\"2a8648ce3d030107\"){return\"secp256r1\"}if(a===\"2b8104000a\"){return\"secp256k1\"}if(a===\"2b81040021\"){return\"secp224r1\"}if(a===\"2b81040022\"){return\"secp384r1\"}if(\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(a)!==-1){return\"secp256r1\"}if(\"|secp256k1|\".indexOf(a)!==-1){return\"secp256k1\"}if(\"|secp224r1|NIST P-224|P-224|\".indexOf(a)!==-1){return\"secp224r1\"}if(\"|secp384r1|NIST P-384|P-384|\".indexOf(a)!==-1){return\"secp384r1\"}return null};\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECParameterDB=new function(){var b={};var c={};function a(d){return new BigInteger(d,16)}this.getByName=function(e){var d=e;if(typeof c[d]!=\"undefined\"){d=c[e]}if(typeof b[d]!=\"undefined\"){return b[d]}throw\"unregistered EC curve name: \"+d};this.regist=function(A,l,o,g,m,e,j,f,k,u,d,x){b[A]={};var s=a(o);var z=a(g);var y=a(m);var t=a(e);var w=a(j);var r=new ECCurveFp(s,z,y);var q=r.decodePointHex(\"04\"+f+k);b[A][\"name\"]=A;b[A][\"keylen\"]=l;b[A][\"curve\"]=r;b[A][\"G\"]=q;b[A][\"n\"]=t;b[A][\"h\"]=w;b[A][\"oid\"]=d;b[A][\"info\"]=x;for(var v=0;v<u.length;v++){c[u[v]]=A}}};KJUR.crypto.ECParameterDB.regist(\"secp128r1\",128,\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\",\"E87579C11079F43DD824993C2CEE5ED3\",\"FFFFFFFE0000000075A30D1B9038A115\",\"1\",\"161FF7528B899B2D0C28607CA52C5B86\",\"CF5AC8395BAFEB13C02DA292DDED7A83\",[],\"\",\"secp128r1 : SECG curve over a 128 bit prime field\");KJUR.crypto.ECParameterDB.regist(\"secp160k1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\",\"0\",\"7\",\"0100000000000000000001B8FA16DFAB9ACA16B6B3\",\"1\",\"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\",\"938CF935318FDCED6BC28286531733C3F03C4FEE\",[],\"\",\"secp160k1 : SECG curve over a 160 bit prime field\");KJUR.crypto.ECParameterDB.regist(\"secp160r1\",160,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\",\"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\",\"0100000000000000000001F4C8F927AED3CA752257\",\"1\",\"4A96B5688EF573284664698968C38BB913CBFC82\",\"23A628553168947D59DCC912042351377AC5FB32\",[],\"\",\"secp160r1 : SECG curve over a 160 bit prime field\");KJUR.crypto.ECParameterDB.regist(\"secp192k1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\",\"0\",\"3\",\"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\",\"1\",\"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\",\"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\",[]);KJUR.crypto.ECParameterDB.regist(\"secp192r1\",192,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\",\"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\",\"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\",\"1\",\"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\",\"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\",[]);KJUR.crypto.ECParameterDB.regist(\"secp224r1\",224,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\",\"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\",\"1\",\"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\",\"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\",[]);KJUR.crypto.ECParameterDB.regist(\"secp256k1\",256,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F\",\"0\",\"7\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\",\"1\",\"79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798\",\"483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8\",[]);KJUR.crypto.ECParameterDB.regist(\"secp256r1\",256,\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\",\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\",\"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\",\"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\",\"1\",\"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\",\"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\",[\"NIST P-256\",\"P-256\",\"prime256v1\"]);KJUR.crypto.ECParameterDB.regist(\"secp384r1\",384,\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC\",\"B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF\",\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973\",\"1\",\"AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7\",\"3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f\",[\"NIST P-384\",\"P-384\"]);KJUR.crypto.ECParameterDB.regist(\"secp521r1\",521,\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC\",\"051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00\",\"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409\",\"1\",\"C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66\",\"011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650\",[\"NIST P-521\",\"P-521\"]);\nvar KEYUTIL=function(){var d=function(p,r,q){return k(CryptoJS.AES,p,r,q)};var e=function(p,r,q){return k(CryptoJS.TripleDES,p,r,q)};var a=function(p,r,q){return k(CryptoJS.DES,p,r,q)};var k=function(s,x,u,q){var r=CryptoJS.enc.Hex.parse(x);var w=CryptoJS.enc.Hex.parse(u);var p=CryptoJS.enc.Hex.parse(q);var t={};t.key=w;t.iv=p;t.ciphertext=r;var v=s.decrypt(t,w,{iv:p});return CryptoJS.enc.Hex.stringify(v)};var l=function(p,r,q){return g(CryptoJS.AES,p,r,q)};var o=function(p,r,q){return g(CryptoJS.TripleDES,p,r,q)};var f=function(p,r,q){return g(CryptoJS.DES,p,r,q)};var g=function(t,y,v,q){var s=CryptoJS.enc.Hex.parse(y);var x=CryptoJS.enc.Hex.parse(v);var p=CryptoJS.enc.Hex.parse(q);var w=t.encrypt(s,x,{iv:p});var r=CryptoJS.enc.Hex.parse(w.toString());var u=CryptoJS.enc.Base64.stringify(r);return u};var i={\"AES-256-CBC\":{proc:d,eproc:l,keylen:32,ivlen:16},\"AES-192-CBC\":{proc:d,eproc:l,keylen:24,ivlen:16},\"AES-128-CBC\":{proc:d,eproc:l,keylen:16,ivlen:16},\"DES-EDE3-CBC\":{proc:e,eproc:o,keylen:24,ivlen:8},\"DES-CBC\":{proc:a,eproc:f,keylen:8,ivlen:8}};var c=function(p){return i[p][\"proc\"]};var m=function(p){var r=CryptoJS.lib.WordArray.random(p);var q=CryptoJS.enc.Hex.stringify(r);return q};var n=function(v){var w={};var q=v.match(new RegExp(\"DEK-Info: ([^,]+),([0-9A-Fa-f]+)\",\"m\"));if(q){w.cipher=q[1];w.ivsalt=q[2]}var p=v.match(new RegExp(\"-----BEGIN ([A-Z]+) PRIVATE KEY-----\"));if(p){w.type=p[1]}var u=-1;var x=0;if(v.indexOf(\"\\r\\n\\r\\n\")!=-1){u=v.indexOf(\"\\r\\n\\r\\n\");x=2}if(v.indexOf(\"\\n\\n\")!=-1){u=v.indexOf(\"\\n\\n\");x=1}var t=v.indexOf(\"-----END\");if(u!=-1&&t!=-1){var r=v.substring(u+x*2,t-x);r=r.replace(/\\s+/g,\"\");w.data=r}return w};var j=function(q,y,p){var v=p.substring(0,16);var t=CryptoJS.enc.Hex.parse(v);var r=CryptoJS.enc.Utf8.parse(y);var u=i[q][\"keylen\"]+i[q][\"ivlen\"];var x=\"\";var w=null;for(;;){var s=CryptoJS.algo.MD5.create();if(w!=null){s.update(w)}s.update(r);s.update(t);w=s.finalize();x=x+CryptoJS.enc.Hex.stringify(w);if(x.length>=u*2){break}}var z={};z.keyhex=x.substr(0,i[q][\"keylen\"]*2);z.ivhex=x.substr(i[q][\"keylen\"]*2,i[q][\"ivlen\"]*2);return z};var b=function(p,v,r,w){var s=CryptoJS.enc.Base64.parse(p);var q=CryptoJS.enc.Hex.stringify(s);var u=i[v][\"proc\"];var t=u(q,r,w);return t};var h=function(p,s,q,u){var r=i[s][\"eproc\"];var t=r(p,q,u);return t};return{version:\"1.0.0\",parsePKCS5PEM:function(p){return n(p)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(q,p,r){return j(q,p,r)},decryptKeyB64:function(p,r,q,s){return b(p,r,q,s)},getDecryptedKeyHex:function(y,x){var q=n(y);var t=q.type;var r=q.cipher;var p=q.ivsalt;var s=q.data;var w=j(r,x,p);var v=w.keyhex;var u=b(s,r,v,p);return u},getEncryptedPKCS5PEMFromPrvKeyHex:function(x,s,A,t,r){var p=\"\";if(typeof t==\"undefined\"||t==null){t=\"AES-256-CBC\"}if(typeof i[t]==\"undefined\"){throw\"KEYUTIL unsupported algorithm: \"+t}if(typeof r==\"undefined\"||r==null){var v=i[t][\"ivlen\"];var u=m(v);r=u.toUpperCase()}var z=j(t,A,r);var y=z.keyhex;var w=h(s,t,y,r);var q=w.replace(/(.{64})/g,\"$1\\r\\n\");var p=\"-----BEGIN \"+x+\" PRIVATE KEY-----\\r\\n\";p+=\"Proc-Type: 4,ENCRYPTED\\r\\n\";p+=\"DEK-Info: \"+t+\",\"+r+\"\\r\\n\";p+=\"\\r\\n\";p+=q;p+=\"\\r\\n-----END \"+x+\" PRIVATE KEY-----\\r\\n\";return p},parseHexOfEncryptedPKCS8:function(y){var B=ASN1HEX;var z=B.getChildIdx;var w=B.getV;var t={};var r=z(y,0);if(r.length!=2){throw\"malformed format: SEQUENCE(0).items != 2: \"+r.length}t.ciphertext=w(y,r[1]);var A=z(y,r[0]);if(A.length!=2){throw\"malformed format: SEQUENCE(0.0).items != 2: \"+A.length}if(w(y,A[0])!=\"2a864886f70d01050d\"){throw\"this only supports pkcs5PBES2\"}var p=z(y,A[1]);if(A.length!=2){throw\"malformed format: SEQUENCE(0.0.1).items != 2: \"+p.length}var q=z(y,p[1]);if(q.length!=2){throw\"malformed format: SEQUENCE(0.0.1.1).items != 2: \"+q.length}if(w(y,q[0])!=\"2a864886f70d0307\"){throw\"this only supports TripleDES\"}t.encryptionSchemeAlg=\"TripleDES\";t.encryptionSchemeIV=w(y,q[1]);var s=z(y,p[0]);if(s.length!=2){throw\"malformed format: SEQUENCE(0.0.1.0).items != 2: \"+s.length}if(w(y,s[0])!=\"2a864886f70d01050c\"){throw\"this only supports pkcs5PBKDF2\"}var x=z(y,s[1]);if(x.length<2){throw\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \"+x.length}t.pbkdf2Salt=w(y,x[0]);var u=w(y,x[1]);try{t.pbkdf2Iter=parseInt(u,16)}catch(v){throw\"malformed format pbkdf2Iter: \"+u}return t},getPBKDF2KeyHexFromParam:function(u,p){var t=CryptoJS.enc.Hex.parse(u.pbkdf2Salt);var q=u.pbkdf2Iter;var s=CryptoJS.PBKDF2(p,t,{keySize:192/32,iterations:q});var r=CryptoJS.enc.Hex.stringify(s);return r},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(x,y){var r=pemtohex(x,\"ENCRYPTED PRIVATE KEY\");var p=this.parseHexOfEncryptedPKCS8(r);var u=KEYUTIL.getPBKDF2KeyHexFromParam(p,y);var v={};v.ciphertext=CryptoJS.enc.Hex.parse(p.ciphertext);var t=CryptoJS.enc.Hex.parse(u);var s=CryptoJS.enc.Hex.parse(p.encryptionSchemeIV);var w=CryptoJS.TripleDES.decrypt(v,t,{iv:s});var q=CryptoJS.enc.Hex.stringify(w);return q},getKeyFromEncryptedPKCS8PEM:function(s,q){var p=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(s,q);var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},parsePlainPrivatePKCS8Hex:function(s){var v=ASN1HEX;var u=v.getChildIdx;var t=v.getV;var q={};q.algparam=null;if(s.substr(0,2)!=\"30\"){throw\"malformed plain PKCS8 private key(code:001)\"}var r=u(s,0);if(r.length!=3){throw\"malformed plain PKCS8 private key(code:002)\"}if(s.substr(r[1],2)!=\"30\"){throw\"malformed PKCS8 private key(code:003)\"}var p=u(s,r[1]);if(p.length!=2){throw\"malformed PKCS8 private key(code:004)\"}if(s.substr(p[0],2)!=\"06\"){throw\"malformed PKCS8 private key(code:005)\"}q.algoid=t(s,p[0]);if(s.substr(p[1],2)==\"06\"){q.algparam=t(s,p[1])}if(s.substr(r[2],2)!=\"04\"){throw\"malformed PKCS8 private key(code:006)\"}q.keyidx=v.getVidx(s,r[2]);return q},getKeyFromPlainPrivatePKCS8PEM:function(q){var p=pemtohex(q,\"PRIVATE KEY\");var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},getKeyFromPlainPrivatePKCS8Hex:function(p){var q=this.parsePlainPrivatePKCS8Hex(p);var r;if(q.algoid==\"2a864886f70d010101\"){r=new RSAKey()}else{if(q.algoid==\"2a8648ce380401\"){r=new KJUR.crypto.DSA()}else{if(q.algoid==\"2a8648ce3d0201\"){r=new KJUR.crypto.ECDSA()}else{throw\"unsupported private key algorithm\"}}}r.readPKCS8PrvKeyHex(p);return r},_getKeyFromPublicPKCS8Hex:function(q){var p;var r=ASN1HEX.getVbyList(q,0,[0,0],\"06\");if(r===\"2a864886f70d010101\"){p=new RSAKey()}else{if(r===\"2a8648ce380401\"){p=new KJUR.crypto.DSA()}else{if(r===\"2a8648ce3d0201\"){p=new KJUR.crypto.ECDSA()}else{throw\"unsupported PKCS#8 public key hex\"}}}p.readPKCS8PubKeyHex(q);return p},parsePublicRawRSAKeyHex:function(r){var u=ASN1HEX;var t=u.getChildIdx;var s=u.getV;var p={};if(r.substr(0,2)!=\"30\"){throw\"malformed RSA key(code:001)\"}var q=t(r,0);if(q.length!=2){throw\"malformed RSA key(code:002)\"}if(r.substr(q[0],2)!=\"02\"){throw\"malformed RSA key(code:003)\"}p.n=s(r,q[0]);if(r.substr(q[1],2)!=\"02\"){throw\"malformed RSA key(code:004)\"}p.e=s(r,q[1]);return p},parsePublicPKCS8Hex:function(t){var v=ASN1HEX;var u=v.getChildIdx;var s=v.getV;var q={};q.algparam=null;var r=u(t,0);if(r.length!=2){throw\"outer DERSequence shall have 2 elements: \"+r.length}var w=r[0];if(t.substr(w,2)!=\"30\"){throw\"malformed PKCS8 public key(code:001)\"}var p=u(t,w);if(p.length!=2){throw\"malformed PKCS8 public key(code:002)\"}if(t.substr(p[0],2)!=\"06\"){throw\"malformed PKCS8 public key(code:003)\"}q.algoid=s(t,p[0]);if(t.substr(p[1],2)==\"06\"){q.algparam=s(t,p[1])}else{if(t.substr(p[1],2)==\"30\"){q.algparam={};q.algparam.p=v.getVbyList(t,p[1],[0],\"02\");q.algparam.q=v.getVbyList(t,p[1],[1],\"02\");q.algparam.g=v.getVbyList(t,p[1],[2],\"02\")}}if(t.substr(r[1],2)!=\"03\"){throw\"malformed PKCS8 public key(code:004)\"}q.key=s(t,r[1]).substr(2);return q},}}();KEYUTIL.getKey=function(l,k,n){var G=ASN1HEX,L=G.getChildIdx,v=G.getV,d=G.getVbyList,c=KJUR.crypto,i=c.ECDSA,C=c.DSA,w=RSAKey,M=pemtohex,F=KEYUTIL;if(typeof w!=\"undefined\"&&l instanceof w){return l}if(typeof i!=\"undefined\"&&l instanceof i){return l}if(typeof C!=\"undefined\"&&l instanceof C){return l}if(l.curve!==undefined&&l.xy!==undefined&&l.d===undefined){return new i({pub:l.xy,curve:l.curve})}if(l.curve!==undefined&&l.d!==undefined){return new i({prv:l.d,curve:l.curve})}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(l.n,l.e);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.co!==undefined&&l.qi===undefined){var P=new w();P.setPrivateEx(l.n,l.e,l.d,l.p,l.q,l.dp,l.dq,l.co);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p===undefined){var P=new w();P.setPrivate(l.n,l.e,l.d);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x===undefined){var P=new C();P.setPublic(l.p,l.q,l.g,l.y);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x!==undefined){var P=new C();P.setPrivate(l.p,l.q,l.g,l.y,l.x);return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(b64utohex(l.n),b64utohex(l.e));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.qi!==undefined){var P=new w();P.setPrivateEx(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d),b64utohex(l.p),b64utohex(l.q),b64utohex(l.dp),b64utohex(l.dq),b64utohex(l.qi));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined){var P=new w();P.setPrivate(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d));return P}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d===undefined){var j=new i({curve:l.crv});var t=j.ecparams.keylen/4;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;j.setPublicKeyHex(u);return j}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d!==undefined){var j=new i({curve:l.crv});var t=j.ecparams.keylen/4;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;var b=(\"0000000000\"+b64utohex(l.d)).slice(-t);j.setPublicKeyHex(u);j.setPrivateKeyHex(b);return j}if(n===\"pkcs5prv\"){var J=l,G=ASN1HEX,N,P;N=L(J,0);if(N.length===9){P=new w();P.readPKCS5PrvKeyHex(J)}else{if(N.length===6){P=new C();P.readPKCS5PrvKeyHex(J)}else{if(N.length>2&&J.substr(N[1],2)===\"04\"){P=new i();P.readPKCS5PrvKeyHex(J)}else{throw\"unsupported PKCS#1/5 hexadecimal key\"}}}return P}if(n===\"pkcs8prv\"){var P=F.getKeyFromPlainPrivatePKCS8Hex(l);return P}if(n===\"pkcs8pub\"){return F._getKeyFromPublicPKCS8Hex(l)}if(n===\"x509pub\"){return X509.getPublicKeyFromCertHex(l)}if(l.indexOf(\"-END CERTIFICATE-\",0)!=-1||l.indexOf(\"-END X509 CERTIFICATE-\",0)!=-1||l.indexOf(\"-END TRUSTED CERTIFICATE-\",0)!=-1){return X509.getPublicKeyFromCertPEM(l)}if(l.indexOf(\"-END PUBLIC KEY-\")!=-1){var O=pemtohex(l,\"PUBLIC KEY\");return F._getKeyFromPublicPKCS8Hex(O)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"RSA PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var I=M(l,\"DSA PRIVATE KEY\");var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"EC PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END PRIVATE KEY-\")!=-1){return F.getKeyFromPlainPrivatePKCS8PEM(l)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var o=F.getDecryptedKeyHex(l,k);var H=new RSAKey();H.readPKCS5PrvKeyHex(o);return H}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var P=d(I,0,[1],\"04\");var f=d(I,0,[2,0],\"06\");var A=d(I,0,[3,0],\"03\").substr(2);var e=\"\";if(KJUR.crypto.OID.oidhex2name[f]!==undefined){e=KJUR.crypto.OID.oidhex2name[f]}else{throw\"undefined OID(hex) in KJUR.crypto.OID: \"+f}var j=new i({curve:e});j.setPublicKeyHex(A);j.setPrivateKeyHex(P);j.isPublic=false;return j}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END ENCRYPTED PRIVATE KEY-\")!=-1){return F.getKeyFromEncryptedPKCS8PEM(l,k)}throw new Error(\"not supported argument\")};KEYUTIL.generateKeypair=function(a,c){if(a==\"RSA\"){var b=c;var h=new RSAKey();h.generate(b,\"10001\");h.isPrivate=true;h.isPublic=true;var f=new RSAKey();var e=h.n.toString(16);var i=h.e.toString(16);f.setPublic(e,i);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{if(a==\"EC\"){var d=c;var g=new KJUR.crypto.ECDSA({curve:d});var j=g.generateKeyPairHex();var h=new KJUR.crypto.ECDSA({curve:d});h.setPublicKeyHex(j.ecpubhex);h.setPrivateKeyHex(j.ecprvhex);h.isPrivate=true;h.isPublic=false;var f=new KJUR.crypto.ECDSA({curve:d});f.setPublicKeyHex(j.ecpubhex);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{throw\"unknown algorithm: \"+a}}};KEYUTIL.getPEM=function(b,D,y,m,q,j){var F=KJUR,k=F.asn1,z=k.DERObjectIdentifier,f=k.DERInteger,l=k.ASN1Util.newObject,a=k.x509,C=a.SubjectPublicKeyInfo,e=F.crypto,u=e.DSA,r=e.ECDSA,n=RSAKey;function A(s){var G=l({seq:[{\"int\":0},{\"int\":{bigint:s.n}},{\"int\":s.e},{\"int\":{bigint:s.d}},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.dmp1}},{\"int\":{bigint:s.dmq1}},{\"int\":{bigint:s.coeff}}]});return G}function B(G){var s=l({seq:[{\"int\":1},{octstr:{hex:G.prvKeyHex}},{tag:[\"a0\",true,{oid:{name:G.curveName}}]},{tag:[\"a1\",true,{bitstr:{hex:\"00\"+G.pubKeyHex}}]}]});return s}function x(s){var G=l({seq:[{\"int\":0},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.g}},{\"int\":{bigint:s.y}},{\"int\":{bigint:s.x}}]});return G}if(((n!==undefined&&b instanceof n)||(u!==undefined&&b instanceof u)||(r!==undefined&&b instanceof r))&&b.isPublic==true&&(D===undefined||D==\"PKCS8PUB\")){var E=new C(b);var w=E.getEncodedHex();return hextopem(w,\"PUBLIC KEY\")}if(D==\"PKCS1PRV\"&&n!==undefined&&b instanceof n&&(y===undefined||y==null)&&b.isPrivate==true){var E=A(b);var w=E.getEncodedHex();return hextopem(w,\"RSA PRIVATE KEY\")}if(D==\"PKCS1PRV\"&&r!==undefined&&b instanceof r&&(y===undefined||y==null)&&b.isPrivate==true){var i=new z({name:b.curveName});var v=i.getEncodedHex();var h=B(b);var t=h.getEncodedHex();var p=\"\";p+=hextopem(v,\"EC PARAMETERS\");p+=hextopem(t,\"EC PRIVATE KEY\");return p}if(D==\"PKCS1PRV\"&&u!==undefined&&b instanceof u&&(y===undefined||y==null)&&b.isPrivate==true){var E=x(b);var w=E.getEncodedHex();return hextopem(w,\"DSA PRIVATE KEY\")}if(D==\"PKCS5PRV\"&&n!==undefined&&b instanceof n&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=A(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\",w,y,m,j)}if(D==\"PKCS5PRV\"&&r!==undefined&&b instanceof r&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=B(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\",w,y,m,j)}if(D==\"PKCS5PRV\"&&u!==undefined&&b instanceof u&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=x(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\",w,y,m,j)}var o=function(G,s){var I=c(G,s);var H=new l({seq:[{seq:[{oid:{name:\"pkcs5PBES2\"}},{seq:[{seq:[{oid:{name:\"pkcs5PBKDF2\"}},{seq:[{octstr:{hex:I.pbkdf2Salt}},{\"int\":I.pbkdf2Iter}]}]},{seq:[{oid:{name:\"des-EDE3-CBC\"}},{octstr:{hex:I.encryptionSchemeIV}}]}]}]},{octstr:{hex:I.ciphertext}}]});return H.getEncodedHex()};var c=function(N,O){var H=100;var M=CryptoJS.lib.WordArray.random(8);var L=\"DES-EDE3-CBC\";var s=CryptoJS.lib.WordArray.random(8);var I=CryptoJS.PBKDF2(O,M,{keySize:192/32,iterations:H});var J=CryptoJS.enc.Hex.parse(N);var K=CryptoJS.TripleDES.encrypt(J,I,{iv:s})+\"\";var G={};G.ciphertext=K;G.pbkdf2Salt=CryptoJS.enc.Hex.stringify(M);G.pbkdf2Iter=H;G.encryptionSchemeAlg=L;G.encryptionSchemeIV=CryptoJS.enc.Hex.stringify(s);return G};if(D==\"PKCS8PRV\"&&n!=undefined&&b instanceof n&&b.isPrivate==true){var g=A(b);var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"rsaEncryption\"}},{\"null\":true}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}if(D==\"PKCS8PRV\"&&r!==undefined&&b instanceof r&&b.isPrivate==true){var g=new l({seq:[{\"int\":1},{octstr:{hex:b.prvKeyHex}},{tag:[\"a1\",true,{bitstr:{hex:\"00\"+b.pubKeyHex}}]}]});var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"ecPublicKey\"}},{oid:{name:b.curveName}}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}if(D==\"PKCS8PRV\"&&u!==undefined&&b instanceof u&&b.isPrivate==true){var g=new f({bigint:b.x});var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"dsa\"}},{seq:[{\"int\":{bigint:b.p}},{\"int\":{bigint:b.q}},{\"int\":{bigint:b.g}}]}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}throw new Error(\"unsupported object nor format\")};KEYUTIL.getKeyFromCSRPEM=function(b){var a=pemtohex(b,\"CERTIFICATE REQUEST\");var c=KEYUTIL.getKeyFromCSRHex(a);return c};KEYUTIL.getKeyFromCSRHex=function(a){var c=KEYUTIL.parseCSRHex(a);var b=KEYUTIL.getKey(c.p8pubkeyhex,null,\"pkcs8pub\");return b};KEYUTIL.parseCSRHex=function(d){var i=ASN1HEX;var f=i.getChildIdx;var c=i.getTLV;var b={};var g=d;if(g.substr(0,2)!=\"30\"){throw\"malformed CSR(code:001)\"}var e=f(g,0);if(e.length<1){throw\"malformed CSR(code:002)\"}if(g.substr(e[0],2)!=\"30\"){throw\"malformed CSR(code:003)\"}var a=f(g,e[0]);if(a.length<3){throw\"malformed CSR(code:004)\"}b.p8pubkeyhex=c(g,a[2]);return b};KEYUTIL.getKeyID=function(f){var c=KEYUTIL;var e=ASN1HEX;if(typeof f===\"string\"&&f.indexOf(\"BEGIN \")!=-1){f=c.getKey(f)}var d=pemtohex(c.getPEM(f));var b=e.getIdxbyList(d,0,[1]);var a=e.getV(d,b).substring(2);return KJUR.crypto.Util.hashHex(a,\"sha1\")};KEYUTIL.getJWKFromKey=function(d){var b={};if(d instanceof RSAKey&&d.isPrivate){b.kty=\"RSA\";b.n=hextob64u(d.n.toString(16));b.e=hextob64u(d.e.toString(16));b.d=hextob64u(d.d.toString(16));b.p=hextob64u(d.p.toString(16));b.q=hextob64u(d.q.toString(16));b.dp=hextob64u(d.dmp1.toString(16));b.dq=hextob64u(d.dmq1.toString(16));b.qi=hextob64u(d.coeff.toString(16));return b}else{if(d instanceof RSAKey&&d.isPublic){b.kty=\"RSA\";b.n=hextob64u(d.n.toString(16));b.e=hextob64u(d.e.toString(16));return b}else{if(d instanceof KJUR.crypto.ECDSA&&d.isPrivate){var a=d.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"){throw\"unsupported curve name for JWT: \"+a}var c=d.getPublicKeyXYHex();b.kty=\"EC\";b.crv=a;b.x=hextob64u(c.x);b.y=hextob64u(c.y);b.d=hextob64u(d.prvKeyHex);return b}else{if(d instanceof KJUR.crypto.ECDSA&&d.isPublic){var a=d.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"){throw\"unsupported curve name for JWT: \"+a}var c=d.getPublicKeyXYHex();b.kty=\"EC\";b.crv=a;b.x=hextob64u(c.x);b.y=hextob64u(c.y);return b}}}}throw\"not supported key object\"};\nRSAKey.getPosArrayOfChildrenFromHex=function(a){return ASN1HEX.getChildIdx(a,0)};RSAKey.getHexValueArrayOfChildrenFromHex=function(f){var n=ASN1HEX;var i=n.getV;var k=RSAKey.getPosArrayOfChildrenFromHex(f);var e=i(f,k[0]);var j=i(f,k[1]);var b=i(f,k[2]);var c=i(f,k[3]);var h=i(f,k[4]);var g=i(f,k[5]);var m=i(f,k[6]);var l=i(f,k[7]);var d=i(f,k[8]);var k=new Array();k.push(e,j,b,c,h,g,m,l,d);return k};RSAKey.prototype.readPrivateKeyFromPEMString=function(d){var c=pemtohex(d);var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS5PrvKeyHex=function(c){var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS8PrvKeyHex=function(e){var c,i,k,b,a,f,d,j;var m=ASN1HEX;var l=m.getVbyListEx;if(m.isASN1HEX(e)===false){throw new Error(\"not ASN.1 hex string\")}try{c=l(e,0,[2,0,1],\"02\");i=l(e,0,[2,0,2],\"02\");k=l(e,0,[2,0,3],\"02\");b=l(e,0,[2,0,4],\"02\");a=l(e,0,[2,0,5],\"02\");f=l(e,0,[2,0,6],\"02\");d=l(e,0,[2,0,7],\"02\");j=l(e,0,[2,0,8],\"02\")}catch(g){throw new Error(\"malformed PKCS#8 plain RSA private key\")}this.setPrivateEx(c,i,k,b,a,f,d,j)};RSAKey.prototype.readPKCS5PubKeyHex=function(c){var e=ASN1HEX;var b=e.getV;if(e.isASN1HEX(c)===false){throw new Error(\"keyHex is not ASN.1 hex string\")}var a=e.getChildIdx(c,0);if(a.length!==2||c.substr(a[0],2)!==\"02\"||c.substr(a[1],2)!==\"02\"){throw new Error(\"wrong hex for PKCS#5 public key\")}var f=b(c,a[0]);var d=b(c,a[1]);this.setPublic(f,d)};RSAKey.prototype.readPKCS8PubKeyHex=function(b){var c=ASN1HEX;if(c.isASN1HEX(b)===false){throw new Error(\"not ASN.1 hex string\")}if(c.getTLVbyListEx(b,0,[0,0])!==\"06092a864886f70d010101\"){throw new Error(\"not PKCS8 RSA public key\")}var a=c.getTLVbyListEx(b,0,[1,0]);this.readPKCS5PubKeyHex(a)};RSAKey.prototype.readCertPubKeyHex=function(b,d){var a,c;a=new X509();a.readCertHex(b);c=a.getPublicKeyHex();this.readPKCS8PubKeyHex(c)};\nvar _RE_HEXDECONLY=new RegExp(\"[^0-9a-f]\",\"gi\");function _rsasign_getHexPaddedDigestInfoForString(d,e,a){var b=function(f){return KJUR.crypto.Util.hashString(f,a)};var c=b(d);return KJUR.crypto.Util.getPaddedDigestInfoHex(c,a,e)}function _zeroPaddingOfSignature(e,d){var c=\"\";var a=d/4-e.length;for(var b=0;b<a;b++){c=c+\"0\"}return c+e}RSAKey.prototype.sign=function(d,a){var b=function(e){return KJUR.crypto.Util.hashString(e,a)};var c=b(d);return this.signWithMessageHash(c,a)};RSAKey.prototype.signWithMessageHash=function(e,c){var f=KJUR.crypto.Util.getPaddedDigestInfoHex(e,c,this.n.bitLength());var b=parseBigInt(f,16);var d=this.doPrivate(b);var a=d.toString(16);return _zeroPaddingOfSignature(a,this.n.bitLength())};function pss_mgf1_str(c,a,e){var b=\"\",d=0;while(b.length<a){b+=hextorstr(e(rstrtohex(c+String.fromCharCode.apply(String,[(d&4278190080)>>24,(d&16711680)>>16,(d&65280)>>8,d&255]))));d+=1}return b}RSAKey.prototype.signPSS=function(e,a,d){var c=function(f){return KJUR.crypto.Util.hashHex(f,a)};var b=c(rstrtohex(e));if(d===undefined){d=-1}return this.signWithMessageHashPSS(b,a,d)};RSAKey.prototype.signWithMessageHashPSS=function(l,a,k){var b=hextorstr(l);var g=b.length;var m=this.n.bitLength()-1;var c=Math.ceil(m/8);var d;var o=function(i){return KJUR.crypto.Util.hashHex(i,a)};if(k===-1||k===undefined){k=g}else{if(k===-2){k=c-g-2}else{if(k<-2){throw new Error(\"invalid salt length\")}}}if(c<(g+k+2)){throw new Error(\"data too long\")}var f=\"\";if(k>0){f=new Array(k);new SecureRandom().nextBytes(f);f=String.fromCharCode.apply(String,f)}var n=hextorstr(o(rstrtohex(\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"+b+f)));var j=[];for(d=0;d<c-k-g-2;d+=1){j[d]=0}var e=String.fromCharCode.apply(String,j)+\"\\x01\"+f;var h=pss_mgf1_str(n,e.length,o);var q=[];for(d=0;d<e.length;d+=1){q[d]=e.charCodeAt(d)^h.charCodeAt(d)}var p=(65280>>(8*c-m))&255;q[0]&=~p;for(d=0;d<g;d++){q.push(n.charCodeAt(d))}q.push(188);return _zeroPaddingOfSignature(this.doPrivate(new BigInteger(q)).toString(16),this.n.bitLength())};function _rsasign_getDecryptSignatureBI(a,d,c){var b=new RSAKey();b.setPublic(d,c);var e=b.doPublic(a);return e}function _rsasign_getHexDigestInfoFromSig(a,c,b){var e=_rsasign_getDecryptSignatureBI(a,c,b);var d=e.toString(16).replace(/^1f+00/,\"\");return d}function _rsasign_getAlgNameAndHashFromHexDisgestInfo(f){for(var e in KJUR.crypto.Util.DIGESTINFOHEAD){var d=KJUR.crypto.Util.DIGESTINFOHEAD[e];var b=d.length;if(f.substring(0,b)==d){var c=[e,f.substring(b)];return c}}return[]}RSAKey.prototype.verify=function(f,j){j=j.replace(_RE_HEXDECONLY,\"\");j=j.replace(/[ \\n]+/g,\"\");var b=parseBigInt(j,16);if(b.bitLength()>this.n.bitLength()){return 0}var i=this.doPublic(b);var e=i.toString(16).replace(/^1f+00/,\"\");var g=_rsasign_getAlgNameAndHashFromHexDisgestInfo(e);if(g.length==0){return false}var d=g[0];var h=g[1];var a=function(k){return KJUR.crypto.Util.hashString(k,d)};var c=a(f);return(h==c)};RSAKey.prototype.verifyWithMessageHash=function(e,a){if(a.length!=Math.ceil(this.n.bitLength()/4)){return false}var b=parseBigInt(a,16);if(b.bitLength()>this.n.bitLength()){return 0}var h=this.doPublic(b);var g=h.toString(16).replace(/^1f+00/,\"\");var c=_rsasign_getAlgNameAndHashFromHexDisgestInfo(g);if(c.length==0){return false}var d=c[0];var f=c[1];return(f==e)};RSAKey.prototype.verifyPSS=function(c,b,a,f){var e=function(g){return KJUR.crypto.Util.hashHex(g,a)};var d=e(rstrtohex(c));if(f===undefined){f=-1}return this.verifyWithMessageHashPSS(d,b,a,f)};RSAKey.prototype.verifyWithMessageHashPSS=function(f,s,l,c){if(s.length!=Math.ceil(this.n.bitLength()/4)){return false}var k=new BigInteger(s,16);var r=function(i){return KJUR.crypto.Util.hashHex(i,l)};var j=hextorstr(f);var h=j.length;var g=this.n.bitLength()-1;var m=Math.ceil(g/8);var q;if(c===-1||c===undefined){c=h}else{if(c===-2){c=m-h-2}else{if(c<-2){throw new Error(\"invalid salt length\")}}}if(m<(h+c+2)){throw new Error(\"data too long\")}var a=this.doPublic(k).toByteArray();for(q=0;q<a.length;q+=1){a[q]&=255}while(a.length<m){a.unshift(0)}if(a[m-1]!==188){throw new Error(\"encoded message does not end in 0xbc\")}a=String.fromCharCode.apply(String,a);var d=a.substr(0,m-h-1);var e=a.substr(d.length,h);var p=(65280>>(8*m-g))&255;if((d.charCodeAt(0)&p)!==0){throw new Error(\"bits beyond keysize not zero\")}var n=pss_mgf1_str(e,d.length,r);var o=[];for(q=0;q<d.length;q+=1){o[q]=d.charCodeAt(q)^n.charCodeAt(q)}o[0]&=~p;var b=m-h-c-2;for(q=0;q<b;q+=1){if(o[q]!==0){throw new Error(\"leftmost octets not zero\")}}if(o[b]!==1){throw new Error(\"0x01 marker not found\")}return e===hextorstr(r(rstrtohex(\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"+j+String.fromCharCode.apply(String,o.slice(-c)))))};RSAKey.SALT_LEN_HLEN=-1;RSAKey.SALT_LEN_MAX=-2;RSAKey.SALT_LEN_RECOVER=-2;\nfunction X509(q){var j=ASN1HEX,n=j.getChildIdx,g=j.getV,b=j.getTLV,c=j.getVbyList,k=j.getVbyListEx,a=j.getTLVbyList,l=j.getTLVbyListEx,h=j.getIdxbyList,e=j.getIdxbyListEx,i=j.getVidx,p=j.oidname,m=j.hextooidstr,d=X509,r=pemtohex,f;try{f=KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(o){}this.HEX2STAG={\"0c\":\"utf8\",\"13\":\"prn\",\"16\":\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"};this.hex=null;this.version=0;this.foffset=0;this.aExtInfo=null;this.getVersion=function(){if(this.hex===null||this.version!==0){return this.version}if(a(this.hex,0,[0,0])!==\"a003020102\"){this.version=1;this.foffset=-1;return 1}this.version=3;return 3};this.getSerialNumberHex=function(){return k(this.hex,0,[0,0],\"02\")};this.getSignatureAlgorithmField=function(){var s=l(this.hex,0,[0,1]);return this.getAlgorithmIdentifierName(s)};this.getAlgorithmIdentifierName=function(s){for(var t in f){if(s===f[t]){return t}}return p(k(s,0,[0],\"06\"))};this.getIssuer=function(){return this.getX500Name(this.getIssuerHex())};this.getIssuerHex=function(){return a(this.hex,0,[0,3+this.foffset],\"30\")};this.getIssuerString=function(){return d.hex2dn(this.getIssuerHex())};this.getSubject=function(){return this.getX500Name(this.getSubjectHex())};this.getSubjectHex=function(){return a(this.hex,0,[0,5+this.foffset],\"30\")};this.getSubjectString=function(){return d.hex2dn(this.getSubjectHex())};this.getNotBefore=function(){var t=c(this.hex,0,[0,4+this.foffset,0]);t=t.replace(/(..)/g,\"%$1\");t=decodeURIComponent(t);return t};this.getNotAfter=function(){var t=c(this.hex,0,[0,4+this.foffset,1]);t=t.replace(/(..)/g,\"%$1\");t=decodeURIComponent(t);return t};this.getPublicKeyHex=function(){return j.getTLVbyList(this.hex,0,[0,6+this.foffset],\"30\")};this.getPublicKeyIdx=function(){return h(this.hex,0,[0,6+this.foffset],\"30\")};this.getPublicKeyContentIdx=function(){var s=this.getPublicKeyIdx();return h(this.hex,s,[1,0],\"30\")};this.getPublicKey=function(){return KEYUTIL.getKey(this.getPublicKeyHex(),null,\"pkcs8pub\")};this.getSignatureAlgorithmName=function(){var s=a(this.hex,0,[1],\"30\");return this.getAlgorithmIdentifierName(s)};this.getSignatureValueHex=function(){return c(this.hex,0,[2],\"03\",true)};this.verifySignature=function(u){var v=this.getSignatureAlgorithmField();var s=this.getSignatureValueHex();var t=a(this.hex,0,[0],\"30\");var w=new KJUR.crypto.Signature({alg:v});w.init(u);w.updateHex(t);return w.verify(s)};this.parseExt=function(B){var u,s,w;if(B===undefined){w=this.hex;if(this.version!==3){return -1}u=h(w,0,[0,7,0],\"30\");s=n(w,u)}else{w=pemtohex(B);var x=h(w,0,[0,3,0,0],\"06\");if(g(w,x)!=\"2a864886f70d01090e\"){this.aExtInfo=new Array();return}u=h(w,0,[0,3,0,1,0],\"30\");s=n(w,u);this.hex=w}this.aExtInfo=new Array();for(var v=0;v<s.length;v++){var z={};z.critical=false;var y=n(w,s[v]);var t=0;if(y.length===3){z.critical=true;t=1}z.oid=j.hextooidstr(c(w,s[v],[0],\"06\"));var A=h(w,s[v],[1+t]);z.vidx=i(w,A);this.aExtInfo.push(z)}};this.getExtInfo=function(u){var s=this.aExtInfo;var v=u;if(!u.match(/^[0-9.]+$/)){v=KJUR.asn1.x509.OID.name2oid(u)}if(v===\"\"){return undefined}for(var t=0;t<s.length;t++){if(s[t].oid===v){return s[t]}}return undefined};this.getExtBasicConstraints=function(t,x){if(t===undefined&&x===undefined){var v=this.getExtInfo(\"basicConstraints\");if(v===undefined){return undefined}t=b(this.hex,v.vidx);x=v.critical}var s={extname:\"basicConstraints\"};if(x){s.critical=true}if(t===\"3000\"){return s}if(t===\"30030101ff\"){s.cA=true;return s}if(t.substr(0,12)===\"30060101ff02\"){var w=g(t,10);var u=parseInt(w,16);s.cA=true;s.pathLen=u;return s}throw new Error(\"hExtV parse error: \"+t)};this.getExtKeyUsage=function(t,v){if(t===undefined&&v===undefined){var u=this.getExtInfo(\"keyUsage\");if(u===undefined){return undefined}t=b(this.hex,u.vidx);v=u.critical}var s={extname:\"keyUsage\"};if(v){s.critical=true}s.names=this.getExtKeyUsageString(t).split(\",\");return s};this.getExtKeyUsageBin=function(u){if(u===undefined){var v=this.getExtInfo(\"keyUsage\");if(v===undefined){return\"\"}u=b(this.hex,v.vidx)}if(u.length!=8&&u.length!=10){throw new Error(\"malformed key usage value: \"+u)}var t=\"000000000000000\"+parseInt(u.substr(6),16).toString(2);if(u.length==8){t=t.slice(-8)}if(u.length==10){t=t.slice(-16)}t=t.replace(/0+$/,\"\");if(t==\"\"){t=\"0\"}return t};this.getExtKeyUsageString=function(u){var v=this.getExtKeyUsageBin(u);var s=new Array();for(var t=0;t<v.length;t++){if(v.substr(t,1)==\"1\"){s.push(X509.KEYUSAGE_NAME[t])}}return s.join(\",\")};this.getExtSubjectKeyIdentifier=function(u,w){if(u===undefined&&w===undefined){var v=this.getExtInfo(\"subjectKeyIdentifier\");if(v===undefined){return undefined}u=b(this.hex,v.vidx);w=v.critical}var s={extname:\"subjectKeyIdentifier\"};if(w){s.critical=true}var t=g(u,0);s.kid={hex:t};return s};this.getExtAuthorityKeyIdentifier=function(y,w){if(y===undefined&&w===undefined){var s=this.getExtInfo(\"authorityKeyIdentifier\");if(s===undefined){return undefined}y=b(this.hex,s.vidx);w=s.critical}var z={extname:\"authorityKeyIdentifier\"};if(w){z.critical=true}var x=n(y,0);for(var t=0;t<x.length;t++){var A=y.substr(x[t],2);if(A===\"80\"){z.kid={hex:g(y,x[t])}}if(A===\"a1\"){var v=b(y,x[t]);var u=this.getGeneralNames(v);z.issuer=u[0][\"dn\"]}if(A===\"82\"){z.sn={hex:g(y,x[t])}}}return z};this.getExtExtKeyUsage=function(v,x){if(v===undefined&&x===undefined){var w=this.getExtInfo(\"extKeyUsage\");if(w===undefined){return undefined}v=b(this.hex,w.vidx);x=w.critical}var s={extname:\"extKeyUsage\",array:[]};if(x){s.critical=true}var t=n(v,0);for(var u=0;u<t.length;u++){s.array.push(p(g(v,t[u])))}return s};this.getExtExtKeyUsageName=function(){var w=this.getExtInfo(\"extKeyUsage\");if(w===undefined){return w}var s=new Array();var v=b(this.hex,w.vidx);if(v===\"\"){return s}var t=n(v,0);for(var u=0;u<t.length;u++){s.push(p(g(v,t[u])))}return s};this.getExtSubjectAltName=function(t,v){if(t===undefined&&v===undefined){var u=this.getExtInfo(\"subjectAltName\");if(u===undefined){return undefined}t=b(this.hex,u.vidx);v=u.critical}var s={extname:\"subjectAltName\",array:[]};if(v){s.critical=true}s.array=this.getGeneralNames(t);return s};this.getExtIssuerAltName=function(t,v){if(t===undefined&&v===undefined){var u=this.getExtInfo(\"issuerAltName\");if(u===undefined){return undefined}t=b(this.hex,u.vidx);v=u.critical}var s={extname:\"issuerAltName\",array:[]};if(v){s.critical=true}s.array=this.getGeneralNames(t);return s};this.getGeneralNames=function(w){var u=n(w,0);var s=[];for(var v=0;v<u.length;v++){var t=this.getGeneralName(b(w,u[v]));if(t!==undefined){s.push(t)}}return s};this.getGeneralName=function(t){var s=t.substr(0,2);var v=g(t,0);var u=hextorstr(v);if(s==\"81\"){return{rfc822:u}}if(s==\"82\"){return{dns:u}}if(s==\"86\"){return{uri:u}}if(s==\"87\"){return{ip:hextoip(v)}}if(s==\"a4\"){return{dn:this.getX500Name(v)}}return undefined};this.getExtSubjectAltName2=function(){var w,z,y;var x=this.getExtInfo(\"subjectAltName\");if(x===undefined){return x}var s=new Array();var v=b(this.hex,x.vidx);var t=n(v,0);for(var u=0;u<t.length;u++){y=v.substr(t[u],2);w=g(v,t[u]);if(y===\"81\"){z=hextoutf8(w);s.push([\"MAIL\",z])}if(y===\"82\"){z=hextoutf8(w);s.push([\"DNS\",z])}if(y===\"84\"){z=X509.hex2dn(w,0);s.push([\"DN\",z])}if(y===\"86\"){z=hextoutf8(w);s.push([\"URI\",z])}if(y===\"87\"){z=hextoip(w);s.push([\"IP\",z])}}return s};this.getExtCRLDistributionPoints=function(w,y){if(w===undefined&&y===undefined){var x=this.getExtInfo(\"cRLDistributionPoints\");if(x===undefined){return undefined}w=b(this.hex,x.vidx);y=x.critical}var t={extname:\"cRLDistributionPoints\",array:[]};if(y){t.critical=true}var u=n(w,0);for(var v=0;v<u.length;v++){var s=b(w,u[v]);t.array.push(this.getDistributionPoint(s))}return t};this.getDistributionPoint=function(x){var u={};var v=n(x,0);for(var w=0;w<v.length;w++){var t=x.substr(v[w],2);var s=b(x,v[w]);if(t==\"a0\"){u.dpname=this.getDistributionPointName(s)}}return u};this.getDistributionPointName=function(x){var u={};var v=n(x,0);for(var w=0;w<v.length;w++){var t=x.substr(v[w],2);var s=b(x,v[w]);if(t==\"a0\"){u.full=this.getGeneralNames(s)}}return u};this.getExtCRLDistributionPointsURI=function(){var x=this.getExtInfo(\"cRLDistributionPoints\");if(x===undefined){return x}var s=new Array();var t=n(this.hex,x.vidx);for(var v=0;v<t.length;v++){try{var y=c(this.hex,t[v],[0,0,0],\"86\");var w=hextoutf8(y);s.push(w)}catch(u){}}return s};this.getExtAIAInfo=function(){var w=this.getExtInfo(\"authorityInfoAccess\");if(w===undefined){return w}var s={ocsp:[],caissuer:[]};var t=n(this.hex,w.vidx);for(var u=0;u<t.length;u++){var x=c(this.hex,t[u],[0],\"06\");var v=c(this.hex,t[u],[1],\"86\");if(x===\"2b06010505073001\"){s.ocsp.push(hextoutf8(v))}if(x===\"2b06010505073002\"){s.caissuer.push(hextoutf8(v))}}return s};this.getExtAuthorityInfoAccess=function(z,x){if(z===undefined&&x===undefined){var s=this.getExtInfo(\"authorityInfoAccess\");if(s===undefined){return undefined}z=b(this.hex,s.vidx);x=s.critical}var A={extname:\"authorityInfoAccess\",array:[]};if(x){A.critical=true}var y=n(z,0);for(var t=0;t<y.length;t++){var w=k(z,y[t],[0],\"06\");var u=c(z,y[t],[1],\"86\");var v=hextoutf8(u);if(w==\"2b06010505073001\"){A.array.push({ocsp:v})}else{if(w==\"2b06010505073002\"){A.array.push({caissuer:v})}else{throw new Error(\"unknown method: \"+w)}}}return A};this.getExtCertificatePolicies=function(w,z){if(w===undefined&&z===undefined){var y=this.getExtInfo(\"certificatePolicies\");if(y===undefined){return undefined}w=b(this.hex,y.vidx);z=y.critical}var s={extname:\"certificatePolicies\",array:[]};if(z){s.critical=true}var t=n(w,0);for(var u=0;u<t.length;u++){var x=b(w,t[u]);var v=this.getPolicyInformation(x);s.array.push(v)}return s};this.getPolicyInformation=function(w){var s={};var y=c(w,0,[0],\"06\");s.policyoid=p(y);var z=e(w,0,[1],\"30\");if(z!=-1){s.array=[];var t=n(w,z);for(var u=0;u<t.length;u++){var x=b(w,t[u]);var v=this.getPolicyQualifierInfo(x);s.array.push(v)}}return s};this.getPolicyQualifierInfo=function(t){var s={};var u=c(t,0,[0],\"06\");if(u===\"2b06010505070201\"){var w=k(t,0,[1],\"16\");s.cps=hextorstr(w)}else{if(u===\"2b06010505070202\"){var v=a(t,0,[1],\"30\");s.unotice=this.getUserNotice(v)}}return s};this.getUserNotice=function(w){var t={};var u=n(w,0);for(var v=0;v<u.length;v++){var s=b(w,u[v]);if(s.substr(0,2)!=\"30\"){t.exptext=this.getDisplayText(s)}}return t};this.getDisplayText=function(t){var u={\"0c\":\"utf8\",\"16\":\"ia5\",\"1a\":\"vis\",\"1e\":\"bmp\"};var s={};s.type=u[t.substr(0,2)];s.str=hextorstr(g(t,0));return s};this.getExtCRLNumber=function(t,u){var s={extname:\"cRLNumber\"};if(u){s.critical=true}if(t.substr(0,2)==\"02\"){s.num={hex:g(t,0)};return s}throw new Error(\"hExtV parse error: \"+t)};this.getExtCRLReason=function(t,u){var s={extname:\"cRLReason\"};if(u){s.critical=true}if(t.substr(0,2)==\"0a\"){s.code=parseInt(g(t,0),16);return s}throw new Error(\"hExtV parse error: \"+t)};this.getExtOcspNonce=function(t,v){var s={extname:\"ocspNonce\"};if(v){s.critical=true}var u=g(t,0);s.hex=u;return s};this.getExtOcspNoCheck=function(t,u){var s={extname:\"ocspNoCheck\"};if(u){s.critical=true}return s};this.getExtAdobeTimeStamp=function(v,y){if(v===undefined&&y===undefined){var x=this.getExtInfo(\"adobeTimeStamp\");if(x===undefined){return undefined}v=b(this.hex,x.vidx);y=x.critical}var s={extname:\"adobeTimeStamp\"};if(y){s.critical=true}var u=n(v,0);if(u.length>1){var z=b(v,u[1]);var t=this.getGeneralName(z);if(t.uri!=undefined){s.uri=t.uri}}if(u.length>2){var w=b(v,u[2]);if(w==\"0101ff\"){s.reqauth=true}if(w==\"010100\"){s.reqauth=false}}return s};this.getX500NameRule=function(s){var z=true;var D=true;var C=false;var t=\"\";var w=\"\";var F=null;var A=[];for(var v=0;v<s.length;v++){var x=s[v];for(var u=0;u<x.length;u++){A.push(x[u])}}for(var v=0;v<A.length;v++){var E=A[v];var G=E.ds;var B=E.value;var y=E.type;t+=\":\"+G;if(G!=\"prn\"&&G!=\"utf8\"&&G!=\"ia5\"){return\"mixed\"}if(G==\"ia5\"){if(y!=\"CN\"){return\"mixed\"}else{if(!KJUR.lang.String.isMail(B)){return\"mixed\"}else{continue}}}if(y==\"C\"){if(G==\"prn\"){continue}else{return\"mixed\"}}w+=\":\"+G;if(F==null){F=G}else{if(F!==G){return\"mixed\"}}}if(F==null){return\"prn\"}else{return F}};this.getX500Name=function(v){var t=this.getX500NameArray(v);var u=this.dnarraytostr(t);return{array:t,str:u}};this.getX500NameArray=function(v){var s=[];var t=n(v,0);for(var u=0;u<t.length;u++){s.push(this.getRDN(b(v,t[u])))}return s};this.getRDN=function(v){var s=[];var t=n(v,0);for(var u=0;u<t.length;u++){s.push(this.getAttrTypeAndValue(b(v,t[u])))}return s};this.getAttrTypeAndValue=function(u){var s={type:null,value:null,ds:null};var t=n(u,0);var x=c(u,t[0],[],\"06\");var w=c(u,t[1],[]);var v=KJUR.asn1.ASN1Util.oidHexToInt(x);s.type=KJUR.asn1.x509.OID.oid2atype(v);s.value=hextorstr(w);s.ds=this.HEX2STAG[u.substr(t[1],2)];return s};this.readCertPEM=function(s){this.readCertHex(r(s))};this.readCertHex=function(s){this.hex=s;this.getVersion();try{h(this.hex,0,[0,7],\"a3\");this.parseExt()}catch(t){}};this.getParam=function(){var s={};s.version=this.getVersion();s.serial={hex:this.getSerialNumberHex()};s.sigalg=this.getSignatureAlgorithmField();s.issuer=this.getIssuer();s.notbefore=this.getNotBefore();s.notafter=this.getNotAfter();s.subject=this.getSubject();s.sbjpubkey=hextopem(this.getPublicKeyHex(),\"PUBLIC KEY\");if(this.aExtInfo.length>0){s.ext=this.getExtParamArray()}s.sighex=this.getSignatureValueHex();return s};this.getExtParamArray=function(t){if(t==undefined){var v=e(this.hex,0,[0,\"[3]\"]);if(v!=-1){t=l(this.hex,0,[0,\"[3]\",0],\"30\")}}var s=[];var u=n(t,0);for(var w=0;w<u.length;w++){var y=b(t,u[w]);var x=this.getExtParam(y);if(x!=null){s.push(x)}}return s};this.getExtParam=function(t){var A={};var v=n(t,0);var w=v.length;if(w!=2&&w!=3){throw new Error(\"wrong number elements in Extension: \"+w+\" \"+t)}var u=m(c(t,0,[0],\"06\"));var y=false;if(w==3&&a(t,0,[1])==\"0101ff\"){y=true}var z=a(t,0,[w-1,0]);var x=undefined;if(u==\"2.5.29.14\"){x=this.getExtSubjectKeyIdentifier(z,y)}else{if(u==\"2.5.29.15\"){x=this.getExtKeyUsage(z,y)}else{if(u==\"2.5.29.17\"){x=this.getExtSubjectAltName(z,y)}else{if(u==\"2.5.29.18\"){x=this.getExtIssuerAltName(z,y)}else{if(u==\"2.5.29.19\"){x=this.getExtBasicConstraints(z,y)}else{if(u==\"2.5.29.31\"){x=this.getExtCRLDistributionPoints(z,y)}else{if(u==\"2.5.29.32\"){x=this.getExtCertificatePolicies(z,y)}else{if(u==\"2.5.29.35\"){x=this.getExtAuthorityKeyIdentifier(z,y)}else{if(u==\"2.5.29.37\"){x=this.getExtExtKeyUsage(z,y)}else{if(u==\"1.3.6.1.5.5.7.1.1\"){x=this.getExtAuthorityInfoAccess(z,y)}else{if(u==\"2.5.29.20\"){x=this.getExtCRLNumber(z,y)}else{if(u==\"2.5.29.21\"){x=this.getExtCRLReason(z,y)}else{if(u==\"1.3.6.1.5.5.7.48.1.2\"){x=this.getExtOcspNonce(z,y)}else{if(u==\"1.3.6.1.5.5.7.48.1.5\"){x=this.getExtOcspNoCheck(z,y)}else{if(u==\"1.2.840.113583.1.1.9.1\"){x=this.getExtAdobeTimeStamp(z,y)}}}}}}}}}}}}}}}if(x!=undefined){return x}var s={extname:u,extn:z};if(y){s.critical=true}return s};this.findExt=function(t,u){for(var s=0;s<t.length;s++){if(t[s].extname==u){return t[s]}}return null};this.updateExtCDPFullURI=function(w,s){var v=this.findExt(w,\"cRLDistributionPoints\");if(v==null){return}if(v.array==undefined){return}var y=v.array;for(var u=0;u<y.length;u++){if(y[u].dpname==undefined){continue}if(y[u].dpname.full==undefined){continue}var z=y[u].dpname.full;for(var t=0;t<z.length;t++){var x=z[u];if(x.uri==undefined){continue}x.uri=s}}};this.updateExtAIAOCSP=function(w,t){var v=this.findExt(w,\"authorityInfoAccess\");if(v==null){return}if(v.array==undefined){return}var s=v.array;for(var u=0;u<s.length;u++){if(s[u].ocsp!=undefined){s[u].ocsp=t}}};this.updateExtAIACAIssuer=function(w,t){var v=this.findExt(w,\"authorityInfoAccess\");if(v==null){return}if(v.array==undefined){return}var s=v.array;for(var u=0;u<s.length;u++){if(s[u].caissuer!=undefined){s[u].caissuer=t}}};this.dnarraytostr=function(u){function s(v){return v.map(function(w){return t(w)}).join(\"+\")}function t(v){return v.type+\"=\"+v.value}return\"/\"+u.map(function(v){return s(v)}).join(\"/\")};this.getInfo=function(){var u=function(M){var L=JSON.stringify(M.array).replace(/[\\[\\]\\{\\}\\\"]/g,\"\");return L};var A=function(R){var P=\"\";var L=R.array;for(var O=0;O<L.length;O++){var Q=L[O];P+=\" policy oid: \"+Q.policyoid+\"\\n\";if(Q.array===undefined){continue}for(var N=0;N<Q.array.length;N++){var M=Q.array[N];if(M.cps!==undefined){P+=\" cps: \"+M.cps+\"\\n\"}}}return P};var D=function(P){var O=\"\";var L=P.array;for(var N=0;N<L.length;N++){var Q=L[N];try{if(Q.dpname.full[0].uri!==undefined){O+=\" \"+Q.dpname.full[0].uri+\"\\n\"}}catch(M){}try{if(Q.dname.full[0].dn.hex!==undefined){O+=\" \"+X509.hex2dn(Q.dpname.full[0].dn.hex)+\"\\n\"}}catch(M){}}return O};var B=function(P){var O=\"\";var L=P.array;for(var M=0;M<L.length;M++){var N=L[M];if(N.caissuer!==undefined){O+=\" caissuer: \"+N.caissuer+\"\\n\"}if(N.ocsp!==undefined){O+=\" ocsp: \"+N.ocsp+\"\\n\"}}return O};var v=X509;var F,E,K;F=\"Basic Fields\\n\";F+=\" serial number: \"+this.getSerialNumberHex()+\"\\n\";F+=\" signature algorithm: \"+this.getSignatureAlgorithmField()+\"\\n\";F+=\" issuer: \"+this.getIssuerString()+\"\\n\";F+=\" notBefore: \"+this.getNotBefore()+\"\\n\";F+=\" notAfter: \"+this.getNotAfter()+\"\\n\";F+=\" subject: \"+this.getSubjectString()+\"\\n\";F+=\" subject public key info: \\n\";E=this.getPublicKey();F+=\" key algorithm: \"+E.type+\"\\n\";if(E.type===\"RSA\"){F+=\" n=\"+hextoposhex(E.n.toString(16)).substr(0,16)+\"...\\n\";F+=\" e=\"+hextoposhex(E.e.toString(16))+\"\\n\"}K=this.aExtInfo;if(K!==undefined&&K!==null){F+=\"X509v3 Extensions:\\n\";for(var H=0;H<K.length;H++){var J=K[H];var t=KJUR.asn1.x509.OID.oid2name(J.oid);if(t===\"\"){t=J.oid}var G=\"\";if(J.critical===true){G=\"CRITICAL\"}F+=\" \"+t+\" \"+G+\":\\n\";if(t===\"basicConstraints\"){var w=this.getExtBasicConstraints();if(w.cA===undefined){F+=\" {}\\n\"}else{F+=\" cA=true\";if(w.pathLen!==undefined){F+=\", pathLen=\"+w.pathLen}F+=\"\\n\"}}else{if(t===\"keyUsage\"){F+=\" \"+this.getExtKeyUsageString()+\"\\n\"}else{if(t===\"subjectKeyIdentifier\"){F+=\" \"+this.getExtSubjectKeyIdentifier().kid.hex+\"\\n\"}else{if(t===\"authorityKeyIdentifier\"){var x=this.getExtAuthorityKeyIdentifier();if(x.kid!==undefined){F+=\" kid=\"+x.kid.hex+\"\\n\"}}else{if(t===\"extKeyUsage\"){var I=this.getExtExtKeyUsage().array;F+=\" \"+I.join(\", \")+\"\\n\"}else{if(t===\"subjectAltName\"){var y=u(this.getExtSubjectAltName());F+=\" \"+y+\"\\n\"}else{if(t===\"cRLDistributionPoints\"){var C=this.getExtCRLDistributionPoints();F+=D(C)}else{if(t===\"authorityInfoAccess\"){var z=this.getExtAuthorityInfoAccess();F+=B(z)}else{if(t===\"certificatePolicies\"){F+=A(this.getExtCertificatePolicies())}}}}}}}}}}}F+=\"signature algorithm: \"+this.getSignatureAlgorithmName()+\"\\n\";F+=\"signature: \"+this.getSignatureValueHex().substr(0,16)+\"...\\n\";return F};if(typeof q==\"string\"){if(q.indexOf(\"-----BEGIN\")!=-1){this.readCertPEM(q)}else{if(KJUR.lang.String.isHex(q)){this.readCertHex(q)}}}}X509.hex2dn=function(f,b){if(b===undefined){b=0}if(f.substr(b,2)!==\"30\"){throw new Error(\"malformed DN\")}var c=new Array();var d=ASN1HEX.getChildIdx(f,b);for(var e=0;e<d.length;e++){c.push(X509.hex2rdn(f,d[e]))}c=c.map(function(a){return a.replace(\"/\",\"\\\\/\")});return\"/\"+c.join(\"/\")};X509.hex2rdn=function(f,b){if(b===undefined){b=0}if(f.substr(b,2)!==\"31\"){throw new Error(\"malformed RDN\")}var c=new Array();var d=ASN1HEX.getChildIdx(f,b);for(var e=0;e<d.length;e++){c.push(X509.hex2attrTypeValue(f,d[e]))}c=c.map(function(a){return a.replace(\"+\",\"\\\\+\")});return c.join(\"+\")};X509.hex2attrTypeValue=function(d,i){var j=ASN1HEX;var h=j.getV;if(i===undefined){i=0}if(d.substr(i,2)!==\"30\"){throw new Error(\"malformed attribute type and value\")}var g=j.getChildIdx(d,i);if(g.length!==2||d.substr(g[0],2)!==\"06\"){\"malformed attribute type and value\"}var b=h(d,g[0]);var f=KJUR.asn1.ASN1Util.oidHexToInt(b);var e=KJUR.asn1.x509.OID.oid2atype(f);var a=h(d,g[1]);var c=hextorstr(a);return e+\"=\"+c};X509.getPublicKeyFromCertHex=function(b){var a=new X509();a.readCertHex(b);return a.getPublicKey()};X509.getPublicKeyFromCertPEM=function(b){var a=new X509();a.readCertPEM(b);return a.getPublicKey()};X509.getPublicKeyInfoPropOfCertPEM=function(c){var e=ASN1HEX;var g=e.getVbyList;var b={};var a,f,d;b.algparam=null;a=new X509();a.readCertPEM(c);f=a.getPublicKeyHex();b.keyhex=g(f,0,[1],\"03\").substr(2);b.algoid=g(f,0,[0,0],\"06\");if(b.algoid===\"2a8648ce3d0201\"){b.algparam=g(f,0,[0,1],\"06\")}return b};X509.KEYUSAGE_NAME=[\"digitalSignature\",\"nonRepudiation\",\"keyEncipherment\",\"dataEncipherment\",\"keyAgreement\",\"keyCertSign\",\"cRLSign\",\"encipherOnly\",\"decipherOnly\"];\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.jws==\"undefined\"||!KJUR.jws){KJUR.jws={}}KJUR.jws.JWS=function(){var b=KJUR,a=b.jws.JWS,c=a.isSafeJSONString;this.parseJWS=function(g,j){if((this.parsedJWS!==undefined)&&(j||(this.parsedJWS.sigvalH!==undefined))){return}var i=g.match(/^([^.]+)\\.([^.]+)\\.([^.]+)$/);if(i==null){throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\"}var k=i[1];var e=i[2];var l=i[3];var n=k+\".\"+e;this.parsedJWS={};this.parsedJWS.headB64U=k;this.parsedJWS.payloadB64U=e;this.parsedJWS.sigvalB64U=l;this.parsedJWS.si=n;if(!j){var h=b64utohex(l);var f=parseBigInt(h,16);this.parsedJWS.sigvalH=h;this.parsedJWS.sigvalBI=f}var d=b64utoutf8(k);var m=b64utoutf8(e);this.parsedJWS.headS=d;this.parsedJWS.payloadS=m;if(!c(d,this.parsedJWS,\"headP\")){throw\"malformed JSON string for JWS Head: \"+d}}};KJUR.jws.JWS.sign=function(j,w,z,A,a){var x=KJUR,n=x.jws,r=n.JWS,h=r.readSafeJSONString,q=r.isSafeJSONString,d=x.crypto,l=d.ECDSA,p=d.Mac,c=d.Signature,u=JSON;var t,k,o;if(typeof w!=\"string\"&&typeof w!=\"object\"){throw\"spHeader must be JSON string or object: \"+w}if(typeof w==\"object\"){k=w;t=u.stringify(k)}if(typeof w==\"string\"){t=w;if(!q(t)){throw\"JWS Head is not safe JSON string: \"+t}k=h(t)}o=z;if(typeof z==\"object\"){o=u.stringify(z)}if((j==\"\"||j==null)&&k.alg!==undefined){j=k.alg}if((j!=\"\"&&j!=null)&&k.alg===undefined){k.alg=j;t=u.stringify(k)}if(j!==k.alg){throw\"alg and sHeader.alg doesn't match: \"+j+\"!=\"+k.alg}var s=null;if(r.jwsalg2sigalg[j]===undefined){throw\"unsupported alg name: \"+j}else{s=r.jwsalg2sigalg[j]}var e=utf8tob64u(t);var m=utf8tob64u(o);var b=e+\".\"+m;var y=\"\";if(s.substr(0,4)==\"Hmac\"){if(A===undefined){throw\"mac key shall be specified for HS* alg\"}var i=new p({alg:s,prov:\"cryptojs\",pass:A});i.updateString(b);y=i.doFinal()}else{if(s.indexOf(\"withECDSA\")!=-1){var f=new c({alg:s});f.init(A,a);f.updateString(b);var g=f.sign();y=KJUR.crypto.ECDSA.asn1SigToConcatSig(g)}else{if(s!=\"none\"){var f=new c({alg:s});f.init(A,a);f.updateString(b);y=f.sign()}}}var v=hextob64u(y);return b+\".\"+v};KJUR.jws.JWS.verify=function(w,B,n){var x=KJUR,q=x.jws,t=q.JWS,i=t.readSafeJSONString,e=x.crypto,p=e.ECDSA,s=e.Mac,d=e.Signature,m;if(typeof RSAKey!==undefined){m=RSAKey}var y=w.split(\".\");if(y.length!==3){return false}var f=y[0];var r=y[1];var c=f+\".\"+r;var A=b64utohex(y[2]);var l=i(b64utoutf8(y[0]));var k=null;var z=null;if(l.alg===undefined){throw\"algorithm not specified in header\"}else{k=l.alg;z=k.substr(0,2)}if(n!=null&&Object.prototype.toString.call(n)===\"[object Array]\"&&n.length>0){var b=\":\"+n.join(\":\")+\":\";if(b.indexOf(\":\"+k+\":\")==-1){throw\"algorithm '\"+k+\"' not accepted in the list\"}}if(k!=\"none\"&&B===null){throw\"key shall be specified to verify.\"}if(typeof B==\"string\"&&B.indexOf(\"-----BEGIN \")!=-1){B=KEYUTIL.getKey(B)}if(z==\"RS\"||z==\"PS\"){if(!(B instanceof m)){throw\"key shall be a RSAKey obj for RS* and PS* algs\"}}if(z==\"ES\"){if(!(B instanceof p)){throw\"key shall be a ECDSA obj for ES* algs\"}}if(k==\"none\"){}var u=null;if(t.jwsalg2sigalg[l.alg]===undefined){throw\"unsupported alg name: \"+k}else{u=t.jwsalg2sigalg[k]}if(u==\"none\"){throw\"not supported\"}else{if(u.substr(0,4)==\"Hmac\"){var o=null;if(B===undefined){throw\"hexadecimal key shall be specified for HMAC\"}var j=new s({alg:u,pass:B});j.updateString(c);o=j.doFinal();return A==o}else{if(u.indexOf(\"withECDSA\")!=-1){var h=null;try{h=p.concatSigToASN1Sig(A)}catch(v){return false}var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(h)}else{var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(A)}}}};KJUR.jws.JWS.parse=function(g){var c=g.split(\".\");var b={};var f,e,d;if(c.length!=2&&c.length!=3){throw\"malformed sJWS: wrong number of '.' splitted elements\"}f=c[0];e=c[1];if(c.length==3){d=c[2]}b.headerObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(f));b.payloadObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(e));b.headerPP=JSON.stringify(b.headerObj,null,\" \");if(b.payloadObj==null){b.payloadPP=b64utoutf8(e)}else{b.payloadPP=JSON.stringify(b.payloadObj,null,\" \")}if(d!==undefined){b.sigHex=b64utohex(d)}return b};KJUR.jws.JWS.verifyJWT=function(e,l,r){var d=KJUR,j=d.jws,o=j.JWS,n=o.readSafeJSONString,p=o.inArray,f=o.includedArray;var k=e.split(\".\");var c=k[0];var i=k[1];var q=c+\".\"+i;var m=b64utohex(k[2]);var h=n(b64utoutf8(c));var g=n(b64utoutf8(i));if(h.alg===undefined){return false}if(r.alg===undefined){throw\"acceptField.alg shall be specified\"}if(!p(h.alg,r.alg)){return false}if(g.iss!==undefined&&typeof r.iss===\"object\"){if(!p(g.iss,r.iss)){return false}}if(g.sub!==undefined&&typeof r.sub===\"object\"){if(!p(g.sub,r.sub)){return false}}if(g.aud!==undefined&&typeof r.aud===\"object\"){if(typeof g.aud==\"string\"){if(!p(g.aud,r.aud)){return false}}else{if(typeof g.aud==\"object\"){if(!f(g.aud,r.aud)){return false}}}}var b=j.IntDate.getNow();if(r.verifyAt!==undefined&&typeof r.verifyAt===\"number\"){b=r.verifyAt}if(r.gracePeriod===undefined||typeof r.gracePeriod!==\"number\"){r.gracePeriod=0}if(g.exp!==undefined&&typeof g.exp==\"number\"){if(g.exp+r.gracePeriod<b){return false}}if(g.nbf!==undefined&&typeof g.nbf==\"number\"){if(b<g.nbf-r.gracePeriod){return false}}if(g.iat!==undefined&&typeof g.iat==\"number\"){if(b<g.iat-r.gracePeriod){return false}}if(g.jti!==undefined&&r.jti!==undefined){if(g.jti!==r.jti){return false}}if(!o.verify(e,l,r.alg)){return false}return true};KJUR.jws.JWS.includedArray=function(b,a){var c=KJUR.jws.JWS.inArray;if(b===null){return false}if(typeof b!==\"object\"){return false}if(typeof b.length!==\"number\"){return false}for(var d=0;d<b.length;d++){if(!c(b[d],a)){return false}}return true};KJUR.jws.JWS.inArray=function(d,b){if(b===null){return false}if(typeof b!==\"object\"){return false}if(typeof b.length!==\"number\"){return false}for(var c=0;c<b.length;c++){if(b[c]==d){return true}}return false};KJUR.jws.JWS.jwsalg2sigalg={HS256:\"HmacSHA256\",HS384:\"HmacSHA384\",HS512:\"HmacSHA512\",RS256:\"SHA256withRSA\",RS384:\"SHA384withRSA\",RS512:\"SHA512withRSA\",ES256:\"SHA256withECDSA\",ES384:\"SHA384withECDSA\",PS256:\"SHA256withRSAandMGF1\",PS384:\"SHA384withRSAandMGF1\",PS512:\"SHA512withRSAandMGF1\",none:\"none\",};KJUR.jws.JWS.isSafeJSONString=function(c,b,d){var e=null;try{e=jsonParse(c);if(typeof e!=\"object\"){return 0}if(e.constructor===Array){return 0}if(b){b[d]=e}return 1}catch(a){return 0}};KJUR.jws.JWS.readSafeJSONString=function(b){var c=null;try{c=jsonParse(b);if(typeof c!=\"object\"){return null}if(c.constructor===Array){return null}return c}catch(a){return null}};KJUR.jws.JWS.getEncodedSignatureValueFromJWS=function(b){var a=b.match(/^[^.]+\\.[^.]+\\.([^.]+)$/);if(a==null){throw\"JWS signature is not a form of 'Head.Payload.SigValue'.\"}return a[1]};KJUR.jws.JWS.getJWKthumbprint=function(d){if(d.kty!==\"RSA\"&&d.kty!==\"EC\"&&d.kty!==\"oct\"){throw\"unsupported algorithm for JWK Thumprint\"}var a=\"{\";if(d.kty===\"RSA\"){if(typeof d.n!=\"string\"||typeof d.e!=\"string\"){throw\"wrong n and e value for RSA key\"}a+='\"e\":\"'+d.e+'\",';a+='\"kty\":\"'+d.kty+'\",';a+='\"n\":\"'+d.n+'\"}'}else{if(d.kty===\"EC\"){if(typeof d.crv!=\"string\"||typeof d.x!=\"string\"||typeof d.y!=\"string\"){throw\"wrong crv, x and y value for EC key\"}a+='\"crv\":\"'+d.crv+'\",';a+='\"kty\":\"'+d.kty+'\",';a+='\"x\":\"'+d.x+'\",';a+='\"y\":\"'+d.y+'\"}'}else{if(d.kty===\"oct\"){if(typeof d.k!=\"string\"){throw\"wrong k value for oct(symmetric) key\"}a+='\"kty\":\"'+d.kty+'\",';a+='\"k\":\"'+d.k+'\"}'}}}var b=rstrtohex(a);var c=KJUR.crypto.Util.hashHex(b,\"sha256\");var e=hextob64u(c);return e};KJUR.jws.IntDate={};KJUR.jws.IntDate.get=function(c){var b=KJUR.jws.IntDate,d=b.getNow,a=b.getZulu;if(c==\"now\"){return d()}else{if(c==\"now + 1hour\"){return d()+60*60}else{if(c==\"now + 1day\"){return d()+60*60*24}else{if(c==\"now + 1month\"){return d()+60*60*24*30}else{if(c==\"now + 1year\"){return d()+60*60*24*365}else{if(c.match(/Z$/)){return a(c)}else{if(c.match(/^[0-9]+$/)){return parseInt(c)}}}}}}}throw\"unsupported format: \"+c};KJUR.jws.IntDate.getZulu=function(a){return zulutosec(a)};KJUR.jws.IntDate.getNow=function(){var a=~~(new Date()/1000);return a};KJUR.jws.IntDate.intDate2UTCString=function(a){var b=new Date(a*1000);return b.toUTCString()};KJUR.jws.IntDate.intDate2Zulu=function(e){var i=new Date(e*1000),h=(\"0000\"+i.getUTCFullYear()).slice(-4),g=(\"00\"+(i.getUTCMonth()+1)).slice(-2),b=(\"00\"+i.getUTCDate()).slice(-2),a=(\"00\"+i.getUTCHours()).slice(-2),c=(\"00\"+i.getUTCMinutes()).slice(-2),f=(\"00\"+i.getUTCSeconds()).slice(-2);return h+g+b+a+c+f+\"Z\"};\nexport { SecureRandom };\r\nexport { rng_seed_time };\r\n\r\nexport { BigInteger };\r\nexport { RSAKey };\r\nexport const { EDSA } = KJUR.crypto;\r\nexport const { DSA } = KJUR.crypto;\r\nexport const { Signature } = KJUR.crypto;\r\nexport const { MessageDigest } = KJUR.crypto;\r\nexport const { Mac } = KJUR.crypto;\r\nexport const { Cipher } = KJUR.crypto;\r\nexport { KEYUTIL };\r\nexport { ASN1HEX };\r\nexport { X509 };\r\nexport { CryptoJS };\r\n\r\n// ext/base64.js\r\nexport { b64tohex };\r\nexport { b64toBA };\r\n\r\n// base64x.js\r\nexport { stoBA };\r\nexport { BAtos };\r\nexport { BAtohex };\r\nexport { stohex };\r\nexport { stob64 };\r\nexport { stob64u };\r\nexport { b64utos };\r\nexport { b64tob64u };\r\nexport { b64utob64 };\r\nexport { hex2b64 };\r\nexport { hextob64u };\r\nexport { b64utohex };\r\nexport { utf8tob64u };\r\nexport { b64utoutf8 };\r\nexport { utf8tob64 };\r\nexport { b64toutf8 };\r\nexport { utf8tohex };\r\nexport { hextoutf8 };\r\nexport { hextorstr };\r\nexport { rstrtohex };\r\nexport { hextob64 };\r\nexport { hextob64nl };\r\nexport { b64nltohex };\r\nexport { hextopem };\r\nexport { pemtohex };\r\nexport { hextoArrayBuffer };\r\nexport { ArrayBuffertohex };\r\nexport { zulutomsec };\r\nexport { zulutosec };\r\nexport { zulutodate };\r\nexport { datetozulu };\r\nexport { uricmptohex };\r\nexport { hextouricmp };\r\nexport { ipv6tohex };\r\nexport { hextoipv6 };\r\nexport { hextoip };\r\nexport { iptohex };\r\nexport { encodeURIComponentAll };\r\nexport { newline_toUnix };\r\nexport { newline_toDos };\r\nexport { hextoposhex };\r\nexport { intarystrtohex };\r\nexport { strdiffidx };\r\n\r\n// name spaces\r\nexport { KJUR };\r\nconst _crypto = KJUR.crypto;\r\nexport { _crypto as crypto };\r\nexport const { asn1 } = KJUR;\r\nexport const { jws } = KJUR;\r\nexport const { lang } = KJUR;\r\n\r\n\r\n","import { jws, KeyUtil, X509, crypto, hextob64u, b64tohex, AllowedSigningAlgs } from './crypto/jsrsasign';\r\nimport getJoseUtil from './JoseUtilImpl';\r\n\r\nexport const JoseUtil = getJoseUtil({ jws, KeyUtil, X509, crypto, hextob64u, b64tohex, AllowedSigningAlgs });\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport default function getJoseUtil({ jws, KeyUtil, X509, crypto, hextob64u, b64tohex, AllowedSigningAlgs }) {\r\n return class JoseUtil {\r\n\r\n static parseJwt(jwt) {\r\n Log.debug(\"JoseUtil.parseJwt\");\r\n try {\r\n var token = jws.JWS.parse(jwt);\r\n return {\r\n header: token.headerObj,\r\n payload: token.payloadObj\r\n }\r\n } catch (e) {\r\n Log.error(e);\r\n }\r\n }\r\n\r\n static validateJwt(jwt, key, issuer, audience, clockSkew, now, timeInsensitive) {\r\n Log.debug(\"JoseUtil.validateJwt\");\r\n\r\n try {\r\n if (key.kty === \"RSA\") {\r\n if (key.e && key.n) {\r\n key = KeyUtil.getKey(key);\r\n } else if (key.x5c && key.x5c.length) {\r\n var hex = b64tohex(key.x5c[0]);\r\n key = X509.getPublicKeyFromCertHex(hex);\r\n } else {\r\n Log.error(\"JoseUtil.validateJwt: RSA key missing key material\", key);\r\n return Promise.reject(new Error(\"RSA key missing key material\"));\r\n }\r\n } else if (key.kty === \"EC\") {\r\n if (key.crv && key.x && key.y) {\r\n key = KeyUtil.getKey(key);\r\n } else {\r\n Log.error(\"JoseUtil.validateJwt: EC key missing key material\", key);\r\n return Promise.reject(new Error(\"EC key missing key material\"));\r\n }\r\n } else {\r\n Log.error(\"JoseUtil.validateJwt: Unsupported key type\", key && key.kty);\r\n return Promise.reject(new Error(\"Unsupported key type: \" + key && key.kty));\r\n }\r\n\r\n return JoseUtil._validateJwt(jwt, key, issuer, audience, clockSkew, now, timeInsensitive);\r\n } catch (e) {\r\n Log.error(e && e.message || e);\r\n return Promise.reject(\"JWT validation failed\");\r\n }\r\n }\r\n\r\n static validateJwtAttributes(jwt, issuer, audience, clockSkew, now, timeInsensitive) {\r\n if (!clockSkew) {\r\n clockSkew = 0;\r\n }\r\n\r\n if (!now) {\r\n now = parseInt(Date.now() / 1000);\r\n }\r\n\r\n var payload = JoseUtil.parseJwt(jwt).payload;\r\n\r\n if (!payload.iss) {\r\n Log.error(\"JoseUtil._validateJwt: issuer was not provided\");\r\n return Promise.reject(new Error(\"issuer was not provided\"));\r\n }\r\n if (payload.iss !== issuer) {\r\n Log.error(\"JoseUtil._validateJwt: Invalid issuer in token\", payload.iss);\r\n return Promise.reject(new Error(\"Invalid issuer in token: \" + payload.iss));\r\n }\r\n\r\n if (!payload.aud) {\r\n Log.error(\"JoseUtil._validateJwt: aud was not provided\");\r\n return Promise.reject(new Error(\"aud was not provided\"));\r\n }\r\n var validAudience = payload.aud === audience || (Array.isArray(payload.aud) && payload.aud.indexOf(audience) >= 0);\r\n if (!validAudience) {\r\n Log.error(\"JoseUtil._validateJwt: Invalid audience in token\", payload.aud);\r\n return Promise.reject(new Error(\"Invalid audience in token: \" + payload.aud));\r\n }\r\n if (payload.azp && payload.azp !== audience) {\r\n Log.error(\"JoseUtil._validateJwt: Invalid azp in token\", payload.azp);\r\n return Promise.reject(new Error(\"Invalid azp in token: \" + payload.azp));\r\n }\r\n\r\n if (!timeInsensitive) {\r\n var lowerNow = now + clockSkew;\r\n var upperNow = now - clockSkew;\r\n\r\n if (!payload.iat) {\r\n Log.error(\"JoseUtil._validateJwt: iat was not provided\");\r\n return Promise.reject(new Error(\"iat was not provided\"));\r\n }\r\n if (lowerNow < payload.iat) {\r\n Log.error(\"JoseUtil._validateJwt: iat is in the future\", payload.iat);\r\n return Promise.reject(new Error(\"iat is in the future: \" + payload.iat));\r\n }\r\n\r\n if (payload.nbf && lowerNow < payload.nbf) {\r\n Log.error(\"JoseUtil._validateJwt: nbf is in the future\", payload.nbf);\r\n return Promise.reject(new Error(\"nbf is in the future: \" + payload.nbf));\r\n }\r\n\r\n if (!payload.exp) {\r\n Log.error(\"JoseUtil._validateJwt: exp was not provided\");\r\n return Promise.reject(new Error(\"exp was not provided\"));\r\n }\r\n if (payload.exp < upperNow) {\r\n Log.error(\"JoseUtil._validateJwt: exp is in the past\", payload.exp);\r\n return Promise.reject(new Error(\"exp is in the past:\" + payload.exp));\r\n }\r\n }\r\n\r\n return Promise.resolve(payload);\r\n }\r\n\r\n static _validateJwt(jwt, key, issuer, audience, clockSkew, now, timeInsensitive) {\r\n\r\n return JoseUtil.validateJwtAttributes(jwt, issuer, audience, clockSkew, now, timeInsensitive).then(payload => {\r\n try {\r\n if (!jws.JWS.verify(jwt, key, AllowedSigningAlgs)) {\r\n Log.error(\"JoseUtil._validateJwt: signature validation failed\");\r\n return Promise.reject(new Error(\"signature validation failed\"));\r\n }\r\n\r\n return payload;\r\n } catch (e) {\r\n Log.error(e && e.message || e);\r\n return Promise.reject(new Error(\"signature validation failed\"));\r\n }\r\n });\r\n }\r\n\r\n static hashString(value, alg) {\r\n try {\r\n return crypto.Util.hashString(value, alg);\r\n } catch (e) {\r\n Log.error(e);\r\n }\r\n }\r\n\r\n static hexToBase64Url(value) {\r\n try {\r\n return hextob64u(value);\r\n } catch (e) {\r\n Log.error(e);\r\n }\r\n }\r\n }\r\n}\r\n","import { jws, KEYUTIL as KeyUtil, X509, crypto, hextob64u, b64tohex } from '../../jsrsasign/dist/jsrsasign.js';\r\n\r\nconst AllowedSigningAlgs = ['RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512', 'ES256', 'ES384', 'ES512'];\r\n\r\nexport {\r\n jws,\r\n KeyUtil,\r\n X509,\r\n crypto,\r\n hextob64u,\r\n b64tohex,\r\n AllowedSigningAlgs\r\n};\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { JsonService } from './JsonService.js';\r\nimport { MetadataService } from './MetadataService.js';\r\nimport { Log } from './Log.js';\r\nimport { JoseUtil } from './JoseUtil.js';\r\n\r\nexport class UserInfoService {\r\n constructor(\r\n settings, \r\n JsonServiceCtor = JsonService, \r\n MetadataServiceCtor = MetadataService, \r\n joseUtil = JoseUtil\r\n ) {\r\n if (!settings) {\r\n Log.error(\"UserInfoService.ctor: No settings passed\");\r\n throw new Error(\"settings\");\r\n }\r\n\r\n this._settings = settings;\r\n this._jsonService = new JsonServiceCtor(undefined, undefined, this._getClaimsFromJwt.bind(this));\r\n this._metadataService = new MetadataServiceCtor(this._settings);\r\n this._joseUtil = joseUtil;\r\n }\r\n\r\n getClaims(token) {\r\n if (!token) {\r\n Log.error(\"UserInfoService.getClaims: No token passed\");\r\n return Promise.reject(new Error(\"A token is required\"));\r\n }\r\n\r\n return this._metadataService.getUserInfoEndpoint().then(url => {\r\n Log.debug(\"UserInfoService.getClaims: received userinfo url\", url);\r\n\r\n return this._jsonService.getJson(url, token).then(claims => {\r\n Log.debug(\"UserInfoService.getClaims: claims received\", claims);\r\n return claims;\r\n });\r\n });\r\n }\r\n\r\n _getClaimsFromJwt(req) {\r\n try {\r\n let jwt = this._joseUtil.parseJwt(req.responseText);\r\n if (!jwt || !jwt.header || !jwt.payload) {\r\n Log.error(\"UserInfoService._getClaimsFromJwt: Failed to parse JWT\", jwt);\r\n return Promise.reject(new Error(\"Failed to parse id_token\"));\r\n }\r\n\r\n var kid = jwt.header.kid;\r\n\r\n let issuerPromise;\r\n switch (this._settings.userInfoJwtIssuer) {\r\n case 'OP':\r\n issuerPromise = this._metadataService.getIssuer();\r\n break;\r\n case 'ANY':\r\n issuerPromise = Promise.resolve(jwt.payload.iss);\r\n break;\r\n default:\r\n issuerPromise = Promise.resolve(this._settings.userInfoJwtIssuer);\r\n break;\r\n }\r\n\r\n return issuerPromise.then(issuer => {\r\n Log.debug(\"UserInfoService._getClaimsFromJwt: Received issuer:\" + issuer);\r\n\r\n return this._metadataService.getSigningKeys().then(keys => {\r\n if (!keys) {\r\n Log.error(\"UserInfoService._getClaimsFromJwt: No signing keys from metadata\");\r\n return Promise.reject(new Error(\"No signing keys from metadata\"));\r\n }\r\n\r\n Log.debug(\"UserInfoService._getClaimsFromJwt: Received signing keys\");\r\n let key;\r\n if (!kid) {\r\n keys = this._filterByAlg(keys, jwt.header.alg);\r\n\r\n if (keys.length > 1) {\r\n Log.error(\"UserInfoService._getClaimsFromJwt: No kid found in id_token and more than one key found in metadata\");\r\n return Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));\r\n }\r\n else {\r\n // kid is mandatory only when there are multiple keys in the referenced JWK Set document\r\n // see http://openid.net/specs/openid-connect-core-1_0.html#Signing\r\n key = keys[0];\r\n }\r\n }\r\n else {\r\n key = keys.filter(key => {\r\n return key.kid === kid;\r\n })[0];\r\n }\r\n\r\n if (!key) {\r\n Log.error(\"UserInfoService._getClaimsFromJwt: No key matching kid or alg found in signing keys\");\r\n return Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));\r\n }\r\n\r\n let audience = this._settings.client_id;\r\n\r\n let clockSkewInSeconds = this._settings.clockSkew;\r\n Log.debug(\"UserInfoService._getClaimsFromJwt: Validaing JWT; using clock skew (in seconds) of: \", clockSkewInSeconds);\r\n\r\n return this._joseUtil.validateJwt(req.responseText, key, issuer, audience, clockSkewInSeconds, undefined, true).then(() => {\r\n Log.debug(\"UserInfoService._getClaimsFromJwt: JWT validation successful\");\r\n return jwt.payload;\r\n });\r\n });\r\n });\r\n return;\r\n }\r\n catch (e) {\r\n Log.error(\"UserInfoService._getClaimsFromJwt: Error parsing JWT response\", e.message);\r\n reject(e);\r\n return;\r\n }\r\n }\r\n\r\n _filterByAlg(keys, alg) {\r\n var kty = null;\r\n if (alg.startsWith(\"RS\")) {\r\n kty = \"RSA\";\r\n }\r\n else if (alg.startsWith(\"PS\")) {\r\n kty = \"PS\";\r\n }\r\n else if (alg.startsWith(\"ES\")) {\r\n kty = \"EC\";\r\n }\r\n else {\r\n Log.debug(\"UserInfoService._filterByAlg: alg not supported: \", alg);\r\n return [];\r\n }\r\n\r\n Log.debug(\"UserInfoService._filterByAlg: Looking for keys that match kty: \", kty);\r\n\r\n keys = keys.filter(key => {\r\n return key.kty === kty;\r\n });\r\n\r\n Log.debug(\"UserInfoService._filterByAlg: Number of keys that match kty: \", kty, keys.length);\r\n\r\n return keys;\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { JsonService } from './JsonService.js';\r\nimport { MetadataService } from './MetadataService.js';\r\nimport { Log } from './Log.js';\r\n\r\nexport class TokenClient {\r\n constructor(settings, JsonServiceCtor = JsonService, MetadataServiceCtor = MetadataService) {\r\n if (!settings) {\r\n Log.error(\"TokenClient.ctor: No settings passed\");\r\n throw new Error(\"settings\");\r\n }\r\n\r\n this._settings = settings;\r\n this._jsonService = new JsonServiceCtor();\r\n this._metadataService = new MetadataServiceCtor(this._settings);\r\n }\r\n\r\n exchangeCode(args = {}) {\r\n args = Object.assign({}, args);\r\n\r\n args.grant_type = args.grant_type || \"authorization_code\";\r\n args.client_id = args.client_id || this._settings.client_id;\r\n args.client_secret = args.client_secret || this._settings.client_secret;\r\n args.redirect_uri = args.redirect_uri || this._settings.redirect_uri;\r\n\r\n var basicAuth = undefined;\r\n var client_authentication = args._client_authentication || this._settings._client_authentication;\r\n delete args._client_authentication;\r\n\r\n if (!args.code) {\r\n Log.error(\"TokenClient.exchangeCode: No code passed\");\r\n return Promise.reject(new Error(\"A code is required\"));\r\n }\r\n if (!args.redirect_uri) {\r\n Log.error(\"TokenClient.exchangeCode: No redirect_uri passed\");\r\n return Promise.reject(new Error(\"A redirect_uri is required\"));\r\n }\r\n if (!args.code_verifier) {\r\n Log.error(\"TokenClient.exchangeCode: No code_verifier passed\");\r\n return Promise.reject(new Error(\"A code_verifier is required\"));\r\n }\r\n if (!args.client_id) {\r\n Log.error(\"TokenClient.exchangeCode: No client_id passed\");\r\n return Promise.reject(new Error(\"A client_id is required\"));\r\n }\r\n if (!args.client_secret && client_authentication == \"client_secret_basic\") {\r\n Log.error(\"TokenClient.exchangeCode: No client_secret passed\");\r\n return Promise.reject(new Error(\"A client_secret is required\"));\r\n }\r\n\r\n // Sending the client credentials using the Basic Auth method\r\n if(client_authentication == \"client_secret_basic\")\r\n {\r\n basicAuth = args.client_id + ':' + args.client_secret;\r\n delete args.client_id;\r\n delete args.client_secret;\r\n }\r\n\r\n return this._metadataService.getTokenEndpoint(false).then(url => {\r\n Log.debug(\"TokenClient.exchangeCode: Received token endpoint\");\r\n return this._jsonService.postForm(url, args, basicAuth).then(response => {\r\n Log.debug(\"TokenClient.exchangeCode: response received\");\r\n return response;\r\n });\r\n });\r\n }\r\n\r\n exchangeRefreshToken(args = {}) {\r\n args = Object.assign({}, args);\r\n\r\n args.grant_type = args.grant_type || \"refresh_token\";\r\n args.client_id = args.client_id || this._settings.client_id;\r\n args.client_secret = args.client_secret || this._settings.client_secret;\r\n\r\n var basicAuth = undefined;\r\n var client_authentication = args._client_authentication || this._settings._client_authentication;\r\n delete args._client_authentication;\r\n\r\n if (!args.refresh_token) {\r\n Log.error(\"TokenClient.exchangeRefreshToken: No refresh_token passed\");\r\n return Promise.reject(new Error(\"A refresh_token is required\"));\r\n }\r\n if (!args.client_id) {\r\n Log.error(\"TokenClient.exchangeRefreshToken: No client_id passed\");\r\n return Promise.reject(new Error(\"A client_id is required\"));\r\n }\r\n\r\n // Sending the client credentials using the Basic Auth method\r\n if(client_authentication == \"client_secret_basic\")\r\n {\r\n basicAuth = args.client_id + ':' + args.client_secret;\r\n delete args.client_id;\r\n delete args.client_secret;\r\n }\r\n\r\n return this._metadataService.getTokenEndpoint(false).then(url => {\r\n Log.debug(\"TokenClient.exchangeRefreshToken: Received token endpoint\");\r\n\r\n return this._jsonService.postForm(url, args, basicAuth).then(response => {\r\n Log.debug(\"TokenClient.exchangeRefreshToken: response received\");\r\n return response;\r\n });\r\n });\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport class ErrorResponse extends Error {\r\n constructor({error, error_description, error_uri, state, session_state}={}\r\n ) {\r\n if (!error){\r\n Log.error(\"No error passed to ErrorResponse\");\r\n throw new Error(\"error\");\r\n }\r\n\r\n super(error_description || error);\r\n\r\n this.name = \"ErrorResponse\";\r\n\r\n this.error = error;\r\n this.error_description = error_description;\r\n this.error_uri = error_uri;\r\n\r\n this.state = state;\r\n this.session_state = session_state;\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { MetadataService } from './MetadataService.js';\r\nimport { UserInfoService } from './UserInfoService.js';\r\nimport { TokenClient } from './TokenClient.js';\r\nimport { ErrorResponse } from './ErrorResponse.js';\r\nimport { JoseUtil } from './JoseUtil.js';\r\n\r\nconst ProtocolClaims = [\"nonce\", \"at_hash\", \"iat\", \"nbf\", \"exp\", \"aud\", \"iss\", \"c_hash\"];\r\n\r\nexport class ResponseValidator {\r\n\r\n constructor(settings, \r\n MetadataServiceCtor = MetadataService,\r\n UserInfoServiceCtor = UserInfoService, \r\n joseUtil = JoseUtil,\r\n TokenClientCtor = TokenClient) {\r\n if (!settings) {\r\n Log.error(\"ResponseValidator.ctor: No settings passed to ResponseValidator\");\r\n throw new Error(\"settings\");\r\n }\r\n\r\n this._settings = settings;\r\n this._metadataService = new MetadataServiceCtor(this._settings);\r\n this._userInfoService = new UserInfoServiceCtor(this._settings);\r\n this._joseUtil = joseUtil;\r\n this._tokenClient = new TokenClientCtor(this._settings);\r\n }\r\n\r\n validateSigninResponse(state, response) {\r\n Log.debug(\"ResponseValidator.validateSigninResponse\");\r\n\r\n return this._processSigninParams(state, response).then(response => {\r\n Log.debug(\"ResponseValidator.validateSigninResponse: state processed\");\r\n return this._validateTokens(state, response).then(response => {\r\n Log.debug(\"ResponseValidator.validateSigninResponse: tokens validated\");\r\n return this._processClaims(state, response).then(response => {\r\n Log.debug(\"ResponseValidator.validateSigninResponse: claims processed\");\r\n return response;\r\n });\r\n });\r\n });\r\n }\r\n\r\n validateSignoutResponse(state, response) {\r\n if (state.id !== response.state) {\r\n Log.error(\"ResponseValidator.validateSignoutResponse: State does not match\");\r\n return Promise.reject(new Error(\"State does not match\"));\r\n }\r\n\r\n // now that we know the state matches, take the stored data\r\n // and set it into the response so callers can get their state\r\n // this is important for both success & error outcomes\r\n Log.debug(\"ResponseValidator.validateSignoutResponse: state validated\");\r\n response.state = state.data;\r\n\r\n if (response.error) {\r\n Log.warn(\"ResponseValidator.validateSignoutResponse: Response was error\", response.error);\r\n return Promise.reject(new ErrorResponse(response));\r\n }\r\n\r\n return Promise.resolve(response);\r\n }\r\n\r\n _processSigninParams(state, response) {\r\n if (state.id !== response.state) {\r\n Log.error(\"ResponseValidator._processSigninParams: State does not match\");\r\n return Promise.reject(new Error(\"State does not match\"));\r\n }\r\n\r\n if (!state.client_id) {\r\n Log.error(\"ResponseValidator._processSigninParams: No client_id on state\");\r\n return Promise.reject(new Error(\"No client_id on state\"));\r\n }\r\n\r\n if (!state.authority) {\r\n Log.error(\"ResponseValidator._processSigninParams: No authority on state\");\r\n return Promise.reject(new Error(\"No authority on state\"));\r\n }\r\n\r\n // this allows the authority to be loaded from the signin state\r\n if (!this._settings.authority) {\r\n this._settings.authority = state.authority;\r\n }\r\n // ensure we're using the correct authority if the authority is not loaded from signin state\r\n else if (this._settings.authority && this._settings.authority !== state.authority) {\r\n Log.error(\"ResponseValidator._processSigninParams: authority mismatch on settings vs. signin state\");\r\n return Promise.reject(new Error(\"authority mismatch on settings vs. signin state\"));\r\n }\r\n // this allows the client_id to be loaded from the signin state\r\n if (!this._settings.client_id) {\r\n this._settings.client_id = state.client_id;\r\n }\r\n // ensure we're using the correct client_id if the client_id is not loaded from signin state\r\n else if (this._settings.client_id && this._settings.client_id !== state.client_id) {\r\n Log.error(\"ResponseValidator._processSigninParams: client_id mismatch on settings vs. signin state\");\r\n return Promise.reject(new Error(\"client_id mismatch on settings vs. signin state\"));\r\n }\r\n\r\n // now that we know the state matches, take the stored data\r\n // and set it into the response so callers can get their state\r\n // this is important for both success & error outcomes\r\n Log.debug(\"ResponseValidator._processSigninParams: state validated\");\r\n response.state = state.data;\r\n\r\n if (response.error) {\r\n Log.warn(\"ResponseValidator._processSigninParams: Response was error\", response.error);\r\n return Promise.reject(new ErrorResponse(response));\r\n }\r\n\r\n if (state.nonce && !response.id_token) {\r\n Log.error(\"ResponseValidator._processSigninParams: Expecting id_token in response\");\r\n return Promise.reject(new Error(\"No id_token in response\"));\r\n }\r\n\r\n if (!state.nonce && response.id_token) {\r\n Log.error(\"ResponseValidator._processSigninParams: Not expecting id_token in response\");\r\n return Promise.reject(new Error(\"Unexpected id_token in response\"));\r\n }\r\n\r\n if (state.code_verifier && !response.code) {\r\n Log.error(\"ResponseValidator._processSigninParams: Expecting code in response\");\r\n return Promise.reject(new Error(\"No code in response\"));\r\n }\r\n\r\n if (!state.code_verifier && response.code) {\r\n Log.error(\"ResponseValidator._processSigninParams: Not expecting code in response\");\r\n return Promise.reject(new Error(\"Unexpected code in response\"));\r\n }\r\n\r\n if (!response.scope) {\r\n // if there's no scope on the response, then assume all scopes granted (per-spec) and copy over scopes from original request\r\n response.scope = state.scope;\r\n }\r\n\r\n return Promise.resolve(response);\r\n }\r\n\r\n _processClaims(state, response) {\r\n if (response.isOpenIdConnect) {\r\n Log.debug(\"ResponseValidator._processClaims: response is OIDC, processing claims\");\r\n\r\n response.profile = this._filterProtocolClaims(response.profile);\r\n\r\n if (state.skipUserInfo !== true && this._settings.loadUserInfo && response.access_token) {\r\n Log.debug(\"ResponseValidator._processClaims: loading user info\");\r\n\r\n return this._userInfoService.getClaims(response.access_token).then(claims => {\r\n Log.debug(\"ResponseValidator._processClaims: user info claims received from user info endpoint\");\r\n\r\n if (claims.sub !== response.profile.sub) {\r\n Log.error(\"ResponseValidator._processClaims: sub from user info endpoint does not match sub in id_token\");\r\n return Promise.reject(new Error(\"sub from user info endpoint does not match sub in id_token\"));\r\n }\r\n\r\n response.profile = this._mergeClaims(response.profile, claims);\r\n Log.debug(\"ResponseValidator._processClaims: user info claims received, updated profile:\", response.profile);\r\n\r\n return response;\r\n });\r\n }\r\n else {\r\n Log.debug(\"ResponseValidator._processClaims: not loading user info\");\r\n }\r\n }\r\n else {\r\n Log.debug(\"ResponseValidator._processClaims: response is not OIDC, not processing claims\");\r\n }\r\n\r\n return Promise.resolve(response);\r\n }\r\n\r\n _mergeClaims(claims1, claims2) {\r\n var result = Object.assign({}, claims1);\r\n\r\n for (let name in claims2) {\r\n var values = claims2[name];\r\n if (!Array.isArray(values)) {\r\n values = [values];\r\n }\r\n\r\n for (let i = 0; i < values.length; i++) {\r\n let value = values[i];\r\n if (!result[name]) {\r\n result[name] = value;\r\n }\r\n else if (Array.isArray(result[name])) {\r\n if (result[name].indexOf(value) < 0) {\r\n result[name].push(value);\r\n }\r\n }\r\n else if (result[name] !== value) {\r\n if (typeof value === 'object' && this._settings.mergeClaims) {\r\n result[name] = this._mergeClaims(result[name], value);\r\n }\r\n else {\r\n result[name] = [result[name], value];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n _filterProtocolClaims(claims) {\r\n Log.debug(\"ResponseValidator._filterProtocolClaims, incoming claims:\", claims);\r\n\r\n var result = Object.assign({}, claims);\r\n\r\n if (this._settings._filterProtocolClaims) {\r\n ProtocolClaims.forEach(type => {\r\n delete result[type];\r\n });\r\n\r\n Log.debug(\"ResponseValidator._filterProtocolClaims: protocol claims filtered\", result);\r\n }\r\n else {\r\n Log.debug(\"ResponseValidator._filterProtocolClaims: protocol claims not filtered\")\r\n }\r\n\r\n return result;\r\n }\r\n\r\n _validateTokens(state, response) {\r\n if (response.code) {\r\n Log.debug(\"ResponseValidator._validateTokens: Validating code\");\r\n return this._processCode(state, response);\r\n }\r\n\r\n if (response.id_token) {\r\n if (response.access_token) {\r\n Log.debug(\"ResponseValidator._validateTokens: Validating id_token and access_token\");\r\n return this._validateIdTokenAndAccessToken(state, response);\r\n }\r\n\r\n Log.debug(\"ResponseValidator._validateTokens: Validating id_token\");\r\n return this._validateIdToken(state, response);\r\n }\r\n\r\n Log.debug(\"ResponseValidator._validateTokens: No code to process or id_token to validate\");\r\n return Promise.resolve(response);\r\n }\r\n\r\n _processCode(state, response) {\r\n var request = {\r\n client_id: state.client_id,\r\n client_secret: state.client_secret,\r\n code : response.code,\r\n redirect_uri: state.redirect_uri,\r\n code_verifier: state.code_verifier\r\n };\r\n\r\n if (state.extraTokenParams && typeof(state.extraTokenParams) === 'object') {\r\n Object.assign(request, state.extraTokenParams);\r\n }\r\n \r\n return this._tokenClient.exchangeCode(request).then(tokenResponse => {\r\n \r\n for(var key in tokenResponse) {\r\n response[key] = tokenResponse[key];\r\n }\r\n\r\n if (response.id_token) {\r\n Log.debug(\"ResponseValidator._processCode: token response successful, processing id_token\");\r\n return this._validateIdTokenAttributes(state, response);\r\n }\r\n else {\r\n Log.debug(\"ResponseValidator._processCode: token response successful, returning response\");\r\n }\r\n \r\n return response;\r\n });\r\n }\r\n\r\n _validateIdTokenAttributes(state, response) {\r\n return this._metadataService.getIssuer().then(issuer => {\r\n\r\n let audience = state.client_id;\r\n let clockSkewInSeconds = this._settings.clockSkew;\r\n Log.debug(\"ResponseValidator._validateIdTokenAttributes: Validaing JWT attributes; using clock skew (in seconds) of: \", clockSkewInSeconds);\r\n\r\n return this._settings.getEpochTime().then(now => {\r\n return this._joseUtil.validateJwtAttributes(response.id_token, issuer, audience, clockSkewInSeconds, now).then(payload => {\r\n \r\n if (state.nonce && state.nonce !== payload.nonce) {\r\n Log.error(\"ResponseValidator._validateIdTokenAttributes: Invalid nonce in id_token\");\r\n return Promise.reject(new Error(\"Invalid nonce in id_token\"));\r\n }\r\n \r\n if (!payload.sub) {\r\n Log.error(\"ResponseValidator._validateIdTokenAttributes: No sub present in id_token\");\r\n return Promise.reject(new Error(\"No sub present in id_token\"));\r\n }\r\n \r\n response.profile = payload;\r\n return response;\r\n });\r\n });\r\n });\r\n }\r\n\r\n _validateIdTokenAndAccessToken(state, response) {\r\n return this._validateIdToken(state, response).then(response => {\r\n return this._validateAccessToken(response);\r\n });\r\n }\r\n\r\n _getSigningKeyForJwt(jwt) {\r\n return this._metadataService.getSigningKeys().then(keys => {\r\n const kid = jwt.header.kid;\r\n if (!keys) {\r\n Log.error(\"ResponseValidator._validateIdToken: No signing keys from metadata\");\r\n return Promise.reject(new Error(\"No signing keys from metadata\"));\r\n }\r\n\r\n Log.debug(\"ResponseValidator._validateIdToken: Received signing keys\");\r\n let key;\r\n if (!kid) {\r\n keys = this._filterByAlg(keys, jwt.header.alg);\r\n\r\n if (keys.length > 1) {\r\n Log.error(\"ResponseValidator._validateIdToken: No kid found in id_token and more than one key found in metadata\");\r\n return Promise.reject(new Error(\"No kid found in id_token and more than one key found in metadata\"));\r\n } else {\r\n // kid is mandatory only when there are multiple keys in the referenced JWK Set document\r\n // see http://openid.net/specs/openid-connect-core-1_0.html#Signing\r\n key = keys[0];\r\n }\r\n } else {\r\n key = keys.filter(key => {\r\n return key.kid === kid;\r\n })[0];\r\n }\r\n return Promise.resolve(key);\r\n });\r\n }\r\n\r\n _getSigningKeyForJwtWithSingleRetry(jwt) {\r\n return this._getSigningKeyForJwt(jwt).then(key => {\r\n // Refreshing signingKeys if no suitable verification key is present for given jwt header.\r\n if (!key) {\r\n // set to undefined, to trigger network call to jwks_uri.\r\n this._metadataService.resetSigningKeys();\r\n return this._getSigningKeyForJwt(jwt);\r\n } else {\r\n return Promise.resolve(key);\r\n }\r\n });\r\n }\r\n\r\n _validateIdToken(state, response) {\r\n if (!state.nonce) {\r\n Log.error(\"ResponseValidator._validateIdToken: No nonce on state\");\r\n return Promise.reject(new Error(\"No nonce on state\"));\r\n }\r\n\r\n let jwt = this._joseUtil.parseJwt(response.id_token);\r\n if (!jwt || !jwt.header || !jwt.payload) {\r\n Log.error(\"ResponseValidator._validateIdToken: Failed to parse id_token\", jwt);\r\n return Promise.reject(new Error(\"Failed to parse id_token\"));\r\n }\r\n\r\n if (state.nonce !== jwt.payload.nonce) {\r\n Log.error(\"ResponseValidator._validateIdToken: Invalid nonce in id_token\");\r\n return Promise.reject(new Error(\"Invalid nonce in id_token\"));\r\n }\r\n\r\n return this._metadataService.getIssuer().then(issuer => {\r\n Log.debug(\"ResponseValidator._validateIdToken: Received issuer\");\r\n return this._getSigningKeyForJwtWithSingleRetry(jwt).then(key => {\r\n if (!key) {\r\n Log.error(\"ResponseValidator._validateIdToken: No key matching kid or alg found in signing keys\");\r\n return Promise.reject(new Error(\"No key matching kid or alg found in signing keys\"));\r\n }\r\n\r\n let audience = state.client_id;\r\n\r\n let clockSkewInSeconds = this._settings.clockSkew;\r\n Log.debug(\"ResponseValidator._validateIdToken: Validaing JWT; using clock skew (in seconds) of: \", clockSkewInSeconds);\r\n\r\n return this._joseUtil.validateJwt(response.id_token, key, issuer, audience, clockSkewInSeconds).then(()=>{\r\n Log.debug(\"ResponseValidator._validateIdToken: JWT validation successful\");\r\n\r\n if (!jwt.payload.sub) {\r\n Log.error(\"ResponseValidator._validateIdToken: No sub present in id_token\");\r\n return Promise.reject(new Error(\"No sub present in id_token\"));\r\n }\r\n\r\n response.profile = jwt.payload;\r\n\r\n return response;\r\n });\r\n });\r\n });\r\n }\r\n\r\n _filterByAlg(keys, alg){\r\n var kty = null;\r\n if (alg.startsWith(\"RS\")) {\r\n kty = \"RSA\";\r\n }\r\n else if (alg.startsWith(\"PS\")) {\r\n kty = \"PS\";\r\n }\r\n else if (alg.startsWith(\"ES\")) {\r\n kty = \"EC\";\r\n }\r\n else {\r\n Log.debug(\"ResponseValidator._filterByAlg: alg not supported: \", alg);\r\n return [];\r\n }\r\n\r\n Log.debug(\"ResponseValidator._filterByAlg: Looking for keys that match kty: \", kty);\r\n\r\n keys = keys.filter(key => {\r\n return key.kty === kty;\r\n });\r\n\r\n Log.debug(\"ResponseValidator._filterByAlg: Number of keys that match kty: \", kty, keys.length);\r\n\r\n return keys;\r\n }\r\n\r\n _validateAccessToken(response) {\r\n if (!response.profile) {\r\n Log.error(\"ResponseValidator._validateAccessToken: No profile loaded from id_token\");\r\n return Promise.reject(new Error(\"No profile loaded from id_token\"));\r\n }\r\n\r\n if (!response.profile.at_hash) {\r\n Log.error(\"ResponseValidator._validateAccessToken: No at_hash in id_token\");\r\n return Promise.reject(new Error(\"No at_hash in id_token\"));\r\n }\r\n\r\n if (!response.id_token) {\r\n Log.error(\"ResponseValidator._validateAccessToken: No id_token\");\r\n return Promise.reject(new Error(\"No id_token\"));\r\n }\r\n\r\n let jwt = this._joseUtil.parseJwt(response.id_token);\r\n if (!jwt || !jwt.header) {\r\n Log.error(\"ResponseValidator._validateAccessToken: Failed to parse id_token\", jwt);\r\n return Promise.reject(new Error(\"Failed to parse id_token\"));\r\n }\r\n\r\n var hashAlg = jwt.header.alg;\r\n if (!hashAlg || hashAlg.length !== 5) {\r\n Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\", hashAlg);\r\n return Promise.reject(new Error(\"Unsupported alg: \" + hashAlg));\r\n }\r\n\r\n var hashBits = hashAlg.substr(2, 3);\r\n if (!hashBits) {\r\n Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\", hashAlg, hashBits);\r\n return Promise.reject(new Error(\"Unsupported alg: \" + hashAlg));\r\n }\r\n\r\n hashBits = parseInt(hashBits);\r\n if (hashBits !== 256 && hashBits !== 384 && hashBits !== 512) {\r\n Log.error(\"ResponseValidator._validateAccessToken: Unsupported alg:\", hashAlg, hashBits);\r\n return Promise.reject(new Error(\"Unsupported alg: \" + hashAlg));\r\n }\r\n\r\n let sha = \"sha\" + hashBits;\r\n var hash = this._joseUtil.hashString(response.access_token, sha);\r\n if (!hash) {\r\n Log.error(\"ResponseValidator._validateAccessToken: access_token hash failed:\", sha);\r\n return Promise.reject(new Error(\"Failed to validate at_hash\"));\r\n }\r\n\r\n var left = hash.substr(0, hash.length / 2);\r\n var left_b64u = this._joseUtil.hexToBase64Url(left);\r\n if (left_b64u !== response.profile.at_hash) {\r\n Log.error(\"ResponseValidator._validateAccessToken: Failed to validate at_hash\", left_b64u, response.profile.at_hash);\r\n return Promise.reject(new Error(\"Failed to validate at_hash\"));\r\n }\r\n\r\n Log.debug(\"ResponseValidator._validateAccessToken: success\");\r\n\r\n return Promise.resolve(response);\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { ClockService } from './ClockService.js';\r\nimport { WebStorageStateStore } from './WebStorageStateStore.js';\r\nimport { ResponseValidator } from './ResponseValidator.js';\r\nimport { MetadataService } from './MetadataService.js';\r\n\r\nconst OidcMetadataUrlPath = '.well-known/openid-configuration';\r\n\r\nconst DefaultResponseType = \"id_token\";\r\nconst DefaultScope = \"openid\";\r\nconst DefaultClientAuthentication = \"client_secret_post\" // The default value must be client_secret_basic, as explained in https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication\r\nconst DefaultStaleStateAge = 60 * 15; // seconds\r\nconst DefaultClockSkewInSeconds = 60 * 5;\r\n\r\nexport class OidcClientSettings {\r\n constructor({\r\n // metadata related\r\n authority, metadataUrl, metadata, signingKeys, metadataSeed,\r\n // client related\r\n client_id, client_secret, response_type = DefaultResponseType, scope = DefaultScope,\r\n redirect_uri, post_logout_redirect_uri,\r\n client_authentication = DefaultClientAuthentication,\r\n // optional protocol\r\n prompt, display, max_age, ui_locales, acr_values, resource, response_mode,\r\n // behavior flags\r\n filterProtocolClaims = true, loadUserInfo = true,\r\n staleStateAge = DefaultStaleStateAge, \r\n clockSkew = DefaultClockSkewInSeconds,\r\n clockService = new ClockService(),\r\n userInfoJwtIssuer = 'OP',\r\n mergeClaims = false,\r\n // other behavior\r\n stateStore = new WebStorageStateStore(),\r\n ResponseValidatorCtor = ResponseValidator,\r\n MetadataServiceCtor = MetadataService,\r\n // extra query params\r\n extraQueryParams = {},\r\n extraTokenParams = {}\r\n } = {}) {\r\n\r\n this._authority = authority;\r\n this._metadataUrl = metadataUrl;\r\n this._metadata = metadata;\r\n this._metadataSeed = metadataSeed;\r\n this._signingKeys = signingKeys;\r\n\r\n this._client_id = client_id;\r\n this._client_secret = client_secret;\r\n this._response_type = response_type;\r\n this._scope = scope;\r\n this._redirect_uri = redirect_uri;\r\n this._post_logout_redirect_uri = post_logout_redirect_uri;\r\n this._client_authentication = client_authentication;\r\n\r\n this._prompt = prompt;\r\n this._display = display;\r\n this._max_age = max_age;\r\n this._ui_locales = ui_locales;\r\n this._acr_values = acr_values;\r\n this._resource = resource;\r\n this._response_mode = response_mode;\r\n\r\n this._filterProtocolClaims = !!filterProtocolClaims;\r\n this._loadUserInfo = !!loadUserInfo;\r\n this._staleStateAge = staleStateAge;\r\n this._clockSkew = clockSkew;\r\n this._clockService = clockService;\r\n this._userInfoJwtIssuer = userInfoJwtIssuer;\r\n this._mergeClaims = !!mergeClaims;\r\n\r\n this._stateStore = stateStore;\r\n this._validator = new ResponseValidatorCtor(this);\r\n this._metadataService = new MetadataServiceCtor(this);\r\n\r\n this._extraQueryParams = typeof extraQueryParams === 'object' ? extraQueryParams : {};\r\n this._extraTokenParams = typeof extraTokenParams === 'object' ? extraTokenParams : {};\r\n }\r\n\r\n // client config\r\n get client_id() {\r\n return this._client_id;\r\n }\r\n set client_id(value) {\r\n if (!this._client_id) {\r\n // one-time set only\r\n this._client_id = value;\r\n }\r\n else {\r\n Log.error(\"OidcClientSettings.set_client_id: client_id has already been assigned.\")\r\n throw new Error(\"client_id has already been assigned.\")\r\n }\r\n }\r\n get client_secret() {\r\n return this._client_secret;\r\n }\r\n get response_type() {\r\n return this._response_type;\r\n }\r\n get scope() {\r\n return this._scope;\r\n }\r\n get redirect_uri() {\r\n return this._redirect_uri;\r\n }\r\n get post_logout_redirect_uri() {\r\n return this._post_logout_redirect_uri;\r\n }\r\n get client_authentication() {\r\n return this._client_authentication;\r\n }\r\n \r\n\r\n // optional protocol params\r\n get prompt() {\r\n return this._prompt;\r\n }\r\n get display() {\r\n return this._display;\r\n }\r\n get max_age() {\r\n return this._max_age;\r\n }\r\n get ui_locales() {\r\n return this._ui_locales;\r\n }\r\n get acr_values() {\r\n return this._acr_values;\r\n }\r\n get resource() {\r\n return this._resource;\r\n }\r\n get response_mode() {\r\n return this._response_mode;\r\n }\r\n\r\n\r\n // metadata\r\n get authority() {\r\n return this._authority;\r\n }\r\n set authority(value) {\r\n if (!this._authority) {\r\n // one-time set only\r\n this._authority = value;\r\n }\r\n else {\r\n Log.error(\"OidcClientSettings.set_authority: authority has already been assigned.\")\r\n throw new Error(\"authority has already been assigned.\")\r\n }\r\n }\r\n get metadataUrl() {\r\n if (!this._metadataUrl) {\r\n this._metadataUrl = this.authority;\r\n\r\n if (this._metadataUrl && this._metadataUrl.indexOf(OidcMetadataUrlPath) < 0) {\r\n if (this._metadataUrl[this._metadataUrl.length - 1] !== '/') {\r\n this._metadataUrl += '/';\r\n }\r\n this._metadataUrl += OidcMetadataUrlPath;\r\n }\r\n }\r\n\r\n return this._metadataUrl;\r\n }\r\n\r\n // settable/cachable metadata values\r\n get metadata() {\r\n return this._metadata;\r\n }\r\n set metadata(value) {\r\n this._metadata = value;\r\n }\r\n get metadataSeed() {\r\n return this._metadataSeed;\r\n }\r\n set metadataSeed(value) {\r\n this._metadataSeed = value;\r\n }\r\n\r\n get signingKeys() {\r\n return this._signingKeys;\r\n }\r\n set signingKeys(value) {\r\n this._signingKeys = value;\r\n }\r\n\r\n // behavior flags\r\n get filterProtocolClaims() {\r\n return this._filterProtocolClaims;\r\n }\r\n get loadUserInfo() {\r\n return this._loadUserInfo;\r\n }\r\n get staleStateAge() {\r\n return this._staleStateAge;\r\n }\r\n get clockSkew() {\r\n return this._clockSkew;\r\n }\r\n get userInfoJwtIssuer() {\r\n return this._userInfoJwtIssuer;\r\n }\r\n get mergeClaims() {\r\n return this._mergeClaims;\r\n }\r\n \r\n get stateStore() {\r\n return this._stateStore;\r\n }\r\n get validator() {\r\n return this._validator;\r\n }\r\n get metadataService() {\r\n return this._metadataService;\r\n }\r\n\r\n // extra query params\r\n get extraQueryParams() {\r\n return this._extraQueryParams;\r\n }\r\n set extraQueryParams(value) {\r\n if (typeof value === 'object'){\r\n this._extraQueryParams = value;\r\n } else {\r\n this._extraQueryParams = {};\r\n }\r\n }\r\n\r\n // extra token params\r\n get extraTokenParams() {\r\n return this._extraTokenParams;\r\n }\r\n set extraTokenParams(value) {\r\n if (typeof value === 'object'){\r\n this._extraTokenParams = value;\r\n } else {\r\n this._extraTokenParams = {};\r\n }\r\n }\r\n\r\n // get the time\r\n getEpochTime() {\r\n return this._clockService.getEpochTime();\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { Global } from './Global.js';\r\n\r\nexport class UrlUtility {\r\n static addQueryParam(url, name, value) {\r\n if (url.indexOf('?') < 0) {\r\n url += \"?\";\r\n }\r\n\r\n if (url[url.length - 1] !== \"?\") {\r\n url += \"&\";\r\n }\r\n\r\n url += encodeURIComponent(name);\r\n url += \"=\";\r\n url += encodeURIComponent(value);\r\n\r\n return url;\r\n }\r\n\r\n static parseUrlFragment(value, delimiter = \"#\", global = Global) {\r\n if (typeof value !== 'string'){\r\n value = global.location.href;\r\n }\r\n\r\n var idx = value.lastIndexOf(delimiter);\r\n if (idx >= 0) {\r\n value = value.substr(idx + 1);\r\n }\r\n\r\n if (delimiter === \"?\") {\r\n // if we're doing query, then strip off hash fragment before we parse\r\n idx = value.indexOf('#');\r\n if (idx >= 0) {\r\n value = value.substr(0, idx);\r\n }\r\n }\r\n\r\n var params = {},\r\n regex = /([^&=]+)=([^&]*)/g,\r\n m;\r\n\r\n var counter = 0;\r\n while (m = regex.exec(value)) {\r\n params[decodeURIComponent(m[1])] = decodeURIComponent(m[2].replace(/\\+/g, ' '));\r\n if (counter++ > 50) {\r\n Log.error(\"UrlUtility.parseUrlFragment: response exceeded expected number of parameters\", value);\r\n return {\r\n error: \"Response exceeded expected number of parameters\"\r\n };\r\n }\r\n }\r\n\r\n for (var prop in params) {\r\n return params;\r\n }\r\n\r\n return {};\r\n }\r\n}\r\n","/**\r\n * Generates RFC4122 version 4 guid ()\r\n */\r\n\r\nvar crypto = (typeof window !== 'undefined') ? (window.crypto || window.msCrypto) : null;\r\n\r\nfunction _cryptoUuidv4() {\r\n return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>\r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n )\r\n}\r\n\r\nfunction _uuidv4() {\r\n return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>\r\n (c ^ Math.random() * 16 >> c / 4).toString(16)\r\n )\r\n}\r\n\r\nexport default function random() {\r\n var hasCrypto = crypto != 'undefined' && crypto !== null;\r\n var hasRandomValues = hasCrypto && (typeof(crypto.getRandomValues) != 'undefined'); \r\n var uuid = hasRandomValues ? _cryptoUuidv4 : _uuidv4;\r\n return uuid().replace(/-/g, '');\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport random from './random.js';\r\n\r\nexport class State {\r\n constructor({id, data, created, request_type} = {}) {\r\n this._id = id || random();\r\n this._data = data;\r\n\r\n if (typeof created === 'number' && created > 0) {\r\n this._created = created;\r\n }\r\n else {\r\n this._created = parseInt(Date.now() / 1000);\r\n }\r\n this._request_type = request_type;\r\n }\r\n\r\n get id() {\r\n return this._id;\r\n }\r\n get data() {\r\n return this._data;\r\n }\r\n get created() {\r\n return this._created;\r\n }\r\n get request_type() {\r\n return this._request_type;\r\n }\r\n\r\n toStorageString() {\r\n Log.debug(\"State.toStorageString\");\r\n return JSON.stringify({\r\n id: this.id,\r\n data: this.data,\r\n created: this.created,\r\n request_type: this.request_type\r\n });\r\n }\r\n\r\n static fromStorageString(storageString) {\r\n Log.debug(\"State.fromStorageString\");\r\n return new State(JSON.parse(storageString));\r\n }\r\n\r\n static clearStaleState(storage, age) {\r\n\r\n var cutoff = Date.now() / 1000 - age;\r\n\r\n return storage.getAllKeys().then(keys => {\r\n Log.debug(\"State.clearStaleState: got keys\", keys);\r\n\r\n var promises = [];\r\n for (let i = 0; i < keys.length; i++) {\r\n let key = keys[i];\r\n var p = storage.get(key).then(item => {\r\n let remove = false;\r\n\r\n if (item) {\r\n try {\r\n var state = State.fromStorageString(item)\r\n\r\n Log.debug(\"State.clearStaleState: got item from key: \", key, state.created);\r\n\r\n if (state.created <= cutoff) {\r\n remove = true;\r\n }\r\n }\r\n catch (e) {\r\n Log.error(\"State.clearStaleState: Error parsing state for key\", key, e.message);\r\n remove = true;\r\n }\r\n }\r\n else {\r\n Log.debug(\"State.clearStaleState: no item in storage for key: \", key);\r\n remove = true;\r\n }\r\n\r\n if (remove) {\r\n Log.debug(\"State.clearStaleState: removed item for key: \", key);\r\n return storage.remove(key);\r\n }\r\n });\r\n\r\n promises.push(p);\r\n }\r\n\r\n Log.debug(\"State.clearStaleState: waiting on promise count:\", promises.length);\r\n return Promise.all(promises);\r\n });\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { State } from './State.js';\r\nimport { JoseUtil } from './JoseUtil.js';\r\nimport random from './random.js';\r\n\r\nexport class SigninState extends State {\r\n constructor({nonce, authority, client_id, redirect_uri, code_verifier, response_mode, client_secret, scope, extraTokenParams, skipUserInfo} = {}) {\r\n super(arguments[0]);\r\n\r\n if (nonce === true) {\r\n this._nonce = random();\r\n }\r\n else if (nonce) {\r\n this._nonce = nonce;\r\n }\r\n\r\n if (code_verifier === true) {\r\n // random() produces 32 length\r\n this._code_verifier = random() + random() + random();\r\n }\r\n else if (code_verifier) {\r\n this._code_verifier = code_verifier;\r\n }\r\n \r\n if (this.code_verifier) {\r\n let hash = JoseUtil.hashString(this.code_verifier, \"SHA256\");\r\n this._code_challenge = JoseUtil.hexToBase64Url(hash);\r\n }\r\n\r\n this._redirect_uri = redirect_uri;\r\n this._authority = authority;\r\n this._client_id = client_id;\r\n this._response_mode = response_mode;\r\n this._client_secret = client_secret;\r\n this._scope = scope;\r\n this._extraTokenParams = extraTokenParams;\r\n this._skipUserInfo = skipUserInfo;\r\n }\r\n\r\n get nonce() {\r\n return this._nonce;\r\n }\r\n get authority() {\r\n return this._authority;\r\n }\r\n get client_id() {\r\n return this._client_id;\r\n }\r\n get redirect_uri() {\r\n return this._redirect_uri;\r\n }\r\n get code_verifier() {\r\n return this._code_verifier;\r\n }\r\n get code_challenge() {\r\n return this._code_challenge;\r\n }\r\n get response_mode() {\r\n return this._response_mode;\r\n }\r\n get client_secret() {\r\n return this._client_secret;\r\n }\r\n get scope() {\r\n return this._scope;\r\n }\r\n get extraTokenParams() {\r\n return this._extraTokenParams;\r\n }\r\n get skipUserInfo() {\r\n return this._skipUserInfo;\r\n }\r\n \r\n toStorageString() {\r\n Log.debug(\"SigninState.toStorageString\");\r\n return JSON.stringify({\r\n id: this.id,\r\n data: this.data,\r\n created: this.created,\r\n request_type: this.request_type,\r\n nonce: this.nonce,\r\n code_verifier: this.code_verifier,\r\n redirect_uri: this.redirect_uri,\r\n authority: this.authority,\r\n client_id: this.client_id,\r\n response_mode: this.response_mode,\r\n client_secret: this.client_secret,\r\n scope: this.scope,\r\n extraTokenParams : this.extraTokenParams,\r\n skipUserInfo: this.skipUserInfo\r\n });\r\n }\r\n\r\n static fromStorageString(storageString) {\r\n Log.debug(\"SigninState.fromStorageString\");\r\n var data = JSON.parse(storageString);\r\n return new SigninState(data);\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { UrlUtility } from './UrlUtility.js';\r\nimport { SigninState } from './SigninState.js';\r\n\r\nexport class SigninRequest {\r\n constructor({\r\n // mandatory\r\n url, client_id, redirect_uri, response_type, scope, authority,\r\n // optional\r\n data, prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values, resource, response_mode,\r\n request, request_uri, extraQueryParams, request_type, client_secret, extraTokenParams, skipUserInfo\r\n }) {\r\n if (!url) {\r\n Log.error(\"SigninRequest.ctor: No url passed\");\r\n throw new Error(\"url\");\r\n }\r\n if (!client_id) {\r\n Log.error(\"SigninRequest.ctor: No client_id passed\");\r\n throw new Error(\"client_id\");\r\n }\r\n if (!redirect_uri) {\r\n Log.error(\"SigninRequest.ctor: No redirect_uri passed\");\r\n throw new Error(\"redirect_uri\");\r\n }\r\n if (!response_type) {\r\n Log.error(\"SigninRequest.ctor: No response_type passed\");\r\n throw new Error(\"response_type\");\r\n }\r\n if (!scope) {\r\n Log.error(\"SigninRequest.ctor: No scope passed\");\r\n throw new Error(\"scope\");\r\n }\r\n if (!authority) {\r\n Log.error(\"SigninRequest.ctor: No authority passed\");\r\n throw new Error(\"authority\");\r\n }\r\n\r\n let oidc = SigninRequest.isOidc(response_type);\r\n let code = SigninRequest.isCode(response_type);\r\n\r\n if (!response_mode) {\r\n response_mode = SigninRequest.isCode(response_type) ? \"query\" : null;\r\n }\r\n\r\n this.state = new SigninState({ nonce: oidc, \r\n data, client_id, authority, redirect_uri, \r\n code_verifier: code, \r\n request_type, response_mode,\r\n client_secret, scope, extraTokenParams, skipUserInfo });\r\n\r\n url = UrlUtility.addQueryParam(url, \"client_id\", client_id);\r\n url = UrlUtility.addQueryParam(url, \"redirect_uri\", redirect_uri);\r\n url = UrlUtility.addQueryParam(url, \"response_type\", response_type);\r\n url = UrlUtility.addQueryParam(url, \"scope\", scope);\r\n\r\n url = UrlUtility.addQueryParam(url, \"state\", this.state.id);\r\n if (oidc) {\r\n url = UrlUtility.addQueryParam(url, \"nonce\", this.state.nonce);\r\n }\r\n if (code) {\r\n url = UrlUtility.addQueryParam(url, \"code_challenge\", this.state.code_challenge);\r\n url = UrlUtility.addQueryParam(url, \"code_challenge_method\", \"S256\");\r\n }\r\n\r\n var optional = { prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values, resource, request, request_uri, response_mode };\r\n for(let key in optional){\r\n if (optional[key]) {\r\n url = UrlUtility.addQueryParam(url, key, optional[key]);\r\n }\r\n }\r\n\r\n for(let key in extraQueryParams){\r\n url = UrlUtility.addQueryParam(url, key, extraQueryParams[key])\r\n }\r\n\r\n this.url = url;\r\n }\r\n\r\n static isOidc(response_type) {\r\n var result = response_type.split(/\\s+/g).filter(function(item) {\r\n return item === \"id_token\";\r\n });\r\n return !!(result[0]);\r\n }\r\n\r\n static isOAuth(response_type) {\r\n var result = response_type.split(/\\s+/g).filter(function(item) {\r\n return item === \"token\";\r\n });\r\n return !!(result[0]);\r\n }\r\n \r\n static isCode(response_type) {\r\n var result = response_type.split(/\\s+/g).filter(function(item) {\r\n return item === \"code\";\r\n });\r\n return !!(result[0]);\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { UrlUtility } from './UrlUtility.js';\r\n\r\nconst OidcScope = \"openid\";\r\n\r\nexport class SigninResponse {\r\n constructor(url, delimiter = \"#\") {\r\n\r\n var values = UrlUtility.parseUrlFragment(url, delimiter);\r\n\r\n this.error = values.error;\r\n this.error_description = values.error_description;\r\n this.error_uri = values.error_uri;\r\n\r\n this.code = values.code;\r\n this.state = values.state;\r\n this.id_token = values.id_token;\r\n this.session_state = values.session_state;\r\n this.access_token = values.access_token;\r\n this.token_type = values.token_type;\r\n this.scope = values.scope;\r\n this.profile = undefined; // will be set from ResponseValidator\r\n\r\n this.expires_in = values.expires_in;\r\n }\r\n\r\n get expires_in() {\r\n if (this.expires_at) {\r\n let now = parseInt(Date.now() / 1000);\r\n return this.expires_at - now;\r\n }\r\n return undefined;\r\n }\r\n set expires_in(value){\r\n let expires_in = parseInt(value);\r\n if (typeof expires_in === 'number' && expires_in > 0) {\r\n let now = parseInt(Date.now() / 1000);\r\n this.expires_at = now + expires_in;\r\n }\r\n }\r\n\r\n get expired() {\r\n let expires_in = this.expires_in;\r\n if (expires_in !== undefined) {\r\n return expires_in <= 0;\r\n }\r\n return undefined;\r\n }\r\n\r\n get scopes() {\r\n return (this.scope || \"\").split(\" \");\r\n }\r\n\r\n get isOpenIdConnect() {\r\n return this.scopes.indexOf(OidcScope) >= 0 || !!this.id_token;\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { UrlUtility } from './UrlUtility.js';\r\nimport { State } from './State.js';\r\n\r\nexport class SignoutRequest {\r\n constructor({url, id_token_hint, post_logout_redirect_uri, data, extraQueryParams, request_type}) {\r\n if (!url) {\r\n Log.error(\"SignoutRequest.ctor: No url passed\");\r\n throw new Error(\"url\");\r\n }\r\n\r\n if (id_token_hint) {\r\n url = UrlUtility.addQueryParam(url, \"id_token_hint\", id_token_hint);\r\n }\r\n\r\n if (post_logout_redirect_uri) {\r\n url = UrlUtility.addQueryParam(url, \"post_logout_redirect_uri\", post_logout_redirect_uri);\r\n\r\n if (data) {\r\n this.state = new State({ data, request_type });\r\n\r\n url = UrlUtility.addQueryParam(url, \"state\", this.state.id);\r\n }\r\n }\r\n\r\n for(let key in extraQueryParams){\r\n url = UrlUtility.addQueryParam(url, key, extraQueryParams[key])\r\n }\r\n\r\n this.url = url;\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { UrlUtility } from './UrlUtility.js';\r\n\r\nexport class SignoutResponse {\r\n constructor(url) {\r\n\r\n var values = UrlUtility.parseUrlFragment(url, \"?\");\r\n\r\n this.error = values.error;\r\n this.error_description = values.error_description;\r\n this.error_uri = values.error_uri;\r\n\r\n this.state = values.state;\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { OidcClientSettings } from './OidcClientSettings.js';\r\nimport { ErrorResponse } from './ErrorResponse.js';\r\nimport { SigninRequest } from './SigninRequest.js';\r\nimport { SigninResponse } from './SigninResponse.js';\r\nimport { SignoutRequest } from './SignoutRequest.js';\r\nimport { SignoutResponse } from './SignoutResponse.js';\r\nimport { SigninState } from './SigninState.js';\r\nimport { State } from './State.js';\r\n\r\nexport class OidcClient {\r\n constructor(settings = {}) {\r\n if (settings instanceof OidcClientSettings) {\r\n this._settings = settings;\r\n }\r\n else {\r\n this._settings = new OidcClientSettings(settings);\r\n }\r\n }\r\n\r\n get _stateStore() {\r\n return this.settings.stateStore;\r\n }\r\n get _validator() {\r\n return this.settings.validator;\r\n }\r\n get _metadataService() {\r\n return this.settings.metadataService;\r\n }\r\n\r\n get settings() {\r\n return this._settings;\r\n }\r\n get metadataService() {\r\n return this._metadataService;\r\n }\r\n\r\n createSigninRequest({\r\n response_type, scope, redirect_uri,\r\n // data was meant to be the place a caller could indicate the data to\r\n // have round tripped, but people were getting confused, so i added state (since that matches the spec)\r\n // and so now if data is not passed, but state is then state will be used\r\n data, state, prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values,\r\n resource, request, request_uri, response_mode, extraQueryParams, extraTokenParams, request_type, skipUserInfo } = {},\r\n stateStore\r\n ) {\r\n Log.debug(\"OidcClient.createSigninRequest\");\r\n\r\n let client_id = this._settings.client_id;\r\n response_type = response_type || this._settings.response_type;\r\n scope = scope || this._settings.scope;\r\n redirect_uri = redirect_uri || this._settings.redirect_uri;\r\n\r\n // id_token_hint, login_hint aren't allowed on _settings\r\n prompt = prompt || this._settings.prompt;\r\n display = display || this._settings.display;\r\n max_age = max_age || this._settings.max_age;\r\n ui_locales = ui_locales || this._settings.ui_locales;\r\n acr_values = acr_values || this._settings.acr_values;\r\n resource = resource || this._settings.resource;\r\n response_mode = response_mode || this._settings.response_mode;\r\n extraQueryParams = extraQueryParams || this._settings.extraQueryParams;\r\n extraTokenParams = extraTokenParams || this._settings.extraTokenParams;\r\n\r\n let authority = this._settings.authority;\r\n\r\n if (SigninRequest.isCode(response_type) && response_type !== \"code\") {\r\n return Promise.reject(new Error(\"OpenID Connect hybrid flow is not supported\"));\r\n }\r\n\r\n return this._metadataService.getAuthorizationEndpoint().then(url => {\r\n Log.debug(\"OidcClient.createSigninRequest: Received authorization endpoint\", url);\r\n\r\n let signinRequest = new SigninRequest({\r\n url,\r\n client_id,\r\n redirect_uri,\r\n response_type,\r\n scope,\r\n data: data || state,\r\n authority,\r\n prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values,\r\n resource, request, request_uri, extraQueryParams, extraTokenParams, request_type, response_mode,\r\n client_secret: this._settings.client_secret,\r\n skipUserInfo\r\n });\r\n\r\n var signinState = signinRequest.state;\r\n stateStore = stateStore || this._stateStore;\r\n\r\n return stateStore.set(signinState.id, signinState.toStorageString()).then(() => {\r\n return signinRequest;\r\n });\r\n });\r\n }\r\n\r\n readSigninResponseState(url, stateStore, removeState = false) {\r\n Log.debug(\"OidcClient.readSigninResponseState\");\r\n\r\n let useQuery = this._settings.response_mode === \"query\" || \r\n (!this._settings.response_mode && SigninRequest.isCode(this._settings.response_type));\r\n let delimiter = useQuery ? \"?\" : \"#\";\r\n\r\n var response = new SigninResponse(url, delimiter);\r\n\r\n if (!response.state) {\r\n Log.error(\"OidcClient.readSigninResponseState: No state in response\");\r\n return Promise.reject(new Error(\"No state in response\"));\r\n }\r\n\r\n stateStore = stateStore || this._stateStore;\r\n\r\n var stateApi = removeState ? stateStore.remove.bind(stateStore) : stateStore.get.bind(stateStore);\r\n\r\n return stateApi(response.state).then(storedStateString => {\r\n if (!storedStateString) {\r\n Log.error(\"OidcClient.readSigninResponseState: No matching state found in storage\");\r\n throw new Error(\"No matching state found in storage\");\r\n }\r\n\r\n let state = SigninState.fromStorageString(storedStateString);\r\n return {state, response};\r\n });\r\n }\r\n\r\n processSigninResponse(url, stateStore) {\r\n Log.debug(\"OidcClient.processSigninResponse\");\r\n\r\n return this.readSigninResponseState(url, stateStore, true).then(({state, response}) => {\r\n Log.debug(\"OidcClient.processSigninResponse: Received state from storage; validating response\");\r\n return this._validator.validateSigninResponse(state, response);\r\n });\r\n }\r\n\r\n createSignoutRequest({id_token_hint, data, state, post_logout_redirect_uri, extraQueryParams, request_type } = {},\r\n stateStore\r\n ) {\r\n Log.debug(\"OidcClient.createSignoutRequest\");\r\n\r\n post_logout_redirect_uri = post_logout_redirect_uri || this._settings.post_logout_redirect_uri;\r\n extraQueryParams = extraQueryParams || this._settings.extraQueryParams;\r\n\r\n return this._metadataService.getEndSessionEndpoint().then(url => {\r\n if (!url) {\r\n Log.error(\"OidcClient.createSignoutRequest: No end session endpoint url returned\");\r\n throw new Error(\"no end session endpoint\");\r\n }\r\n\r\n Log.debug(\"OidcClient.createSignoutRequest: Received end session endpoint\", url);\r\n\r\n let request = new SignoutRequest({\r\n url,\r\n id_token_hint,\r\n post_logout_redirect_uri,\r\n data: data || state,\r\n extraQueryParams,\r\n request_type\r\n });\r\n\r\n var signoutState = request.state;\r\n if (signoutState) {\r\n Log.debug(\"OidcClient.createSignoutRequest: Signout request has state to persist\");\r\n\r\n stateStore = stateStore || this._stateStore;\r\n stateStore.set(signoutState.id, signoutState.toStorageString());\r\n }\r\n\r\n return request;\r\n });\r\n }\r\n\r\n readSignoutResponseState(url, stateStore, removeState = false) {\r\n Log.debug(\"OidcClient.readSignoutResponseState\");\r\n\r\n var response = new SignoutResponse(url);\r\n if (!response.state) {\r\n Log.debug(\"OidcClient.readSignoutResponseState: No state in response\");\r\n\r\n if (response.error) {\r\n Log.warn(\"OidcClient.readSignoutResponseState: Response was error: \", response.error);\r\n return Promise.reject(new ErrorResponse(response));\r\n }\r\n\r\n return Promise.resolve({state: undefined, response});\r\n }\r\n\r\n var stateKey = response.state;\r\n\r\n stateStore = stateStore || this._stateStore;\r\n\r\n var stateApi = removeState ? stateStore.remove.bind(stateStore) : stateStore.get.bind(stateStore);\r\n return stateApi(stateKey).then(storedStateString => {\r\n if (!storedStateString) {\r\n Log.error(\"OidcClient.readSignoutResponseState: No matching state found in storage\");\r\n throw new Error(\"No matching state found in storage\");\r\n }\r\n\r\n let state = State.fromStorageString(storedStateString);\r\n\r\n return {state, response};\r\n });\r\n }\r\n\r\n processSignoutResponse(url, stateStore) {\r\n Log.debug(\"OidcClient.processSignoutResponse\");\r\n\r\n return this.readSignoutResponseState(url, stateStore, true).then(({state, response}) => {\r\n if (state) {\r\n Log.debug(\"OidcClient.processSignoutResponse: Received state from storage; validating response\");\r\n return this._validator.validateSignoutResponse(state, response);\r\n }\r\n else {\r\n Log.debug(\"OidcClient.processSignoutResponse: No state from storage; skipping validating response\");\r\n return response;\r\n }\r\n });\r\n }\r\n\r\n clearStaleState(stateStore) {\r\n Log.debug(\"OidcClient.clearStaleState\");\r\n\r\n stateStore = stateStore || this._stateStore;\r\n\r\n return State.clearStaleState(stateStore, this.settings.staleStateAge);\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport class RedirectNavigator {\r\n\r\n prepare() {\r\n return Promise.resolve(this);\r\n }\r\n\r\n navigate(params) {\r\n if (!params || !params.url) {\r\n Log.error(\"RedirectNavigator.navigate: No url provided\");\r\n return Promise.reject(new Error(\"No url provided\"));\r\n }\r\n\r\n if (params.useReplaceToNavigate) {\r\n window.location.replace(params.url);\r\n }\r\n else {\r\n window.location = params.url;\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n get url() {\r\n return window.location.href;\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { UrlUtility } from './UrlUtility.js';\r\n\r\nconst CheckForPopupClosedInterval = 500;\r\nconst DefaultPopupFeatures = 'location=no,toolbar=no,width=500,height=500,left=100,top=100;';\r\n//const DefaultPopupFeatures = 'location=no,toolbar=no,width=500,height=500,left=100,top=100;resizable=yes';\r\n\r\nconst DefaultPopupTarget = \"_blank\";\r\n\r\nexport class PopupWindow {\r\n\r\n constructor(params) {\r\n this._promise = new Promise((resolve, reject) => {\r\n this._resolve = resolve;\r\n this._reject = reject;\r\n });\r\n\r\n let target = params.popupWindowTarget || DefaultPopupTarget;\r\n let features = params.popupWindowFeatures || DefaultPopupFeatures;\r\n\r\n this._popup = window.open('', target, features);\r\n if (this._popup) {\r\n Log.debug(\"PopupWindow.ctor: popup successfully created\");\r\n this._checkForPopupClosedTimer = window.setInterval(this._checkForPopupClosed.bind(this), CheckForPopupClosedInterval);\r\n }\r\n }\r\n\r\n get promise() {\r\n return this._promise;\r\n }\r\n\r\n navigate(params) {\r\n if (!this._popup) {\r\n this._error(\"PopupWindow.navigate: Error opening popup window\");\r\n }\r\n else if (!params || !params.url) {\r\n this._error(\"PopupWindow.navigate: no url provided\");\r\n this._error(\"No url provided\");\r\n }\r\n else {\r\n Log.debug(\"PopupWindow.navigate: Setting URL in popup\");\r\n\r\n this._id = params.id;\r\n if (this._id) {\r\n window[\"popupCallback_\" + params.id] = this._callback.bind(this);\r\n }\r\n\r\n this._popup.focus();\r\n this._popup.window.location = params.url;\r\n }\r\n\r\n return this.promise;\r\n }\r\n\r\n _success(data) {\r\n Log.debug(\"PopupWindow.callback: Successful response from popup window\");\r\n\r\n this._cleanup();\r\n this._resolve(data);\r\n }\r\n _error(message) {\r\n Log.error(\"PopupWindow.error: \", message);\r\n \r\n this._cleanup();\r\n this._reject(new Error(message));\r\n }\r\n\r\n close() {\r\n this._cleanup(false);\r\n }\r\n\r\n _cleanup(keepOpen) {\r\n Log.debug(\"PopupWindow.cleanup\");\r\n\r\n window.clearInterval(this._checkForPopupClosedTimer);\r\n this._checkForPopupClosedTimer = null;\r\n\r\n delete window[\"popupCallback_\" + this._id];\r\n\r\n if (this._popup && !keepOpen) {\r\n this._popup.close();\r\n }\r\n this._popup = null;\r\n }\r\n\r\n _checkForPopupClosed() {\r\n if (!this._popup || this._popup.closed) {\r\n this._error(\"Popup window closed\");\r\n }\r\n }\r\n\r\n _callback(url, keepOpen) {\r\n this._cleanup(keepOpen);\r\n\r\n if (url) {\r\n Log.debug(\"PopupWindow.callback success\");\r\n this._success({ url: url });\r\n }\r\n else {\r\n Log.debug(\"PopupWindow.callback: Invalid response from popup\");\r\n this._error(\"Invalid response from popup\");\r\n }\r\n }\r\n\r\n static notifyOpener(url, keepOpen, delimiter) {\r\n if (window.opener) {\r\n url = url || window.location.href;\r\n if (url) {\r\n var data = UrlUtility.parseUrlFragment(url, delimiter);\r\n\r\n if (data.state) {\r\n var name = \"popupCallback_\" + data.state;\r\n var callback = window.opener[name];\r\n if (callback) {\r\n Log.debug(\"PopupWindow.notifyOpener: passing url message to opener\");\r\n callback(url, keepOpen);\r\n }\r\n else {\r\n Log.warn(\"PopupWindow.notifyOpener: no matching callback found on opener\");\r\n }\r\n }\r\n else {\r\n Log.warn(\"PopupWindow.notifyOpener: no state found in response url\");\r\n }\r\n }\r\n }\r\n else {\r\n Log.warn(\"PopupWindow.notifyOpener: no window.opener. Can't complete notification.\");\r\n }\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { PopupWindow } from './PopupWindow.js';\r\n\r\nexport class PopupNavigator {\r\n\r\n prepare(params) {\r\n let popup = new PopupWindow(params);\r\n return Promise.resolve(popup);\r\n }\r\n\r\n callback(url, keepOpen, delimiter) {\r\n Log.debug(\"PopupNavigator.callback\");\r\n\r\n try {\r\n PopupWindow.notifyOpener(url, keepOpen, delimiter);\r\n return Promise.resolve();\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nconst DefaultTimeout = 10000;\r\n\r\nexport class IFrameWindow {\r\n\r\n constructor(params) {\r\n this._promise = new Promise((resolve, reject) => {\r\n this._resolve = resolve;\r\n this._reject = reject;\r\n });\r\n\r\n this._boundMessageEvent = this._message.bind(this);\r\n window.addEventListener(\"message\", this._boundMessageEvent, false);\r\n\r\n this._frame = window.document.createElement(\"iframe\");\r\n\r\n // shotgun approach\r\n this._frame.style.visibility = \"hidden\";\r\n this._frame.style.position = \"absolute\";\r\n this._frame.width = 0;\r\n this._frame.height = 0;\r\n\r\n window.document.body.appendChild(this._frame);\r\n }\r\n\r\n navigate(params) {\r\n if (!params || !params.url) {\r\n this._error(\"No url provided\");\r\n }\r\n else {\r\n let timeout = params.silentRequestTimeout || DefaultTimeout;\r\n Log.debug(\"IFrameWindow.navigate: Using timeout of:\", timeout);\r\n this._timer = window.setTimeout(this._timeout.bind(this), timeout);\r\n this._frame.src = params.url;\r\n }\r\n\r\n return this.promise;\r\n }\r\n\r\n get promise() {\r\n return this._promise;\r\n }\r\n\r\n _success(data) {\r\n this._cleanup();\r\n\r\n Log.debug(\"IFrameWindow: Successful response from frame window\");\r\n this._resolve(data);\r\n }\r\n _error(message) {\r\n this._cleanup();\r\n\r\n Log.error(message);\r\n this._reject(new Error(message));\r\n }\r\n\r\n close() {\r\n this._cleanup();\r\n }\r\n\r\n _cleanup() {\r\n if (this._frame) {\r\n Log.debug(\"IFrameWindow: cleanup\");\r\n\r\n window.removeEventListener(\"message\", this._boundMessageEvent, false);\r\n window.clearTimeout(this._timer);\r\n window.document.body.removeChild(this._frame);\r\n\r\n this._timer = null;\r\n this._frame = null;\r\n this._boundMessageEvent = null;\r\n }\r\n }\r\n\r\n _timeout() {\r\n Log.debug(\"IFrameWindow.timeout\");\r\n this._error(\"Frame window timed out\");\r\n }\r\n\r\n _message(e) {\r\n Log.debug(\"IFrameWindow.message\");\r\n\r\n if (this._timer &&\r\n e.origin === this._origin &&\r\n e.source === this._frame.contentWindow &&\r\n (typeof e.data === 'string' && (e.data.startsWith('http://') || e.data.startsWith('https://')))\r\n ) {\r\n let url = e.data;\r\n if (url) {\r\n this._success({ url: url });\r\n }\r\n else {\r\n this._error(\"Invalid response from frame\");\r\n }\r\n }\r\n }\r\n\r\n get _origin() {\r\n return location.protocol + \"//\" + location.host;\r\n }\r\n\r\n static notifyParent(url) {\r\n Log.debug(\"IFrameWindow.notifyParent\");\r\n url = url || window.location.href;\r\n if (url) {\r\n Log.debug(\"IFrameWindow.notifyParent: posting url message to parent\");\r\n window.parent.postMessage(url, location.protocol + \"//\" + location.host);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { IFrameWindow } from './IFrameWindow.js';\r\n\r\nexport class IFrameNavigator {\r\n\r\n prepare(params) {\r\n let frame = new IFrameWindow(params);\r\n return Promise.resolve(frame);\r\n }\r\n\r\n callback(url) {\r\n Log.debug(\"IFrameNavigator.callback\");\r\n\r\n try {\r\n IFrameWindow.notifyParent(url);\r\n return Promise.resolve();\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { OidcClientSettings } from './OidcClientSettings.js';\r\nimport { RedirectNavigator } from './RedirectNavigator.js';\r\nimport { PopupNavigator } from './PopupNavigator.js';\r\nimport { IFrameNavigator } from './IFrameNavigator.js';\r\nimport { WebStorageStateStore } from './WebStorageStateStore.js';\r\nimport { Global } from './Global.js';\r\nimport { SigninRequest } from './SigninRequest.js';\r\n\r\nconst DefaultAccessTokenExpiringNotificationTime = 60;\r\nconst DefaultCheckSessionInterval = 2000;\r\n\r\nexport class UserManagerSettings extends OidcClientSettings {\r\n constructor({\r\n popup_redirect_uri,\r\n popup_post_logout_redirect_uri,\r\n popupWindowFeatures,\r\n popupWindowTarget,\r\n silent_redirect_uri,\r\n silentRequestTimeout,\r\n automaticSilentRenew = false,\r\n validateSubOnSilentRenew = false,\r\n includeIdTokenInSilentRenew = true,\r\n monitorSession = true,\r\n monitorAnonymousSession = false,\r\n checkSessionInterval = DefaultCheckSessionInterval,\r\n stopCheckSessionOnError = true,\r\n query_status_response_type,\r\n revokeAccessTokenOnSignout = false,\r\n accessTokenExpiringNotificationTime = DefaultAccessTokenExpiringNotificationTime,\r\n redirectNavigator = new RedirectNavigator(),\r\n popupNavigator = new PopupNavigator(),\r\n iframeNavigator = new IFrameNavigator(),\r\n userStore = new WebStorageStateStore({ store: Global.sessionStorage })\r\n } = {}) {\r\n super(arguments[0]);\r\n\r\n this._popup_redirect_uri = popup_redirect_uri;\r\n this._popup_post_logout_redirect_uri = popup_post_logout_redirect_uri;\r\n this._popupWindowFeatures = popupWindowFeatures;\r\n this._popupWindowTarget = popupWindowTarget;\r\n\r\n this._silent_redirect_uri = silent_redirect_uri;\r\n this._silentRequestTimeout = silentRequestTimeout;\r\n this._automaticSilentRenew = automaticSilentRenew;\r\n this._validateSubOnSilentRenew = validateSubOnSilentRenew;\r\n this._includeIdTokenInSilentRenew = includeIdTokenInSilentRenew;\r\n this._accessTokenExpiringNotificationTime = accessTokenExpiringNotificationTime;\r\n\r\n this._monitorSession = monitorSession;\r\n this._monitorAnonymousSession = monitorAnonymousSession;\r\n this._checkSessionInterval = checkSessionInterval;\r\n this._stopCheckSessionOnError = stopCheckSessionOnError;\r\n if (query_status_response_type) {\r\n this._query_status_response_type = query_status_response_type;\r\n } \r\n else if (arguments[0] && arguments[0].response_type) {\r\n this._query_status_response_type = SigninRequest.isOidc(arguments[0].response_type) ? \"id_token\" : \"code\";\r\n }\r\n else {\r\n this._query_status_response_type = \"id_token\";\r\n }\r\n this._revokeAccessTokenOnSignout = revokeAccessTokenOnSignout;\r\n\r\n this._redirectNavigator = redirectNavigator;\r\n this._popupNavigator = popupNavigator;\r\n this._iframeNavigator = iframeNavigator;\r\n\r\n this._userStore = userStore;\r\n }\r\n\r\n get popup_redirect_uri() {\r\n return this._popup_redirect_uri;\r\n }\r\n get popup_post_logout_redirect_uri() {\r\n return this._popup_post_logout_redirect_uri;\r\n }\r\n get popupWindowFeatures() {\r\n return this._popupWindowFeatures;\r\n }\r\n get popupWindowTarget() {\r\n return this._popupWindowTarget;\r\n }\r\n\r\n get silent_redirect_uri() {\r\n return this._silent_redirect_uri;\r\n }\r\n get silentRequestTimeout() {\r\n return this._silentRequestTimeout;\r\n }\r\n get automaticSilentRenew() {\r\n return this._automaticSilentRenew;\r\n }\r\n get validateSubOnSilentRenew() {\r\n return this._validateSubOnSilentRenew;\r\n }\r\n get includeIdTokenInSilentRenew() {\r\n return this._includeIdTokenInSilentRenew;\r\n }\r\n get accessTokenExpiringNotificationTime() {\r\n return this._accessTokenExpiringNotificationTime;\r\n }\r\n\r\n get monitorSession() {\r\n return this._monitorSession;\r\n }\r\n get monitorAnonymousSession() {\r\n return this._monitorAnonymousSession;\r\n }\r\n get checkSessionInterval() {\r\n return this._checkSessionInterval;\r\n }\r\n get stopCheckSessionOnError(){\r\n return this._stopCheckSessionOnError;\r\n }\r\n get query_status_response_type(){\r\n return this._query_status_response_type;\r\n }\r\n get revokeAccessTokenOnSignout() {\r\n return this._revokeAccessTokenOnSignout;\r\n }\r\n\r\n get redirectNavigator() {\r\n return this._redirectNavigator;\r\n }\r\n get popupNavigator() {\r\n return this._popupNavigator;\r\n }\r\n get iframeNavigator() {\r\n return this._iframeNavigator;\r\n }\r\n\r\n get userStore() {\r\n return this._userStore;\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport class User {\r\n constructor({id_token, session_state, access_token, refresh_token, token_type, scope, profile, expires_at, state}) {\r\n this.id_token = id_token;\r\n this.session_state = session_state;\r\n this.access_token = access_token;\r\n this.refresh_token = refresh_token;\r\n this.token_type = token_type;\r\n this.scope = scope;\r\n this.profile = profile;\r\n this.expires_at = expires_at;\r\n this.state = state;\r\n }\r\n\r\n get expires_in() {\r\n if (this.expires_at) {\r\n let now = parseInt(Date.now() / 1000);\r\n return this.expires_at - now;\r\n }\r\n return undefined;\r\n }\r\n set expires_in(value) {\r\n let expires_in = parseInt(value);\r\n if (typeof expires_in === 'number' && expires_in > 0) {\r\n let now = parseInt(Date.now() / 1000);\r\n this.expires_at = now + expires_in;\r\n }\r\n }\r\n\r\n get expired() {\r\n let expires_in = this.expires_in;\r\n if (expires_in !== undefined) {\r\n return expires_in <= 0;\r\n }\r\n return undefined;\r\n }\r\n\r\n get scopes() {\r\n return (this.scope || \"\").split(\" \");\r\n }\r\n\r\n toStorageString() {\r\n Log.debug(\"User.toStorageString\");\r\n return JSON.stringify({\r\n id_token: this.id_token,\r\n session_state: this.session_state,\r\n access_token: this.access_token,\r\n refresh_token: this.refresh_token,\r\n token_type: this.token_type,\r\n scope: this.scope,\r\n profile: this.profile,\r\n expires_at: this.expires_at\r\n });\r\n }\r\n\r\n static fromStorageString(storageString) {\r\n Log.debug(\"User.fromStorageString\");\r\n return new User(JSON.parse(storageString));\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport class Event {\r\n\r\n constructor(name) {\r\n this._name = name;\r\n this._callbacks = [];\r\n }\r\n\r\n addHandler(cb) {\r\n this._callbacks.push(cb);\r\n }\r\n\r\n removeHandler(cb) {\r\n var idx = this._callbacks.findIndex(item => item === cb);\r\n if (idx >= 0) {\r\n this._callbacks.splice(idx, 1);\r\n }\r\n }\r\n\r\n raise(...params) {\r\n Log.debug(\"Event: Raising event: \" + this._name);\r\n for (let i = 0; i < this._callbacks.length; i++) {\r\n this._callbacks[i](...params);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { Global } from './Global.js';\r\nimport { Event } from './Event.js';\r\n\r\nconst TimerDuration = 5; // seconds\r\n\r\nexport class Timer extends Event {\r\n\r\n constructor(name, timer = Global.timer, nowFunc = undefined) {\r\n super(name);\r\n this._timer = timer;\r\n\r\n if (nowFunc) {\r\n this._nowFunc = nowFunc;\r\n }\r\n else {\r\n this._nowFunc = () => Date.now() / 1000;\r\n }\r\n }\r\n\r\n get now() {\r\n return parseInt(this._nowFunc());\r\n }\r\n\r\n init(duration) {\r\n if (duration <= 0) {\r\n duration = 1;\r\n }\r\n duration = parseInt(duration);\r\n\r\n var expiration = this.now + duration;\r\n if (this.expiration === expiration && this._timerHandle) {\r\n // no need to reinitialize to same expiration, so bail out\r\n Log.debug(\"Timer.init timer \" + this._name + \" skipping initialization since already initialized for expiration:\", this.expiration);\r\n return;\r\n }\r\n\r\n this.cancel();\r\n\r\n Log.debug(\"Timer.init timer \" + this._name + \" for duration:\", duration);\r\n this._expiration = expiration;\r\n\r\n // we're using a fairly short timer and then checking the expiration in the\r\n // callback to handle scenarios where the browser device sleeps, and then\r\n // the timers end up getting delayed.\r\n var timerDuration = TimerDuration;\r\n if (duration < timerDuration) {\r\n timerDuration = duration;\r\n }\r\n this._timerHandle = this._timer.setInterval(this._callback.bind(this), timerDuration * 1000);\r\n }\r\n \r\n get expiration() {\r\n return this._expiration;\r\n }\r\n\r\n cancel() {\r\n if (this._timerHandle) {\r\n Log.debug(\"Timer.cancel: \", this._name);\r\n this._timer.clearInterval(this._timerHandle);\r\n this._timerHandle = null;\r\n }\r\n }\r\n\r\n _callback() {\r\n var diff = this._expiration - this.now;\r\n Log.debug(\"Timer.callback; \" + this._name + \" timer expires in:\", diff);\r\n\r\n if (this._expiration <= this.now) {\r\n this.cancel();\r\n super.raise();\r\n }\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { Timer } from './Timer.js';\r\n\r\nconst DefaultAccessTokenExpiringNotificationTime = 60; // seconds\r\n\r\nexport class AccessTokenEvents {\r\n\r\n constructor({\r\n accessTokenExpiringNotificationTime = DefaultAccessTokenExpiringNotificationTime,\r\n accessTokenExpiringTimer = new Timer(\"Access token expiring\"),\r\n accessTokenExpiredTimer = new Timer(\"Access token expired\")\r\n } = {}) {\r\n this._accessTokenExpiringNotificationTime = accessTokenExpiringNotificationTime;\r\n\r\n this._accessTokenExpiring = accessTokenExpiringTimer;\r\n this._accessTokenExpired = accessTokenExpiredTimer;\r\n }\r\n\r\n load(container) {\r\n // only register events if there's an access token and it has an expiration\r\n if (container.access_token && container.expires_in !== undefined) {\r\n let duration = container.expires_in;\r\n Log.debug(\"AccessTokenEvents.load: access token present, remaining duration:\", duration);\r\n\r\n if (duration > 0) {\r\n // only register expiring if we still have time\r\n let expiring = duration - this._accessTokenExpiringNotificationTime;\r\n if (expiring <= 0){\r\n expiring = 1;\r\n }\r\n \r\n Log.debug(\"AccessTokenEvents.load: registering expiring timer in:\", expiring);\r\n this._accessTokenExpiring.init(expiring);\r\n }\r\n else {\r\n Log.debug(\"AccessTokenEvents.load: canceling existing expiring timer becase we're past expiration.\");\r\n this._accessTokenExpiring.cancel();\r\n }\r\n\r\n // if it's negative, it will still fire\r\n let expired = duration + 1;\r\n Log.debug(\"AccessTokenEvents.load: registering expired timer in:\", expired);\r\n this._accessTokenExpired.init(expired);\r\n }\r\n else {\r\n this._accessTokenExpiring.cancel();\r\n this._accessTokenExpired.cancel();\r\n }\r\n }\r\n\r\n unload() {\r\n Log.debug(\"AccessTokenEvents.unload: canceling existing access token timers\");\r\n this._accessTokenExpiring.cancel();\r\n this._accessTokenExpired.cancel();\r\n }\r\n\r\n addAccessTokenExpiring(cb) {\r\n this._accessTokenExpiring.addHandler(cb);\r\n }\r\n removeAccessTokenExpiring(cb) {\r\n this._accessTokenExpiring.removeHandler(cb);\r\n }\r\n\r\n addAccessTokenExpired(cb) {\r\n this._accessTokenExpired.addHandler(cb);\r\n }\r\n removeAccessTokenExpired(cb) {\r\n this._accessTokenExpired.removeHandler(cb);\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { AccessTokenEvents } from './AccessTokenEvents.js';\r\nimport { Event } from './Event.js';\r\n\r\nexport class UserManagerEvents extends AccessTokenEvents {\r\n\r\n constructor(settings) {\r\n super(settings);\r\n this._userLoaded = new Event(\"User loaded\");\r\n this._userUnloaded = new Event(\"User unloaded\");\r\n this._silentRenewError = new Event(\"Silent renew error\");\r\n this._userSignedIn = new Event(\"User signed in\");\r\n this._userSignedOut = new Event(\"User signed out\");\r\n this._userSessionChanged = new Event(\"User session changed\");\r\n }\r\n\r\n load(user, raiseEvent=true) {\r\n Log.debug(\"UserManagerEvents.load\");\r\n super.load(user);\r\n if (raiseEvent) {\r\n this._userLoaded.raise(user);\r\n }\r\n }\r\n unload() {\r\n Log.debug(\"UserManagerEvents.unload\");\r\n super.unload();\r\n this._userUnloaded.raise();\r\n }\r\n\r\n addUserLoaded(cb) {\r\n this._userLoaded.addHandler(cb);\r\n }\r\n removeUserLoaded(cb) {\r\n this._userLoaded.removeHandler(cb);\r\n }\r\n\r\n addUserUnloaded(cb) {\r\n this._userUnloaded.addHandler(cb);\r\n }\r\n removeUserUnloaded(cb) {\r\n this._userUnloaded.removeHandler(cb);\r\n }\r\n\r\n addSilentRenewError(cb) {\r\n this._silentRenewError.addHandler(cb);\r\n }\r\n removeSilentRenewError(cb) {\r\n this._silentRenewError.removeHandler(cb);\r\n }\r\n _raiseSilentRenewError(e) {\r\n Log.debug(\"UserManagerEvents._raiseSilentRenewError\", e.message);\r\n this._silentRenewError.raise(e);\r\n }\r\n\r\n addUserSignedIn(cb) {\r\n this._userSignedIn.addHandler(cb);\r\n }\r\n removeUserSignedIn(cb) {\r\n this._userSignedIn.removeHandler(cb);\r\n }\r\n _raiseUserSignedIn() {\r\n Log.debug(\"UserManagerEvents._raiseUserSignedIn\");\r\n this._userSignedIn.raise();\r\n }\r\n\r\n addUserSignedOut(cb) {\r\n this._userSignedOut.addHandler(cb);\r\n }\r\n removeUserSignedOut(cb) {\r\n this._userSignedOut.removeHandler(cb);\r\n }\r\n _raiseUserSignedOut() {\r\n Log.debug(\"UserManagerEvents._raiseUserSignedOut\");\r\n this._userSignedOut.raise();\r\n }\r\n\r\n addUserSessionChanged(cb) {\r\n this._userSessionChanged.addHandler(cb);\r\n }\r\n removeUserSessionChanged(cb) {\r\n this._userSessionChanged.removeHandler(cb);\r\n }\r\n _raiseUserSessionChanged() {\r\n Log.debug(\"UserManagerEvents._raiseUserSessionChanged\");\r\n this._userSessionChanged.raise();\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nexport class SilentRenewService {\r\n\r\n constructor(userManager) {\r\n this._userManager = userManager;\r\n }\r\n\r\n start() {\r\n if (!this._callback) {\r\n this._callback = this._tokenExpiring.bind(this);\r\n this._userManager.events.addAccessTokenExpiring(this._callback);\r\n\r\n // this will trigger loading of the user so the expiring events can be initialized\r\n this._userManager.getUser().then(user=>{\r\n // deliberate nop\r\n }).catch(err=>{\r\n // catch to suppress errors since we're in a ctor\r\n Log.error(\"SilentRenewService.start: Error from getUser:\", err.message);\r\n });\r\n }\r\n }\r\n\r\n stop() {\r\n if (this._callback) {\r\n this._userManager.events.removeAccessTokenExpiring(this._callback);\r\n delete this._callback;\r\n }\r\n }\r\n\r\n _tokenExpiring() {\r\n this._userManager.signinSilent().then(user => {\r\n Log.debug(\"SilentRenewService._tokenExpiring: Silent token renewal successful\");\r\n }, err => {\r\n Log.error(\"SilentRenewService._tokenExpiring: Error from signinSilent:\", err.message);\r\n this._userManager.events._raiseSilentRenewError(err);\r\n });\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\n\r\nconst DefaultInterval = 2000;\r\n\r\nexport class CheckSessionIFrame {\r\n constructor(callback, client_id, url, interval, stopOnError = true) {\r\n this._callback = callback;\r\n this._client_id = client_id;\r\n this._url = url;\r\n this._interval = interval || DefaultInterval;\r\n this._stopOnError = stopOnError;\r\n\r\n var idx = url.indexOf(\"/\", url.indexOf(\"//\") + 2);\r\n this._frame_origin = url.substr(0, idx);\r\n\r\n this._frame = window.document.createElement(\"iframe\");\r\n\r\n // shotgun approach\r\n this._frame.style.visibility = \"hidden\";\r\n this._frame.style.position = \"absolute\";\r\n this._frame.style.display = \"none\";\r\n this._frame.width = 0;\r\n this._frame.height = 0;\r\n\r\n this._frame.src = url;\r\n }\r\n load() {\r\n return new Promise((resolve) => {\r\n this._frame.onload = () => {\r\n resolve();\r\n }\r\n\r\n window.document.body.appendChild(this._frame);\r\n this._boundMessageEvent = this._message.bind(this);\r\n window.addEventListener(\"message\", this._boundMessageEvent, false);\r\n });\r\n }\r\n _message(e) {\r\n if (e.origin === this._frame_origin &&\r\n e.source === this._frame.contentWindow\r\n ) {\r\n if (e.data === \"error\") {\r\n Log.error(\"CheckSessionIFrame: error message from check session op iframe\");\r\n if (this._stopOnError) {\r\n this.stop();\r\n }\r\n }\r\n else if (e.data === \"changed\") {\r\n Log.debug(\"CheckSessionIFrame: changed message from check session op iframe\");\r\n this.stop();\r\n this._callback();\r\n }\r\n else {\r\n Log.debug(\"CheckSessionIFrame: \" + e.data + \" message from check session op iframe\");\r\n }\r\n }\r\n }\r\n start(session_state) {\r\n if (this._session_state !== session_state) {\r\n Log.debug(\"CheckSessionIFrame.start\");\r\n\r\n this.stop();\r\n\r\n this._session_state = session_state;\r\n\r\n let send = () => {\r\n this._frame.contentWindow.postMessage(this._client_id + \" \" + this._session_state, this._frame_origin);\r\n };\r\n \r\n // trigger now\r\n send();\r\n\r\n // and setup timer\r\n this._timer = window.setInterval(send, this._interval);\r\n }\r\n }\r\n\r\n stop() {\r\n this._session_state = null;\r\n\r\n if (this._timer) {\r\n Log.debug(\"CheckSessionIFrame.stop\");\r\n\r\n window.clearInterval(this._timer);\r\n this._timer = null;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { CheckSessionIFrame } from './CheckSessionIFrame.js';\r\nimport { Global } from './Global.js';\r\n\r\nexport class SessionMonitor {\r\n\r\n constructor(userManager, CheckSessionIFrameCtor = CheckSessionIFrame, timer = Global.timer) {\r\n if (!userManager) {\r\n Log.error(\"SessionMonitor.ctor: No user manager passed to SessionMonitor\");\r\n throw new Error(\"userManager\");\r\n }\r\n\r\n this._userManager = userManager;\r\n this._CheckSessionIFrameCtor = CheckSessionIFrameCtor;\r\n this._timer = timer;\r\n\r\n this._userManager.events.addUserLoaded(this._start.bind(this));\r\n this._userManager.events.addUserUnloaded(this._stop.bind(this));\r\n\r\n Promise.resolve(this._userManager.getUser().then(user => {\r\n // doing this manually here since calling getUser \r\n // doesn't trigger load event.\r\n if (user) {\r\n this._start(user);\r\n }\r\n else if (this._settings.monitorAnonymousSession) {\r\n this._userManager.querySessionStatus().then(session => {\r\n let tmpUser = {\r\n session_state : session.session_state\r\n };\r\n if (session.sub && session.sid) {\r\n tmpUser.profile = {\r\n sub: session.sub,\r\n sid: session.sid\r\n };\r\n }\r\n this._start(tmpUser);\r\n })\r\n .catch(err => {\r\n // catch to suppress errors since we're in a ctor\r\n Log.error(\"SessionMonitor ctor: error from querySessionStatus:\", err.message);\r\n });\r\n }\r\n }).catch(err => {\r\n // catch to suppress errors since we're in a ctor\r\n Log.error(\"SessionMonitor ctor: error from getUser:\", err.message);\r\n }));\r\n }\r\n\r\n get _settings() {\r\n return this._userManager.settings;\r\n }\r\n get _metadataService() {\r\n return this._userManager.metadataService;\r\n }\r\n get _client_id() {\r\n return this._settings.client_id;\r\n }\r\n get _checkSessionInterval() {\r\n return this._settings.checkSessionInterval;\r\n }\r\n get _stopCheckSessionOnError() {\r\n return this._settings.stopCheckSessionOnError;\r\n }\r\n\r\n _start(user) {\r\n let session_state = user.session_state;\r\n\r\n if (session_state) {\r\n if (user.profile) {\r\n this._sub = user.profile.sub;\r\n this._sid = user.profile.sid;\r\n Log.debug(\"SessionMonitor._start: session_state:\", session_state, \", sub:\", this._sub);\r\n }\r\n else {\r\n this._sub = undefined;\r\n this._sid = undefined;\r\n Log.debug(\"SessionMonitor._start: session_state:\", session_state, \", anonymous user\");\r\n }\r\n\r\n if (!this._checkSessionIFrame) {\r\n this._metadataService.getCheckSessionIframe().then(url => {\r\n if (url) {\r\n Log.debug(\"SessionMonitor._start: Initializing check session iframe\")\r\n\r\n let client_id = this._client_id;\r\n let interval = this._checkSessionInterval;\r\n let stopOnError = this._stopCheckSessionOnError;\r\n\r\n this._checkSessionIFrame = new this._CheckSessionIFrameCtor(this._callback.bind(this), client_id, url, interval, stopOnError);\r\n this._checkSessionIFrame.load().then(() => {\r\n this._checkSessionIFrame.start(session_state);\r\n });\r\n }\r\n else {\r\n Log.warn(\"SessionMonitor._start: No check session iframe found in the metadata\");\r\n }\r\n }).catch(err => {\r\n // catch to suppress errors since we're in non-promise callback\r\n Log.error(\"SessionMonitor._start: Error from getCheckSessionIframe:\", err.message);\r\n });\r\n }\r\n else {\r\n this._checkSessionIFrame.start(session_state);\r\n }\r\n }\r\n }\r\n\r\n _stop() {\r\n this._sub = undefined;\r\n this._sid = undefined;\r\n\r\n if (this._checkSessionIFrame) {\r\n Log.debug(\"SessionMonitor._stop\");\r\n this._checkSessionIFrame.stop();\r\n }\r\n\r\n if (this._settings.monitorAnonymousSession) {\r\n // using a timer to delay re-initialization to avoid race conditions during signout\r\n let timerHandle = this._timer.setInterval(()=>{\r\n this._timer.clearInterval(timerHandle);\r\n\r\n this._userManager.querySessionStatus().then(session => {\r\n let tmpUser = {\r\n session_state : session.session_state\r\n };\r\n if (session.sub && session.sid) {\r\n tmpUser.profile = {\r\n sub: session.sub,\r\n sid: session.sid\r\n };\r\n }\r\n this._start(tmpUser);\r\n })\r\n .catch(err => {\r\n // catch to suppress errors since we're in a callback\r\n Log.error(\"SessionMonitor: error from querySessionStatus:\", err.message);\r\n });\r\n\r\n }, 1000);\r\n }\r\n }\r\n\r\n _callback() {\r\n this._userManager.querySessionStatus().then(session => {\r\n var raiseEvent = true;\r\n\r\n if (session) {\r\n if (session.sub === this._sub) {\r\n raiseEvent = false;\r\n this._checkSessionIFrame.start(session.session_state);\r\n\r\n if (session.sid === this._sid) {\r\n Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, restarting check session iframe; session_state:\", session.session_state);\r\n }\r\n else {\r\n Log.debug(\"SessionMonitor._callback: Same sub still logged in at OP, session state has changed, restarting check session iframe; session_state:\", session.session_state);\r\n this._userManager.events._raiseUserSessionChanged();\r\n }\r\n }\r\n else {\r\n Log.debug(\"SessionMonitor._callback: Different subject signed into OP:\", session.sub);\r\n }\r\n }\r\n else {\r\n Log.debug(\"SessionMonitor._callback: Subject no longer signed into OP\");\r\n }\r\n\r\n if (raiseEvent) {\r\n if (this._sub) {\r\n Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed out event\");\r\n this._userManager.events._raiseUserSignedOut();\r\n }\r\n else {\r\n Log.debug(\"SessionMonitor._callback: SessionMonitor._callback; raising signed in event\");\r\n this._userManager.events._raiseUserSignedIn();\r\n }\r\n }\r\n }).catch(err => {\r\n if (this._sub) {\r\n Log.debug(\"SessionMonitor._callback: Error calling queryCurrentSigninSession; raising signed out event\", err.message);\r\n this._userManager.events._raiseUserSignedOut();\r\n }\r\n });\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { MetadataService } from './MetadataService.js';\r\nimport { Global } from './Global.js';\r\n\r\nconst AccessTokenTypeHint = \"access_token\";\r\nconst RefreshTokenTypeHint = \"refresh_token\";\r\n\r\nexport class TokenRevocationClient {\r\n constructor(settings, XMLHttpRequestCtor = Global.XMLHttpRequest, MetadataServiceCtor = MetadataService) {\r\n if (!settings) {\r\n Log.error(\"TokenRevocationClient.ctor: No settings provided\");\r\n throw new Error(\"No settings provided.\");\r\n }\r\n\r\n this._settings = settings;\r\n this._XMLHttpRequestCtor = XMLHttpRequestCtor;\r\n this._metadataService = new MetadataServiceCtor(this._settings);\r\n }\r\n\r\n revoke(token, required, type = \"access_token\") {\r\n if (!token) {\r\n Log.error(\"TokenRevocationClient.revoke: No token provided\");\r\n throw new Error(\"No token provided.\");\r\n }\r\n\r\n if (type !== AccessTokenTypeHint && type != RefreshTokenTypeHint) {\r\n Log.error(\"TokenRevocationClient.revoke: Invalid token type\");\r\n throw new Error(\"Invalid token type.\");\r\n }\r\n\r\n return this._metadataService.getRevocationEndpoint().then(url => {\r\n if (!url) {\r\n if (required) {\r\n Log.error(\"TokenRevocationClient.revoke: Revocation not supported\");\r\n throw new Error(\"Revocation not supported\");\r\n }\r\n\r\n // not required, so don't error and just return\r\n return;\r\n }\r\n\r\n Log.debug(\"TokenRevocationClient.revoke: Revoking \" + type);\r\n var client_id = this._settings.client_id;\r\n var client_secret = this._settings.client_secret;\r\n return this._revoke(url, client_id, client_secret, token, type);\r\n });\r\n }\r\n\r\n _revoke(url, client_id, client_secret, token, type) {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n var xhr = new this._XMLHttpRequestCtor();\r\n xhr.open(\"POST\", url);\r\n\r\n xhr.onload = () => {\r\n Log.debug(\"TokenRevocationClient.revoke: HTTP response received, status\", xhr.status);\r\n\r\n if (xhr.status === 200) {\r\n resolve();\r\n }\r\n else {\r\n reject(Error(xhr.statusText + \" (\" + xhr.status + \")\"));\r\n }\r\n };\r\n xhr.onerror = () => { \r\n Log.debug(\"TokenRevocationClient.revoke: Network Error.\")\r\n reject(\"Network Error\");\r\n };\r\n\r\n var body = \"client_id=\" + encodeURIComponent(client_id);\r\n if (client_secret) {\r\n body += \"&client_secret=\" + encodeURIComponent(client_secret);\r\n }\r\n body += \"&token_type_hint=\" + encodeURIComponent(type);\r\n body += \"&token=\" + encodeURIComponent(token);\r\n\r\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n xhr.send(body);\r\n });\r\n }\r\n}\r\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\r\n\r\nimport { Log } from './Log.js';\r\nimport { OidcClient } from './OidcClient.js';\r\nimport { UserManagerSettings } from './UserManagerSettings.js';\r\nimport { User } from './User.js';\r\nimport { UserManagerEvents } from './UserManagerEvents.js';\r\nimport { SilentRenewService } from './SilentRenewService.js';\r\nimport { SessionMonitor } from './SessionMonitor.js';\r\nimport { SigninRequest } from \"./SigninRequest\";\r\nimport { TokenRevocationClient } from './TokenRevocationClient.js';\r\nimport { TokenClient } from './TokenClient.js';\r\nimport { JoseUtil } from './JoseUtil.js';\r\n\r\n\r\nexport class UserManager extends OidcClient {\r\n constructor(settings = {},\r\n SilentRenewServiceCtor = SilentRenewService,\r\n SessionMonitorCtor = SessionMonitor,\r\n TokenRevocationClientCtor = TokenRevocationClient,\r\n TokenClientCtor = TokenClient,\r\n joseUtil = JoseUtil\r\n ) {\r\n\r\n if (!(settings instanceof UserManagerSettings)) {\r\n settings = new UserManagerSettings(settings);\r\n }\r\n super(settings);\r\n\r\n this._events = new UserManagerEvents(settings);\r\n this._silentRenewService = new SilentRenewServiceCtor(this);\r\n\r\n // order is important for the following properties; these services depend upon the events.\r\n if (this.settings.automaticSilentRenew) {\r\n Log.debug(\"UserManager.ctor: automaticSilentRenew is configured, setting up silent renew\");\r\n this.startSilentRenew();\r\n }\r\n\r\n if (this.settings.monitorSession) {\r\n Log.debug(\"UserManager.ctor: monitorSession is configured, setting up session monitor\");\r\n this._sessionMonitor = new SessionMonitorCtor(this);\r\n }\r\n\r\n this._tokenRevocationClient = new TokenRevocationClientCtor(this._settings);\r\n this._tokenClient = new TokenClientCtor(this._settings);\r\n this._joseUtil = joseUtil;\r\n }\r\n\r\n get _redirectNavigator() {\r\n return this.settings.redirectNavigator;\r\n }\r\n get _popupNavigator() {\r\n return this.settings.popupNavigator;\r\n }\r\n get _iframeNavigator() {\r\n return this.settings.iframeNavigator;\r\n }\r\n get _userStore() {\r\n return this.settings.userStore;\r\n }\r\n\r\n get events() {\r\n return this._events;\r\n }\r\n\r\n getUser() {\r\n return this._loadUser().then(user => {\r\n if (user) {\r\n Log.info(\"UserManager.getUser: user loaded\");\r\n\r\n this._events.load(user, false);\r\n\r\n return user;\r\n }\r\n else {\r\n Log.info(\"UserManager.getUser: user not found in storage\");\r\n return null;\r\n }\r\n });\r\n }\r\n\r\n removeUser() {\r\n return this.storeUser(null).then(() => {\r\n Log.info(\"UserManager.removeUser: user removed from storage\");\r\n this._events.unload();\r\n });\r\n }\r\n\r\n signinRedirect(args = {}) {\r\n args = Object.assign({}, args);\r\n\r\n args.request_type = \"si:r\";\r\n let navParams = {\r\n useReplaceToNavigate : args.useReplaceToNavigate\r\n };\r\n return this._signinStart(args, this._redirectNavigator, navParams).then(()=>{\r\n Log.info(\"UserManager.signinRedirect: successful\");\r\n });\r\n }\r\n signinRedirectCallback(url) {\r\n return this._signinEnd(url || this._redirectNavigator.url).then(user => {\r\n if (user.profile && user.profile.sub) {\r\n Log.info(\"UserManager.signinRedirectCallback: successful, signed in sub: \", user.profile.sub);\r\n }\r\n else {\r\n Log.info(\"UserManager.signinRedirectCallback: no sub\");\r\n }\r\n\r\n return user;\r\n });\r\n }\r\n\r\n signinPopup(args = {}) {\r\n args = Object.assign({}, args);\r\n\r\n args.request_type = \"si:p\";\r\n let url = args.redirect_uri || this.settings.popup_redirect_uri || this.settings.redirect_uri;\r\n if (!url) {\r\n Log.error(\"UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured\");\r\n return Promise.reject(new Error(\"No popup_redirect_uri or redirect_uri configured\"));\r\n }\r\n\r\n args.redirect_uri = url;\r\n args.display = \"popup\";\r\n\r\n return this._signin(args, this._popupNavigator, {\r\n startUrl: url,\r\n popupWindowFeatures: args.popupWindowFeatures || this.settings.popupWindowFeatures,\r\n popupWindowTarget: args.popupWindowTarget || this.settings.popupWindowTarget\r\n }).then(user => {\r\n if (user) {\r\n if (user.profile && user.profile.sub) {\r\n Log.info(\"UserManager.signinPopup: signinPopup successful, signed in sub: \", user.profile.sub);\r\n }\r\n else {\r\n Log.info(\"UserManager.signinPopup: no sub\");\r\n }\r\n }\r\n\r\n return user;\r\n });\r\n }\r\n signinPopupCallback(url) {\r\n return this._signinCallback(url, this._popupNavigator).then(user => {\r\n if (user) {\r\n if (user.profile && user.profile.sub) {\r\n Log.info(\"UserManager.signinPopupCallback: successful, signed in sub: \", user.profile.sub);\r\n }\r\n else {\r\n Log.info(\"UserManager.signinPopupCallback: no sub\");\r\n }\r\n }\r\n\r\n return user;\r\n }).catch(err=>{\r\n Log.error(\"UserManager.signinPopupCallback error: \" + err && err.message);\r\n });\r\n }\r\n\r\n signinSilent(args = {}) {\r\n args = Object.assign({}, args);\r\n\r\n // first determine if we have a refresh token, or need to use iframe\r\n return this._loadUser().then(user => {\r\n if (user && user.refresh_token) {\r\n args.refresh_token = user.refresh_token;\r\n return this._useRefreshToken(args);\r\n }\r\n else {\r\n args.request_type = \"si:s\";\r\n args.id_token_hint = args.id_token_hint || (this.settings.includeIdTokenInSilentRenew && user && user.id_token);\r\n if (user && this._settings.validateSubOnSilentRenew) {\r\n Log.debug(\"UserManager.signinSilent, subject prior to silent renew: \", user.profile.sub);\r\n args.current_sub = user.profile.sub;\r\n }\r\n return this._signinSilentIframe(args);\r\n }\r\n });\r\n }\r\n\r\n _useRefreshToken(args = {}) {\r\n return this._tokenClient.exchangeRefreshToken(args).then(result => {\r\n if (!result) {\r\n Log.error(\"UserManager._useRefreshToken: No response returned from token endpoint\");\r\n return Promise.reject(\"No response returned from token endpoint\");\r\n }\r\n if (!result.access_token) {\r\n Log.error(\"UserManager._useRefreshToken: No access token returned from token endpoint\");\r\n return Promise.reject(\"No access token returned from token endpoint\");\r\n }\r\n\r\n return this._loadUser().then(user => {\r\n if (user) {\r\n let idTokenValidation = Promise.resolve();\r\n if (result.id_token) {\r\n idTokenValidation = this._validateIdTokenFromTokenRefreshToken(user.profile, result.id_token);\r\n }\r\n\r\n return idTokenValidation.then(() => {\r\n Log.debug(\"UserManager._useRefreshToken: refresh token response success\");\r\n user.id_token = result.id_token || user.id_token;\r\n user.access_token = result.access_token;\r\n user.refresh_token = result.refresh_token || user.refresh_token;\r\n user.expires_in = result.expires_in;\r\n\r\n return this.storeUser(user).then(()=>{\r\n this._events.load(user);\r\n return user;\r\n });\r\n });\r\n }\r\n else {\r\n return null;\r\n }\r\n });\r\n });\r\n }\r\n\r\n _validateIdTokenFromTokenRefreshToken(profile, id_token) {\r\n return this._metadataService.getIssuer().then(issuer => {\r\n return this.settings.getEpochTime().then(now => {\r\n return this._joseUtil.validateJwtAttributes(id_token, issuer, this._settings.client_id, this._settings.clockSkew, now).then(payload => {\r\n if (!payload) {\r\n Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token\");\r\n return Promise.reject(new Error(\"Failed to validate id_token\"));\r\n }\r\n if (payload.sub !== profile.sub) {\r\n Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub\");\r\n return Promise.reject(new Error(\"sub in id_token does not match current sub\"));\r\n }\r\n if (payload.auth_time && payload.auth_time !== profile.auth_time) {\r\n Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time\");\r\n return Promise.reject(new Error(\"auth_time in id_token does not match original auth_time\"));\r\n }\r\n if (payload.azp && payload.azp !== profile.azp) {\r\n Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp\");\r\n return Promise.reject(new Error(\"azp in id_token does not match original azp\"));\r\n }\r\n if (!payload.azp && profile.azp) {\r\n Log.error(\"UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token\");\r\n return Promise.reject(new Error(\"azp not in id_token, but present in original id_token\"));\r\n }\r\n });\r\n });\r\n });\r\n }\r\n \r\n _signinSilentIframe(args = {}) {\r\n let url = args.redirect_uri || this.settings.silent_redirect_uri || this.settings.redirect_uri;\r\n if (!url) {\r\n Log.error(\"UserManager.signinSilent: No silent_redirect_uri configured\");\r\n return Promise.reject(new Error(\"No silent_redirect_uri configured\"));\r\n }\r\n\r\n args.redirect_uri = url;\r\n args.prompt = args.prompt || \"none\";\r\n\r\n return this._signin(args, this._iframeNavigator, {\r\n startUrl: url,\r\n silentRequestTimeout: args.silentRequestTimeout || this.settings.silentRequestTimeout\r\n }).then(user => {\r\n if (user) {\r\n if (user.profile && user.profile.sub) {\r\n Log.info(\"UserManager.signinSilent: successful, signed in sub: \", user.profile.sub);\r\n }\r\n else {\r\n Log.info(\"UserManager.signinSilent: no sub\");\r\n }\r\n }\r\n\r\n return user;\r\n });\r\n }\r\n\r\n signinSilentCallback(url) {\r\n return this._signinCallback(url, this._iframeNavigator).then(user => {\r\n if (user) {\r\n if (user.profile && user.profile.sub) {\r\n Log.info(\"UserManager.signinSilentCallback: successful, signed in sub: \", user.profile.sub);\r\n }\r\n else {\r\n Log.info(\"UserManager.signinSilentCallback: no sub\");\r\n }\r\n }\r\n\r\n return user;\r\n });\r\n }\r\n\r\n signinCallback(url) {\r\n return this.readSigninResponseState(url).then(({state, response}) => {\r\n if (state.request_type === \"si:r\") {\r\n return this.signinRedirectCallback(url);\r\n }\r\n if (state.request_type === \"si:p\") {\r\n return this.signinPopupCallback(url);\r\n }\r\n if (state.request_type === \"si:s\") {\r\n return this.signinSilentCallback(url);\r\n }\r\n return Promise.reject(new Error(\"invalid response_type in state\"));\r\n });\r\n }\r\n\r\n signoutCallback(url, keepOpen) {\r\n return this.readSignoutResponseState(url).then(({state, response}) => {\r\n if (state) {\r\n if (state.request_type === \"so:r\") {\r\n return this.signoutRedirectCallback(url);\r\n }\r\n if (state.request_type === \"so:p\") {\r\n return this.signoutPopupCallback(url, keepOpen);\r\n }\r\n return Promise.reject(new Error(\"invalid response_type in state\"));\r\n }\r\n return response;\r\n });\r\n }\r\n\r\n querySessionStatus(args = {}) {\r\n args = Object.assign({}, args);\r\n\r\n args.request_type = \"si:s\"; // this acts like a signin silent\r\n let url = args.redirect_uri || this.settings.silent_redirect_uri || this.settings.redirect_uri;\r\n if (!url) {\r\n Log.error(\"UserManager.querySessionStatus: No silent_redirect_uri configured\");\r\n return Promise.reject(new Error(\"No silent_redirect_uri configured\"));\r\n }\r\n\r\n args.redirect_uri = url;\r\n args.prompt = \"none\";\r\n args.response_type = args.response_type || this.settings.query_status_response_type;\r\n args.scope = args.scope || \"openid\";\r\n args.skipUserInfo = true;\r\n\r\n return this._signinStart(args, this._iframeNavigator, {\r\n startUrl: url,\r\n silentRequestTimeout: args.silentRequestTimeout || this.settings.silentRequestTimeout\r\n }).then(navResponse => {\r\n return this.processSigninResponse(navResponse.url).then(signinResponse => {\r\n Log.debug(\"UserManager.querySessionStatus: got signin response\");\r\n\r\n if (signinResponse.session_state && signinResponse.profile.sub) {\r\n Log.info(\"UserManager.querySessionStatus: querySessionStatus success for sub: \", signinResponse.profile.sub);\r\n return {\r\n session_state: signinResponse.session_state,\r\n sub: signinResponse.profile.sub,\r\n sid: signinResponse.profile.sid\r\n };\r\n }\r\n else {\r\n Log.info(\"querySessionStatus successful, user not authenticated\");\r\n }\r\n })\r\n .catch(err => {\r\n if (err.session_state && this.settings.monitorAnonymousSession) {\r\n if (err.message == \"login_required\" || \r\n err.message == \"consent_required\" || \r\n err.message == \"interaction_required\" || \r\n err.message == \"account_selection_required\"\r\n ) {\r\n Log.info(\"UserManager.querySessionStatus: querySessionStatus success for anonymous user\");\r\n return {\r\n session_state: err.session_state\r\n };\r\n }\r\n }\r\n\r\n throw err;\r\n });\r\n });\r\n }\r\n\r\n _signin(args, navigator, navigatorParams = {}) {\r\n return this._signinStart(args, navigator, navigatorParams).then(navResponse => {\r\n return this._signinEnd(navResponse.url, args);\r\n });\r\n }\r\n _signinStart(args, navigator, navigatorParams = {}) {\r\n\r\n return navigator.prepare(navigatorParams).then(handle => {\r\n Log.debug(\"UserManager._signinStart: got navigator window handle\");\r\n\r\n return this.createSigninRequest(args).then(signinRequest => {\r\n Log.debug(\"UserManager._signinStart: got signin request\");\r\n\r\n navigatorParams.url = signinRequest.url;\r\n navigatorParams.id = signinRequest.state.id;\r\n\r\n return handle.navigate(navigatorParams);\r\n }).catch(err => {\r\n if (handle.close) {\r\n Log.debug(\"UserManager._signinStart: Error after preparing navigator, closing navigator window\");\r\n handle.close();\r\n }\r\n throw err;\r\n });\r\n });\r\n }\r\n _signinEnd(url, args = {}) {\r\n return this.processSigninResponse(url).then(signinResponse => {\r\n Log.debug(\"UserManager._signinEnd: got signin response\");\r\n\r\n let user = new User(signinResponse);\r\n\r\n if (args.current_sub) {\r\n if (args.current_sub !== user.profile.sub) {\r\n Log.debug(\"UserManager._signinEnd: current user does not match user returned from signin. sub from signin: \", user.profile.sub);\r\n return Promise.reject(new Error(\"login_required\"));\r\n }\r\n else {\r\n Log.debug(\"UserManager._signinEnd: current user matches user returned from signin\");\r\n }\r\n }\r\n\r\n return this.storeUser(user).then(() => {\r\n Log.debug(\"UserManager._signinEnd: user stored\");\r\n\r\n this._events.load(user);\r\n\r\n return user;\r\n });\r\n });\r\n }\r\n _signinCallback(url, navigator) {\r\n Log.debug(\"UserManager._signinCallback\");\r\n let useQuery = this._settings.response_mode === \"query\" || (!this._settings.response_mode && SigninRequest.isCode(this._settings.response_type));\r\n let delimiter = useQuery ? \"?\" : \"#\";\r\n return navigator.callback(url, undefined, delimiter);\r\n }\r\n\r\n signoutRedirect(args = {}) {\r\n args = Object.assign({}, args);\r\n\r\n args.request_type = \"so:r\";\r\n let postLogoutRedirectUri = args.post_logout_redirect_uri || this.settings.post_logout_redirect_uri;\r\n if (postLogoutRedirectUri){\r\n args.post_logout_redirect_uri = postLogoutRedirectUri;\r\n }\r\n let navParams = {\r\n useReplaceToNavigate : args.useReplaceToNavigate\r\n };\r\n return this._signoutStart(args, this._redirectNavigator, navParams).then(()=>{\r\n Log.info(\"UserManager.signoutRedirect: successful\");\r\n });\r\n }\r\n signoutRedirectCallback(url) {\r\n return this._signoutEnd(url || this._redirectNavigator.url).then(response=>{\r\n Log.info(\"UserManager.signoutRedirectCallback: successful\");\r\n return response;\r\n });\r\n }\r\n\r\n signoutPopup(args = {}) {\r\n args = Object.assign({}, args);\r\n\r\n args.request_type = \"so:p\";\r\n let url = args.post_logout_redirect_uri || this.settings.popup_post_logout_redirect_uri || this.settings.post_logout_redirect_uri;\r\n args.post_logout_redirect_uri = url;\r\n args.display = \"popup\";\r\n if (args.post_logout_redirect_uri){\r\n // we're putting a dummy entry in here because we\r\n // need a unique id from the state for notification\r\n // to the parent window, which is necessary if we\r\n // plan to return back to the client after signout\r\n // and so we can close the popup after signout\r\n args.state = args.state || {};\r\n }\r\n\r\n return this._signout(args, this._popupNavigator, {\r\n startUrl: url,\r\n popupWindowFeatures: args.popupWindowFeatures || this.settings.popupWindowFeatures,\r\n popupWindowTarget: args.popupWindowTarget || this.settings.popupWindowTarget\r\n }).then(() => {\r\n Log.info(\"UserManager.signoutPopup: successful\");\r\n });\r\n }\r\n signoutPopupCallback(url, keepOpen) {\r\n if (typeof(keepOpen) === 'undefined' && typeof(url) === 'boolean') {\r\n keepOpen = url;\r\n url = null;\r\n }\r\n\r\n let delimiter = '?';\r\n return this._popupNavigator.callback(url, keepOpen, delimiter).then(() => {\r\n Log.info(\"UserManager.signoutPopupCallback: successful\");\r\n });\r\n }\r\n\r\n _signout(args, navigator, navigatorParams = {}) {\r\n return this._signoutStart(args, navigator, navigatorParams).then(navResponse => {\r\n return this._signoutEnd(navResponse.url);\r\n });\r\n }\r\n _signoutStart(args = {}, navigator, navigatorParams = {}) {\r\n return navigator.prepare(navigatorParams).then(handle => {\r\n Log.debug(\"UserManager._signoutStart: got navigator window handle\");\r\n\r\n return this._loadUser().then(user => {\r\n Log.debug(\"UserManager._signoutStart: loaded current user from storage\");\r\n\r\n var revokePromise = this._settings.revokeAccessTokenOnSignout ? this._revokeInternal(user) : Promise.resolve();\r\n return revokePromise.then(() => {\r\n\r\n var id_token = args.id_token_hint || user && user.id_token;\r\n if (id_token) {\r\n Log.debug(\"UserManager._signoutStart: Setting id_token into signout request\");\r\n args.id_token_hint = id_token;\r\n }\r\n\r\n return this.removeUser().then(() => {\r\n Log.debug(\"UserManager._signoutStart: user removed, creating signout request\");\r\n\r\n return this.createSignoutRequest(args).then(signoutRequest => {\r\n Log.debug(\"UserManager._signoutStart: got signout request\");\r\n\r\n navigatorParams.url = signoutRequest.url;\r\n if (signoutRequest.state) {\r\n navigatorParams.id = signoutRequest.state.id;\r\n }\r\n return handle.navigate(navigatorParams);\r\n });\r\n });\r\n });\r\n }).catch(err => {\r\n if (handle.close) {\r\n Log.debug(\"UserManager._signoutStart: Error after preparing navigator, closing navigator window\");\r\n handle.close();\r\n }\r\n throw err;\r\n });\r\n });\r\n }\r\n _signoutEnd(url) {\r\n return this.processSignoutResponse(url).then(signoutResponse => {\r\n Log.debug(\"UserManager._signoutEnd: got signout response\");\r\n\r\n return signoutResponse;\r\n });\r\n }\r\n\r\n revokeAccessToken() {\r\n return this._loadUser().then(user => {\r\n return this._revokeInternal(user, true).then(success => {\r\n if (success) {\r\n Log.debug(\"UserManager.revokeAccessToken: removing token properties from user and re-storing\");\r\n\r\n user.access_token = null;\r\n user.refresh_token = null;\r\n user.expires_at = null;\r\n user.token_type = null;\r\n\r\n return this.storeUser(user).then(() => {\r\n Log.debug(\"UserManager.revokeAccessToken: user stored\");\r\n this._events.load(user);\r\n });\r\n }\r\n });\r\n }).then(()=>{\r\n Log.info(\"UserManager.revokeAccessToken: access token revoked successfully\");\r\n });\r\n }\r\n\r\n _revokeInternal(user, required) {\r\n if (user) {\r\n var access_token = user.access_token;\r\n var refresh_token = user.refresh_token;\r\n\r\n return this._revokeAccessTokenInternal(access_token, required)\r\n .then(atSuccess => {\r\n return this._revokeRefreshTokenInternal(refresh_token, required)\r\n .then(rtSuccess => {\r\n if (!atSuccess && !rtSuccess) {\r\n Log.debug(\"UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format\");\r\n }\r\n \r\n return atSuccess || rtSuccess;\r\n });\r\n });\r\n }\r\n\r\n return Promise.resolve(false);\r\n }\r\n\r\n _revokeAccessTokenInternal(access_token, required) {\r\n // check for JWT vs. reference token\r\n if (!access_token || access_token.indexOf('.') >= 0) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n return this._tokenRevocationClient.revoke(access_token, required).then(() => true);\r\n }\r\n\r\n _revokeRefreshTokenInternal(refresh_token, required) {\r\n if (!refresh_token) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n return this._tokenRevocationClient.revoke(refresh_token, required, \"refresh_token\").then(() => true);\r\n }\r\n\r\n startSilentRenew() {\r\n this._silentRenewService.start();\r\n }\r\n\r\n stopSilentRenew() {\r\n this._silentRenewService.stop();\r\n }\r\n\r\n get _userStoreKey() {\r\n return `user:${this.settings.authority}:${this.settings.client_id}`;\r\n }\r\n\r\n _loadUser() {\r\n return this._userStore.get(this._userStoreKey).then(storageString => {\r\n if (storageString) {\r\n Log.debug(\"UserManager._loadUser: user storageString loaded\");\r\n return User.fromStorageString(storageString);\r\n }\r\n\r\n Log.debug(\"UserManager._loadUser: no user storageString\");\r\n return null;\r\n });\r\n }\r\n\r\n storeUser(user) {\r\n if (user) {\r\n Log.debug(\"UserManager.storeUser: storing user\");\r\n\r\n var storageString = user.toStorageString();\r\n return this._userStore.set(this._userStoreKey, storageString);\r\n }\r\n else {\r\n Log.debug(\"storeUser.storeUser: removing user\");\r\n return this._userStore.remove(this._userStoreKey);\r\n }\r\n }\r\n}\r\n","\r\nimport { WebStorageStateStore, Log } from \"oidc-client\";\r\nimport appsettings from '../../assets/appsettings.json';\r\nimport { UserManager } from \"../../../node_modules/oidc-client/src/UserManager.js\";\r\nexport default class AuthService {\r\n UserManager;\r\n constructor() {\r\n const settings = {\r\n authority: appsettings.OIDC.REACT_APP_OIDC_AUTHORITY,\r\n metadataUrl: appsettings.OIDC.REACT_APP_OIDC_METADATA_URL,\r\n client_id: appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID,\r\n redirect_uri: appsettings.OIDC.REACT_APP_OIDC_REDIRECT_URI,\r\n silent_redirect_uri: appsettings.OIDC.REACT_APP_OIDC_SILENT_REDIRECT_URI,\r\n post_logout_redirect_uri: appsettings.OIDC.REACT_APP_OIDC_REDIRECT_URI,\r\n response_type: 'code', \r\n scope: \"openid profile offline_access\",\r\n \r\n filterProtocolClaims: true, \r\n loadUserInfo: false\r\n };\r\n\r\n this.UserManager = new UserManager({\r\n ...settings,\r\n userStore: new WebStorageStateStore({ store: window.sessionStorage }),\r\n\r\n });\r\n // Logger\r\n Log.logger = console;\r\n Log.level = Log.DEBUG;\r\n this.UserManager.events.addUserLoaded((user) => {\r\n if (window.location.href.indexOf(\"signin-oidc\") !== -1) {\r\n this.navigateToScreen();\r\n }\r\n });\r\n this.UserManager.events.addSilentRenewError((e) => {\r\n });\r\n //oidc-client js \r\n this.UserManager.events.addAccessTokenExpired(() => {\r\n this.UserManager.signinSilent()\r\n });\r\n }\r\n\r\n signinRedirectCallback = () => {\r\n this.UserManager.signinRedirectCallback().then(() => {\r\n });\r\n };\r\n\r\n\r\n getUser = async () => {\r\n const user = await this.UserManager.getUser();\r\n if (!user) {\r\n return await this.UserManager.signinRedirectCallback();\r\n }\r\n return user;\r\n };\r\n\r\n login() {\r\n return this.userManager.signinRedirect().then(res => {\r\n \r\n });\r\n }\r\n\r\n parseJwt = (token) => {\r\n const base64Url = token.split(\".\")[1];\r\n const base64 = base64Url.replace(\"-\", \"+\").replace(\"_\", \"/\");\r\n return JSON.parse(window.atob(base64));\r\n };\r\n\r\n signinRedirect = () => {\r\n localStorage.setItem(\"redirectUri\", window.location.pathname);\r\n this.UserManager.signinRedirect({});\r\n };\r\n\r\n\r\n navigateToScreen = () => {\r\n window.location.replace(\"/Home\");\r\n };\r\n\r\n\r\n isAuthenticated = () => {\r\n const oidcStorage = JSON.parse(sessionStorage.getItem(`oidc.user:${process.env.REACT_APP_AUTH_URL}:${process.env.REACT_APP_IDENTITY_CLIENT_ID}`))\r\n return (!!oidcStorage && !!oidcStorage.access_token)\r\n };\r\n\r\n renewToken() {\r\n return this.UserManager.signinSilent()\r\n };\r\n signinSilentCallback = () => {\r\n this.UserManager.signinSilentCallback();\r\n };\r\n\r\n createSigninRequest = () => {\r\n return this.UserManager.createSigninRequest();\r\n };\r\n\r\n logout = () => {\r\n this.UserManager.signoutRedirect({\r\n id_token_hint: localStorage.getItem(\"id_token\")\r\n });\r\n sessionStorage.clear()\r\n localStorage.clear();\r\n \r\n };\r\n\r\n signoutRedirectCallback = () => {\r\n this.UserManager.signoutRedirectCallback().then(() => {\r\n localStorage.clear();\r\n sessionStorage.clear()\r\n window.location.replace(process.env.REACT_APP_PUBLIC_URL);\r\n });\r\n this.UserManager.clearStaleState();\r\n };\r\n}","import axios, { AxiosInstance, AxiosResponse, AxiosError, AxiosRequestConfig } from 'axios'\r\nimport React, { useRef } from 'react';\r\nimport appsettings from '../assets/appsettings.json'\r\nimport LocalStorageService from './LocalStorage';\r\nimport RbacService from '../services/RBACService'\r\nimport { IRBACUser } from '../model/IRBACUser';\r\nimport jwt_decode from \"jwt-decode\";\r\nimport { UserProfileType } from './AppContext';\r\nimport AuthService from './oidc/LMIAuthService';\r\nimport moment from 'moment';\r\n\r\nexport const AxiosInstances = axios.create({\r\n baseURL: appsettings.REACT_APP_BASE_API_URL,\r\n timeout: 50000,\r\n headers: {\r\n 'X-LMI-ClientId': '837E5E65-6754-4B65-9160-113D72936875',\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n }\r\n});\r\nconst authService = new AuthService()\r\nlet refreshingToken = false\r\n\r\nconst onRequest = async (request: AxiosRequestConfig) => {\r\n\r\n let userProfile = sessionStorage.getItem(`oidc.user:${appsettings.OIDC.REACT_APP_OIDC_AUTHORITY}:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`) ?? ''\r\n let claimToken = sessionStorage.getItem(`lmi.user:claim:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`)\r\n let claim = claimToken == null ? '' : JSON.parse(claimToken).rbac_token\r\n let token = JSON.parse(userProfile)\r\n request.headers = {\r\n 'Authorization': `Bearer ${token.id_token}`,\r\n 'Claim': `${claim}`,\r\n }\r\n return request;\r\n};\r\n\r\nconst onRequestError = (error: AxiosError) => {\r\n return Promise.reject(error);\r\n};\r\n\r\nconst onResponse = (response: AxiosResponse) => {\r\n if (response.status === 401) {\r\n window.location.pathname = '/';\r\n localStorage.clear();\r\n sessionStorage.clear();\r\n }\r\n return response;\r\n};\r\n\r\nconst onResponseError = (error: AxiosError) => {\r\n if (error.response?.status === 401) {\r\n console.error(`[response error] [${JSON.stringify(error)}]`);\r\n axios.request(error.config)\r\n window.location.pathname = '/';\r\n localStorage.clear();\r\n sessionStorage.clear()\r\n }\r\n return Promise.reject(error);\r\n}\r\n\r\nexport const refreshToken = async () => {\r\n refreshingToken = true\r\n await authService.renewToken()\r\n await authService.getUser().then((user) => {\r\n RbacService.getUserRole().then((claim) => {\r\n sessionStorage.setItem(`lmi.user:claim:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`, JSON.stringify(claim.data))\r\n let rbacUser = jwt_decode<IRBACUser>(claim.data.rbac_token)\r\n let userProfileFromClaim: UserProfileType = {\r\n userName: user?.profile.name, role: rbacUser\r\n }\r\n LocalStorageService.setUserProfile(userProfileFromClaim)\r\n LocalStorageService.setExpirationTime()\r\n refreshingToken = false\r\n })\r\n })\r\n}\r\n\r\nexport const isTokenExpired = () => {\r\n\r\n if (!LocalStorageService.getExpirationTime()) {\r\n return false\r\n }\r\n let userLoggedIn = sessionStorage.getItem(`lmi.user:claim:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`)\r\n if (!userLoggedIn) {\r\n return false\r\n }\r\n var now = moment();\r\n var expirationDate = moment(LocalStorageService.getExpirationTime());\r\n var isExpired = now.isSameOrAfter(expirationDate)\r\n return (isExpired && !refreshingToken)\r\n}\r\n\r\nexport function setupInterceptorsTo(axiosInstance: AxiosInstance): AxiosInstance {\r\n\r\n axiosInstance.interceptors.request.use(onRequest, onRequestError);\r\n axiosInstance.interceptors.response.use(onResponse, onResponseError);\r\n\r\n return axiosInstance;\r\n}","import { User } from 'oidc-client'\r\nimport { useContext } from 'react'\r\nimport IAnnouncement from '../model/IAnnouncement'\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\n\r\nexport default {\r\n getData: () => \r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/announcement',\r\n }),\r\n getRecent: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/announcement/getrecent',\r\n }),\r\n getById: (id: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/announcement/getbyid?id=' + id,\r\n }),\r\n post: (requestdata: IAnnouncement) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/announcement',\r\n 'data': requestdata\r\n }),\r\n edit: (requestdata: IAnnouncement) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/announcement?id=' + requestdata.id,\r\n 'data': requestdata\r\n }),\r\n delete: (id: number) =>\r\n AxiosInstance({\r\n 'method': 'DELETE',\r\n 'url': '/announcement?id=' + id,\r\n })\r\n}","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isBlank = function (value) { return value === null || value === undefined; };\n/**\n * @hidden\n */\nexport var isArray = function (value) { return Array.isArray(value); };\n/**\n * @hidden\n */\nexport var isFunction = function (value) { return typeof value === 'function'; };\n/**\n * @hidden\n */\nexport var isString = function (value) { return typeof value === 'string'; };\n/**\n * @hidden\n */\nexport var isTruthy = function (value) { return !!value; };\n/**\n * @hidden\n */\nexport var isNullOrEmptyString = function (value) { return isBlank(value) || value.trim().length === 0; };\n/**\n * @hidden\n */\nexport var isNotNullOrEmptyString = function (value) { return !isNullOrEmptyString(value); };\n/**\n * @hidden\n */\nexport var isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };\n/**\n * @hidden\n */\nexport var isDate = function (value) { return value && value.getTime; };\n","/**\n * @hidden\n */\nexport var ifElse = function (predicate, right, left) { return function (value) { return predicate(value) ? right(value) : left(value); }; };\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport var compose = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (data) { return args.reduceRight(function (acc, curr) { return curr(acc); }, data); };\n};\n/**\n * @hidden\n */\nexport var constant = function (x) { return function () { return x; }; };\n/**\n * @hidden\n */\nexport var identity = function (x) { return x; };\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport var isCompositeFilterDescriptor = function (source) {\n return isPresent(source.filters);\n};\n","import { isPresent } from './utils';\nvar getterCache = {};\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport var getter = function (field, safe) {\n var key = field + safe;\n if (getterCache[key]) {\n return getterCache[key];\n }\n var fields = [];\n field.replace(FIELD_REGEX, function (_, index, indexAccessor, field) {\n fields.push(isPresent(index) ? index : (indexAccessor || field));\n return undefined;\n });\n getterCache[key] = function (obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n return result;\n };\n return getterCache[key];\n};\n","import { __makeTemplateObject } from \"tslib\";\nimport { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nvar serializeSort = function (orderby) {\n var str = orderby\n .filter(function (sort) { return isPresent(sort.dir); })\n .map(function (sort) {\n var order = sort.field.replace(/\\./g, \"/\");\n return sort.dir === \"desc\" ? order + \" desc\" : order;\n }).join(\",\");\n return str ? \"$orderby=\".concat(str) : str;\n};\nvar emptyString = constant('');\nvar concat = function (a) { return function (b) { return a + b; }; };\nvar serializeKey = function (strings, val) { return ifElse(isPresent, concat(strings[0]), emptyString)(val); };\nvar rules = function (settings, state) { return function (key) { return ({\n \"filter\": serializeFilter(state.filter || {}, settings),\n \"skip\": serializeKey(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"$skip=\", \"\"], [\"$skip=\", \"\"])), state.skip),\n \"sort\": serializeSort(state.sort || []),\n \"take\": serializeKey(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"$top=\", \"\"], [\"$top=\", \"\"])), state.take)\n}[key]); }; };\n// tslint:enable:max-line-length\n/**\n * Converts a [State]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport var toODataString = function (state, settings) {\n if (settings === void 0) { settings = {}; }\n return (Object.keys(state)\n .map(rules(settings, state))\n .filter(isNotNullOrEmptyString)\n .join('&'));\n};\nvar templateObject_1, templateObject_2;\n","import { __assign, __spreadArray } from \"tslib\";\nimport { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nvar toQueryString = function (values) { return values.reduce(function (acc, _a) {\n var key = _a[0], value = _a[1];\n return __spreadArray(__spreadArray([], acc, true), [\"\".concat(key, \"=\").concat(value)], false);\n}, []); };\nvar toObject = function (values) { return values.reduce(function (acc, _a) {\n var _b;\n var key = _a[0], value = _a[1];\n return (__assign(__assign({}, acc), (_b = {}, _b[key] = value, _b)));\n}, {}); };\nvar pairwise = function (key) { return function (value) { return [key, value]; }; };\nvar empty = function () { return null; };\nvar isNotEmptyArray = function (value) { return isPresent(value) && isArray(value) && value.length > 0; };\nvar has = function (accessor) { return function (value) { return isPresent(accessor(value)); }; };\nvar isNotEmpty = function (accessor) { return function (value) { return isNotEmptyArray(accessor(value)); }; };\nvar runOrEmpty = function (predicate, fn) { return ifElse(predicate, fn, empty); };\nvar calcPage = function (_a) {\n var skip = _a.skip, take = _a.take;\n return Math.floor((skip || 0) / take) + 1;\n};\nvar formatDescriptors = function (accessor, formatter) { return function (state) { return (accessor(state).map(formatter).join(\"~\")); }; };\nvar removeAfter = function (what) { return function (str) { return str.slice(0, str.indexOf(what)); }; };\nvar replace = function (patterns) {\n return compose.apply(void 0, patterns.map(function (_a) {\n var left = _a[0], right = _a[1];\n return function (s) { return s.replace(new RegExp(left, \"g\"), right); };\n }));\n};\nvar sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nvar removeAfterDot = removeAfter(\".\");\nvar directionFormatter = function (_a) {\n var field = _a.field, _b = _a.dir, dir = _b === void 0 ? \"asc\" : _b;\n return \"\".concat(field, \"-\").concat(dir);\n};\nvar aggregateFormatter = function (_a) {\n var field = _a.field, aggregate = _a.aggregate;\n return \"\".concat(field, \"-\").concat(aggregate);\n};\nvar take = getter(\"take\");\nvar aggregates = getter(\"aggregates\");\nvar skip = getter(\"skip\");\nvar group = getter(\"group\");\nvar sort = getter(\"sort\", true);\nvar formatSort = formatDescriptors(sort, directionFormatter);\nvar formatGroup = formatDescriptors(group, directionFormatter);\nvar formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nvar prefixDateValue = function (value) { return \"datetime'\".concat(value, \"'\"); };\nvar formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nvar formatDate = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: formatDateValue(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\nvar normalizeSort = function (state) { return Object.assign({}, state, {\n sort: (sort(state) || []).filter(function (_a) {\n var dir = _a.dir;\n return isNotNullOrEmptyString(dir);\n })\n}); };\nvar transformSkip = compose(pairwise('page'), calcPage);\nvar transformTake = compose(pairwise('pageSize'), take);\nvar transformGroup = compose(pairwise('group'), formatGroup);\nvar transformSort = compose(pairwise('sort'), formatSort);\nvar transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nvar serializePage = runOrEmpty(has(skip), transformSkip);\nvar serializePageSize = runOrEmpty(has(take), transformTake);\nvar serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nvar serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nvar serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nvar hasField = function (_a) {\n var field = _a.field;\n return isNotNullOrEmptyString(field);\n};\nvar filterFormatter = function (_a) {\n var field = _a.field, operator = _a.operator, value = _a.value;\n return \"\".concat(field, \"~\").concat(operator, \"~\").concat(value);\n};\nvar dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nvar typedFormatter = function (encode) { return runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter)); };\nvar join = function (_a) {\n var logic = _a.logic;\n return \"~\".concat(logic, \"~\");\n};\nvar serialize = function (encode) { return serializeFilters(function (filter) { return ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter); }, join); };\nvar serializeFilter = function (_a, encode) {\n var filter = _a.filter;\n if (filter && filter.filters) {\n var filters = serialize(encode)(filter);\n if (filters.length) {\n return ['filter', filters];\n }\n }\n return null;\n};\nvar rules = function (state, encode) {\n if (encode === void 0) { encode = true; }\n return function (key) { return ({\n \"aggregates\": serializeAggregates(state),\n \"filter\": serializeFilter(state, encode),\n \"group\": serializeGroup(state),\n \"skip\": serializePage(state),\n \"sort\": serializeSort(state),\n \"take\": serializePageSize(state)\n }[key]); };\n};\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataSourceRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts\n * import {\n * toDataSourceRequestString,\n * translateDataSourceResultGroups,\n * translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n * private BASE_URL: string = '...';\n *\n * constructor(private http: Http) { }\n *\n * // Omitted for brevity...\n *\n * private fetch(state: DataSourceRequestState): Observable<DataResult> {\n * const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n * const hasGroups = state.group && state.group.length;\n *\n * return this.http\n * .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n * .map(response => response.json())\n * .map(({Data, Total, AggregateResults}) => // process the response\n * (<GridDataResult>{\n * //if there are groups convert them to compatible format\n * data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n * total: Total,\n * // convert the aggregates if such exists\n * aggregateResult: translateAggregateResults(AggregateResults)\n * })\n * );\n * }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n * return class StatefullGrid extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = { dataState: { skip: 0, take: 20 } };\n * }\n *\n * render() {\n * return (\n * <WrappedGrid\n * filterable={true}\n * sortable={true}\n * pageable={{ pageSizes: true }}\n * {...this.props}\n * total={this.state.total}\n * data={this.state.data}\n * skip={this.state.dataState.skip}\n * pageSize={this.state.dataState.take}\n * filter={this.state.dataState.filter}\n * sort={this.state.dataState.sort}\n * dataStateChange={this.dataStateChange}\n * />\n * );\n * }\n *\n * componentDidMount() {\n * this.fetchData(this.state.dataState);\n * }\n *\n * dataStateChange = (changeEvent) => {\n * this.setState({ dataState: changeEvent.data });\n * this.fetchData(changeEvent.data);\n * }\n *\n * fetchData(dataState) {\n * const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n * const hasGroups = dataState.group && dataState.group.length;\n *\n * const base_url = 'api/Products';\n * const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n * fetch(`${base_url}?${queryStr}`, init)\n * .then(response => response.json())\n * .then(({ data, total }) => {\n * this.setState({\n * data: hasGroups ? translateDataSourceResultGroups(data) : data,\n * total,\n * dataState\n * });\n * });\n * }\n * }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport var toDataSourceRequestString = function (state) { return (toQueryString(Object.keys(state)\n .map(rules(state))\n .filter(isPresent)).join('&')); };\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataSourceRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport var toDataSourceRequest = function (state) { return (toObject(Object.keys(state)\n .map(rules(state, false))\n .filter(isPresent))); };\n","import { __makeTemplateObject } from \"tslib\";\nimport { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport var wrapIf = function (predicate) { return function (str) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return predicate() ? \"\".concat(str[0]).concat(args[0]).concat(str[1]) : args[0];\n}; };\n/**\n * @hidden\n */\nexport var toUTC = function (date) {\n return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n};\n/**\n * @hidden\n */\nexport var quote = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"'\".concat(value.replace(/'/g, \"''\"), \"'\"),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var encodeValue = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"\".concat(encodeURIComponent(value)),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var toLower = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n field: wrapIf(function () { return ignoreCase; })(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"tolower(\", \")\"], [\"tolower(\", \")\"])), field),\n value: value,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var normalizeField = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: value,\n field: field.replace(/\\./g, \"/\"),\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var isStringValue = function (x) { return isString(x.value); };\n/**\n * @hidden\n */\nexport var isDateValue = function (x) { return isDate(x.value); };\n/**\n * @hidden\n */\nexport var serializeFilters = function (map, join) { return function (filter) {\n var brackets = wrapIf(function () { return filter.filters.length > 1; });\n return brackets(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"(\", \")\"], [\"(\", \")\"])), filter.filters\n .map(map)\n .join(join(filter)));\n}; };\nvar templateObject_1, templateObject_2;\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nvar set = function (field, target, value) {\n target[field] = value;\n return target;\n};\nvar toCamelCase = function (str) { return str.replace(/(^[A-Z])/g, function (_, g1) { return g1.toLowerCase(); }); };\nvar prop = function (fieldName) { return function (obj) {\n var value = obj[fieldName];\n if (isPresent(value)) {\n return value;\n }\n return obj[toCamelCase(fieldName)];\n}; };\nvar member = prop(\"Member\");\nvar aggregateMethodName = prop(\"AggregateMethodName\");\nvar value = prop(\"Value\");\nvar convert = function (mapper) { return function (values) { return Object.keys(values).reduce(mapper.bind(null, values), {}); }; };\nvar translateAggregate = convert(function (source, acc, field) { return set(field.toLowerCase(), acc, source[field]); });\nvar translateAggregates = convert(function (source, acc, field) { return set(field, acc, translateAggregate(source[field])); });\nvar valueOrDefault = function (value, defaultValue) { return isPresent(value) ? value : defaultValue; };\nvar normalizeGroup = function (group) { return ({\n aggregates: group.Aggregates || group.aggregates,\n field: group.Member || group.member || group.field,\n hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n items: group.Items || group.items,\n value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n}); };\nvar translateGroup = compose(function (_a) {\n var field = _a.field, hasSubgroups = _a.hasSubgroups, value = _a.value, aggregates = _a.aggregates, items = _a.items;\n return ({\n aggregates: translateAggregates(aggregates),\n field: field,\n items: hasSubgroups ? items.map(translateGroup) : items,\n value: value\n });\n}, normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport var translateDataSourceResultGroups = function (data) { return data.map(translateGroup); };\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport var translateAggregateResults = function (data) { return ((data || []).reduce(function (acc, x) { return set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))); }, {})); };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { isPresent, isBlank } from '../utils';\nimport { getter } from '../accessor';\nvar compare = function (a, b) {\n if (isBlank(a)) {\n return a === b ? 0 : -1;\n }\n if (isBlank(b)) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : (a < b ? -1 : 0);\n};\nvar compareDesc = function (a, b) { return compare(b, a); };\nvar descriptorAsFunc = function (descriptor) {\n if (typeof descriptor.compare === 'function') {\n return descriptor.compare;\n }\n var prop = getter(descriptor.field, true);\n return function (a, b) { return (descriptor.dir === 'asc' ? compare : compareDesc)(prop(a), prop(b)); };\n};\nvar initial = function (_a, _b) { return 0; };\n// tslint:disable:max-line-length\n/**\n * Converts the `SortDescriptors` into a [Comparer]({% slug api_kendo-data-query_comparer %}) function that can be used through `Array.sort`. If multiple descriptors are provided, sorting is applied in a right-to-left order.\n * @param {SortDescriptor[]} descriptors - The descriptors which will be converted.\n * @returns {Comparer} - The produced function.\n *\n * @example\n * ```ts\n * import { composeSortDescriptors } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const comparer = composeSortDescriptors([{ field: \"name\", dir: \"asc\" }]);\n * const result = data.sort(comparer);\n * // output: [{ name: \"Beef\" }, { name: \"Pepper\" }, { name: \"Pork\" }];\n * ```\n */\n// tslint:enable:max-line-length\nexport var composeSortDescriptors = function (descriptors) { return (descriptors\n .filter(function (x) { return isPresent(x.dir) || isPresent(x.compare); })\n .map(function (descriptor) { return descriptorAsFunc(descriptor); })\n .reduce(function (acc, curr) { return function (a, b) { return acc(a, b) || curr(a, b); }; }, initial)); };\n","/**\n * Represents the list of supported [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) operators.\n * Allows restricting `FilterDescriptor.operator` definition to available values only.\n */\nexport var FilterOperator;\n(function (FilterOperator) {\n /**\n * The `contains` operator.\n */\n FilterOperator[\"Contains\"] = \"contains\";\n /**\n * The `doesnotcontain` operator.\n */\n FilterOperator[\"DoesNotContain\"] = \"doesnotcontain\";\n /**\n * The `doesnotendwith` operator.\n */\n FilterOperator[\"DoesNotEndWith\"] = \"doesnotendwith\";\n /**\n * The `doesnotstartwith` operator.\n */\n FilterOperator[\"DoesNotStartWith\"] = \"doesnotstartwith\";\n /**\n * The `endswith` operator.\n */\n FilterOperator[\"EndsWith\"] = \"endswith\";\n /**\n * The `eq` operator.\n */\n FilterOperator[\"EqualTo\"] = \"eq\";\n /**\n * The `gt` operator.\n */\n FilterOperator[\"GreaterThan\"] = \"gt\";\n /**\n * The `gte` operator.\n */\n FilterOperator[\"GreaterThanOrEqual\"] = \"gte\";\n /**\n * The `isempty` operator.\n */\n FilterOperator[\"IsEmpty\"] = \"isempty\";\n /**\n * The `isnotempty` operator.\n */\n FilterOperator[\"IsNotEmpty\"] = \"isnotempty\";\n /**\n * The `isnotnull` operator.\n */\n FilterOperator[\"IsNotNull\"] = \"isnotnull\";\n /**\n * The `isnull` operator.\n */\n FilterOperator[\"IsNull\"] = \"isnull\";\n /**\n * The `lt` operator.\n */\n FilterOperator[\"LessThan\"] = \"lt\";\n /**\n * The `lte` operator.\n */\n FilterOperator[\"LessThanOrEqual\"] = \"lte\";\n /**\n * The `neq` operator.\n */\n FilterOperator[\"NotEqualTo\"] = \"neq\";\n /**\n * The `startswith` operator.\n */\n FilterOperator[\"StartsWith\"] = \"startswith\";\n})(FilterOperator || (FilterOperator = {}));\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nvar valueToString = function (value) {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\nexport var groupCombinator = function (field) {\n var prop = getter(field, true);\n var position = 0;\n return function (agg, value) {\n agg[field] = agg[field] || {};\n var groupValue = prop(value);\n var key = valueToString(groupValue);\n var values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\nexport var expandAggregates = function (result) {\n if (result === void 0) { result = {}; }\n Object.keys(result).forEach(function (field) {\n var aggregates = result[field];\n Object.keys(aggregates).forEach(function (aggregate) {\n aggregates[aggregate] = aggregates[aggregate].result();\n });\n });\n return result;\n};\nvar aggregatesFuncs = function (name) { return ({\n average: function () {\n var value = 0;\n var count = 0;\n return {\n calc: function (curr) {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n }\n else {\n value = curr;\n }\n },\n result: function () { return isNumeric(value) ? value / count : value; }\n };\n },\n count: function () {\n var state = 0;\n return {\n calc: function () { return state++; },\n result: function () { return state; }\n };\n },\n max: function () {\n var state = Number.NEGATIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n min: function () {\n var state = Number.POSITIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n sum: function () {\n var state = 0;\n return {\n calc: function (value) {\n value = isPresent(value) ? value : 0;\n state += value;\n },\n result: function () { return state; }\n };\n }\n}[name]()); };\n/**\n * @hidden\n */\nexport var aggregatesCombinator = function (descriptors) {\n var functions = descriptors.map(function (descriptor) {\n var fieldAccessor = getter(descriptor.field, true);\n var aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n var aggregateAccessor = getter(aggregateName, true);\n return function (state, value) {\n var fieldAggregates = state[descriptor.field] || {};\n var aggregateFunction = aggregateAccessor(fieldAggregates)\n || aggregatesFuncs(aggregateName);\n aggregateFunction.calc(fieldAccessor(value));\n fieldAggregates[descriptor.aggregate] = aggregateFunction;\n state[descriptor.field] = fieldAggregates;\n return state;\n };\n });\n return function (state, value) { return functions.reduce(function (agg, calc) { return calc(agg, value); }, state); };\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport var concat = function (arr, value) {\n arr.push(value);\n return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport var map = function (transform) { return (function (reduce) { return (function (acc, curr, index) { return reduce(acc, transform(curr, index)); }); }); };\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport var filter = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n */\nexport var isTransformerResult = function (source) {\n return isPresent(source.__value);\n};\nvar reduced = function (x) {\n if (isTransformerResult(x)) {\n return x;\n }\n return {\n __value: x,\n reduced: true\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var take = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- > 0 ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var takeWhile = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport var skip = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- <= 0 ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport var exec = function (transform, initialValue, data) {\n var result = initialValue;\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n result = transform(result, data[idx], idx);\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n return result;\n};\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nvar identity = map(function (x) { return x; });\n// tslint:disable:max-line-length\n/**\n * Applies the specified [`AggregateDescriptors`]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [`AggregateResult`]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts\n * const data = [\n * { unitPrice: 23, unitsInStock: 21 },\n * { unitPrice: 10, unitsInStock: 12 },\n * { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * // \"unitPrice\": { \"sum\": 53 },\n * // \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [aggregateresult](slug:api_kendo-data-query_aggregateresult) configuration.\n */\n// tslint:enable:max-line-length\nexport var aggregateBy = function (data, descriptors, transformers) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n var initialValue = {};\n if (!descriptors.length) {\n return initialValue;\n }\n var result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};\n","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nvar operatorMap = function (key) { return ({\n \"!=\": \"neq\",\n \"<\": \"lt\",\n \"<=\": \"lte\",\n \"==\": \"eq\",\n \">\": \"gt\",\n \">=\": \"gte\",\n equal: \"eq\",\n equals: \"eq\",\n equalto: \"eq\",\n ge: \"gte\",\n greater: \"gt\",\n greaterthan: \"gt\",\n greaterthanequal: \"gte\",\n isempty: \"isempty\",\n isequalto: \"eq\",\n isgreaterthan: \"gt\",\n isgreaterthanorequalto: \"gte\",\n islessthan: \"lt\",\n islessthanorequalto: \"lte\",\n isnotempty: \"isnotempty\",\n isnotequalto: \"neq\",\n isnull: \"isnull\",\n le: \"lte\",\n less: \"lt\",\n lessthan: \"lt\",\n lessthanequal: \"lte\",\n ne: \"neq\",\n notequal: \"neq\",\n notequals: \"neq\",\n notequalto: \"neq\",\n notsubstringof: \"doesnotcontain\"\n}[key.toLowerCase()] || key); };\nvar normalizeOperator = function (descriptor) {\n if (descriptor.filters) {\n descriptor.filters = descriptor.filters.map(function (filter) {\n var result = Object.assign({}, filter);\n if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n result.operator = operatorMap(filter.operator);\n }\n if (isCompositeFilterDescriptor(filter)) {\n normalizeOperator(result);\n }\n return result;\n });\n }\n};\nvar normalizeDescriptor = function (descriptor) {\n if (!isCompositeFilterDescriptor(descriptor)) {\n return {\n filters: isArray(descriptor) ? descriptor : [descriptor],\n logic: \"and\"\n };\n }\n return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) into a [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport var normalizeFilters = function (descriptor) {\n if (isPresent(descriptor)) {\n descriptor = normalizeDescriptor(descriptor);\n normalizeOperator(descriptor);\n }\n return descriptor;\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank } from \"../utils\";\nvar logic = {\n \"or\": {\n concat: function (acc, fn) { return function (a) { return acc(a) || fn(a); }; },\n identity: function () { return false; }\n },\n \"and\": {\n concat: function (acc, fn) { return function (a) { return acc(a) && fn(a); }; },\n identity: function () { return true; }\n }\n};\nvar operatorsMap = {\n contains: function (a, b) { return (a || \"\").indexOf(b) >= 0; },\n doesnotcontain: function (a, b) { return (a || \"\").indexOf(b) === -1; },\n doesnotendwith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0; },\n doesnotstartwith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === -1; },\n endswith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0; },\n eq: function (a, b) { return a === b; },\n gt: function (a, b) { return a > b; },\n gte: function (a, b) { return a >= b; },\n isempty: function (a) { return a === ''; },\n isnotempty: function (a) { return a !== ''; },\n isnotnull: function (a) { return isPresent(a); },\n isnull: function (a) { return isBlank(a); },\n lt: function (a, b) { return a < b; },\n lte: function (a, b) { return a <= b; },\n neq: function (a, b) { return a != b; },\n startswith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === 0; }\n};\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar convertValue = function (value, ignoreCase) {\n if (value != null && isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n }\n else if (ignoreCase) {\n return value.toLowerCase();\n }\n }\n else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\nvar typedGetter = function (prop, value, ignoreCase) {\n if (!isPresent(value)) {\n return prop;\n }\n var acc = prop;\n if (isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n }\n else {\n acc = function (a) {\n var x = prop(a);\n if (x === null) {\n return x;\n }\n var stringValue = typeof x === 'string' ? x : x + \"\";\n return ignoreCase ? stringValue.toLowerCase() : stringValue;\n };\n }\n }\n if (isDate(value)) {\n return function (a) {\n var x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\nvar transformFilter = function (_a) {\n var field = _a.field, ignoreCase = _a.ignoreCase, value = _a.value, operator = _a.operator;\n field = !isPresent(field) ? function (a) { return a; } : field;\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n var itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n value = convertValue(value, ignoreCase);\n var op = isFunction(operator) ? operator : operatorsMap[operator];\n return function (a) { return op(itemProp(a), value, ignoreCase); };\n};\n/**\n * @hidden\n */\nexport var transformCompositeFilter = function (filter) {\n var combiner = logic[filter.logic];\n return filter.filters\n .filter(isPresent)\n .map(function (x) { return isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x); })\n .reduce(combiner.concat, combiner.identity);\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [Predicate]({% slug api_kendo-data-query_predicate %}) function for the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport var compileFilter = function (descriptor) {\n if (!descriptor || descriptor.filters.length === 0) {\n return function () { return true; };\n }\n return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n * logic: 'and',\n * filters: [\n * { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n * { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n * ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport var filterBy = function (data, descriptor) {\n if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n return data;\n }\n return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport var normalizeGroups = function (descriptors) {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(function (x) { return Object.assign({ dir: \"asc\" }, x); });\n};\nvar identity = map(function (x) { return x; });\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array<GroupResult<T>> | T[])} - The grouped data.\n *\n * @example\n * ```ts\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport var groupBy = function (data, descriptors, transformers, originalData) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n if (originalData === void 0) { originalData = data; }\n descriptors = normalizeGroups(descriptors);\n if (!descriptors.length) {\n return data;\n }\n var descriptor = descriptors[0];\n var initialValue = {};\n var view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n var result = [];\n Object.keys(view).forEach(function (field) {\n Object.keys(view[field]).forEach(function (value) {\n var group = view[field][value];\n var aggregateResult = {};\n var filteredData = originalData;\n if (isPresent(descriptor.aggregates)) {\n filteredData = filterBy(originalData, {\n field: descriptor.field,\n ignoreCase: false,\n operator: 'eq',\n value: group.value\n });\n aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n }\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ?\n groupBy(group.items, descriptors.slice(1), identity, filteredData)\n : group.items,\n value: group.value\n };\n });\n });\n return result;\n};\n","import { __spreadArray } from \"tslib\";\nimport { isPresent, isString } from './utils';\nimport { composeSortDescriptors } from './sorting/sort-array.operator';\nimport { groupBy, normalizeGroups } from './grouping/group.operators';\nimport { normalizeFilters } from './filtering/filter.operators';\nimport { compileFilter } from './filtering/filter-expression.factory';\nimport { exec, skip, take, filter, concat } from './transducers';\nimport { getter } from './accessor';\nimport { compose } from './funcs';\n/**\n * Orders the specified array according to the provided sort descriptors.\n *\n * @param {T[]} data - The data to be sorted.\n * @param {SortDescriptor[]} descriptors - The descriptors by which the data will be sorted.\n * @returns {T[]} - The sorted data.\n *\n * @example\n * ```ts\n * import { orderBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const sortDesc: SortDescriptor[] = [{ field: \"name\", dir: \"asc\" }];\n *\n * const result = orderBy(data, sortDesc);\n * ```\n */\nexport var orderBy = function (data, descriptors) {\n if (descriptors.some(function (x) { return isPresent(x.dir) || isPresent(x.compare); })) {\n data = data.slice(0);\n var comparer = composeSortDescriptors(descriptors);\n data.sort(comparer);\n }\n return data;\n};\nvar defaultComparer = function (a, b) { return a === b; };\nvar normalizeComparer = function (comparer) {\n if (isString(comparer)) {\n var accessor_1 = getter(comparer);\n comparer = function (a, b) { return accessor_1(a) === accessor_1(b); };\n }\n return comparer;\n};\nvar _distinct = function (data, comparer) {\n return data.filter(function (x, idx, xs) { return xs.findIndex(comparer.bind(null, x)) === idx; });\n};\n/**\n * Reduces the provided array so it contains only unique values.\n *\n * @param {T[]} data - The array that will be reduced.\n * @param {(Comparer | string)} comparer - An optional custom comparer function or the field name that will be used for comparison.\n * @returns {T[]} - The reduced data.\n *\n * @example\n * ```ts\n * import { distinct } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = distinct(data, \"subcategory\");\n *\n * // output:\n * // result => [\n * // { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * // { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" }\n * // ];\n * ```\n */\nexport var distinct = function (data, comparer) {\n if (comparer === void 0) { comparer = defaultComparer; }\n return _distinct(data, normalizeComparer(comparer));\n};\n/**\n * @hidden\n */\nexport var count = function (data, predicate) {\n var counter = 0;\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n if (predicate(data[idx])) {\n counter++;\n }\n }\n return counter;\n};\n/**\n * @hidden\n */\nexport var limit = function (data, predicate) {\n if (predicate) {\n return data.filter(predicate);\n }\n return data;\n};\n/**\n * Applies the specified operation descriptors to the data.\n *\n * @param {T[]} data - The data to be processed.\n * @param {State} state - The operation descriptors that will be applied to the data.\n * @returns {DataResult} - The processed data.\n *\n * @example\n * ```ts\n *\n * const result = process(data, {\n * skip: 10,\n * take: 20,\n * group: [{\n * field: 'category.categoryName',\n * aggregates: [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]\n * }],\n * sort: [{ field: 'productName', dir: 'desc' }],\n * filter: {\n * logic: \"or\",\n * filters: [\n * { field: \"discontinued\", operator: \"eq\", value: true },\n * { field: \"unitPrice\", operator: \"lt\", value: 22 }\n * ]\n * }\n * });\n *\n * ```\n */\nexport var process = function (data, state) {\n var skipCount = state.skip, takeCount = state.take, filterDescriptor = state.filter, sort = state.sort, group = state.group;\n var sortDescriptors = __spreadArray(__spreadArray([], normalizeGroups(group || []), true), sort || [], true);\n if (sortDescriptors.length) {\n data = orderBy(data, sortDescriptors);\n }\n var hasFilters = isPresent(filterDescriptor) && filter.length;\n var hasGroups = isPresent(group) && group.length;\n if (!hasFilters && !hasGroups) {\n return {\n data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,\n total: data.length\n };\n }\n var total;\n var transformers = [];\n var predicate;\n if (hasFilters) {\n predicate = compileFilter(normalizeFilters(filterDescriptor));\n total = count(data, predicate);\n transformers.push(filter(predicate));\n }\n else {\n total = data.length;\n }\n if (isPresent(skipCount) && isPresent(takeCount)) {\n transformers.push(skip(skipCount));\n transformers.push(take(takeCount));\n }\n if (transformers.length) {\n var transform = compose.apply(void 0, transformers);\n var result = hasGroups ?\n groupBy(data, group, transform, limit(data, predicate)) :\n exec(transform(concat), [], data);\n return { data: result, total: total };\n }\n return {\n data: hasGroups ? groupBy(data, group) : data,\n total: total\n };\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * The GridColumnMenuItem component that is used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItem = /** @class */ (function (_super) {\n __extends(GridColumnMenuItem, _super);\n function GridColumnMenuItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onClick = function (e) {\n if (_this.props.onClick) {\n _this.props.onClick(e);\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuItem.prototype.render = function () {\n var _a = this.props, title = _a.title, iconClass = _a.iconClass, selected = _a.selected;\n return (React.createElement(\"div\", { onClick: this.onClick, className: \"k-columnmenu-item \" + (selected ? 'k-state-selected' : '') },\n iconClass && React.createElement(\"span\", { className: \"k-icon \" + iconClass }),\n title));\n };\n return GridColumnMenuItem;\n}(React.Component));\nexport { GridColumnMenuItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * The GridColumnMenuItemGroup that will be used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItemGroup = /** @class */ (function (_super) {\n __extends(GridColumnMenuItemGroup, _super);\n function GridColumnMenuItemGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridColumnMenuItemGroup.prototype.render = function () {\n var children = this.props.children;\n return (React.createElement(\"div\", { className: \"k-columnmenu-item-wrapper\" }, children));\n };\n return GridColumnMenuItemGroup;\n}(React.Component));\nexport { GridColumnMenuItemGroup };\n","/**\n * @hidden\n */\nexport var classNames = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = {};\n var addLeafKeys = function (arg) { return typeof arg === 'object' ? Object\n .keys(arg)\n .forEach(function (key) {\n result[key] = arg[key];\n }) : result[arg] = true; };\n ;\n var addKeys = function (list) { return list\n .filter(function (arg) { return arg !== true && !!arg; })\n .map(function (arg) {\n return Array.isArray(arg) ?\n addKeys(arg) :\n addLeafKeys(arg);\n }); };\n ;\n addKeys(args);\n return Object\n .keys(result)\n .map(function (key) { return (result[key] && key) || null; })\n .filter(function (el) { return el !== null; })\n .join(' ');\n};\n","/**\n * @hidden\n */\nexport var noop = function () { };\n","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","/**\n * @hidden\n */\nvar outerHeight = function (element) {\n if (!element) {\n return 0;\n }\n var wnd = element.ownerDocument.defaultView;\n var computedStyles = wnd.getComputedStyle(element);\n var marginTop = parseFloat(computedStyles.marginTop);\n var marginBottom = parseFloat(computedStyles.marginBottom);\n return element.offsetHeight + marginTop + marginBottom;\n};\n/**\n * @hidden\n */\nvar outerWidth = function (element) {\n if (!element) {\n return 0;\n }\n var wnd = element.ownerDocument.defaultView;\n var computedStyles = wnd.getComputedStyle(element);\n var marginLeft = parseFloat(computedStyles.marginLeft);\n var marginRight = parseFloat(computedStyles.marginRight);\n return element.offsetWidth + marginLeft + marginRight;\n};\n/**\n * @hidden\n */\nvar styles = {\n 'animation-container': 'k-animation-container',\n 'animation-container-relative': 'k-animation-container-relative',\n 'animation-container-fixed': 'k-animation-container-fixed',\n 'push-right-enter': 'k-push-right-enter',\n 'push-right-appear': 'k-push-right-appear',\n 'push-right-enter-active': 'k-push-right-enter-active',\n 'push-right-appear-active': 'k-push-right-appear-active',\n 'push-right-exit': 'k-push-right-exit',\n 'push-right-exit-active': 'k-push-right-exit-active',\n 'push-left-enter': 'k-push-left-enter',\n 'push-left-appear': 'k-push-left-appear',\n 'push-left-enter-active': 'k-push-left-enter-active',\n 'push-left-appear-active': 'k-push-left-appear-active',\n 'push-left-exit': 'k-push-left-exit',\n 'push-left-exit-active': 'k-push-left-exit-active',\n 'push-down-enter': 'k-push-down-enter',\n 'push-down-appear': 'k-push-down-appear',\n 'push-down-enter-active': 'k-push-down-enter-active',\n 'push-down-appear-active': 'k-push-down-appear-active',\n 'push-down-exit': 'k-push-down-exit',\n 'push-down-exit-active': 'k-push-down-exit-active',\n 'push-up-enter': 'k-push-up-enter',\n 'push-up-appear': 'k-push-up-appear',\n 'push-up-enter-active': 'k-push-up-enter-active',\n 'push-up-appear-active': 'k-push-up-appear-active',\n 'push-up-exit': 'k-push-up-exit',\n 'push-up-exit-active': 'k-push-up-exit-active',\n 'expand': 'k-expand',\n 'expand-vertical-enter': 'k-expand-vertical-enter',\n 'expand-vertical-appear': 'k-expand-vertical-appear',\n 'expand-vertical-enter-active': 'k-expand-vertical-enter-active',\n 'expand-vertical-appear-active': 'k-expand-vertical-appear-active',\n 'expand-vertical-exit': 'k-expand-vertical-exit',\n 'expand-vertical-exit-active': 'k-expand-vertical-exit-active',\n 'expand-horizontal-enter': 'k-expand-horizontal-enter',\n 'expand-horizontal-appear': 'k-expand-horizontal-appear',\n 'expand-horizontal-enter-active': 'k-expand-horizontal-enter-active',\n 'expand-horizontal-appear-active': 'k-expand-horizontal-appear-active',\n 'expand-horizontal-exit': 'k-expand-horizontal-exit',\n 'expand-horizontal-exit-active': 'k-expand-horizontal-exit-active',\n 'child-animation-container': 'k-child-animation-container',\n 'fade-enter': 'k-fade-enter',\n 'fade-appear': 'k-fade-appear',\n 'fade-enter-active': 'k-fade-enter-active',\n 'fade-appear-active': 'k-fade-appear-active',\n 'fade-exit': 'k-fade-exit',\n 'fade-exit-active': 'k-fade-exit-active',\n 'zoom-in-enter': 'k-zoom-in-enter',\n 'zoom-in-appear': 'k-zoom-in-appear',\n 'zoom-in-enter-active': 'k-zoom-in-enter-active',\n 'zoom-in-appear-active': 'k-zoom-in-appear-active',\n 'zoom-in-exit': 'k-zoom-in-exit',\n 'zoom-in-exit-active': 'k-zoom-in-exit-active',\n 'zoom-out-enter': 'k-zoom-out-enter',\n 'zoom-out-appear': 'k-zoom-out-appear',\n 'zoom-out-enter-active': 'k-zoom-out-enter-active',\n 'zoom-out-appear-active': 'k-zoom-out-appear-active',\n 'zoom-out-exit': 'k-zoom-out-exit',\n 'zoom-out-exit-active': 'k-zoom-out-exit-active',\n 'slide-in-appear': 'k-slide-in-appear',\n 'centered': 'k-centered',\n 'slide-in-appear-active': 'k-slide-in-appear-active',\n 'slide-down-enter': 'k-slide-down-enter',\n 'slide-down-appear': 'k-slide-down-appear',\n 'slide-down-enter-active': 'k-slide-down-enter-active',\n 'slide-down-appear-active': 'k-slide-down-appear-active',\n 'slide-down-exit': 'k-slide-down-exit',\n 'slide-down-exit-active': 'k-slide-down-exit-active',\n 'slide-up-enter': 'k-slide-up-enter',\n 'slide-up-appear': 'k-slide-up-appear',\n 'slide-up-enter-active': 'k-slide-up-enter-active',\n 'slide-up-appear-active': 'k-slide-up-appear-active',\n 'slide-up-exit': 'k-slide-up-exit',\n 'slide-up-exit-active': 'k-slide-up-exit-active',\n 'slide-right-enter': 'k-slide-right-enter',\n 'slide-right-appear': 'k-slide-right-appear',\n 'slide-right-enter-active': 'k-slide-right-enter-active',\n 'slide-right-appear-active': 'k-slide-right-appear-active',\n 'slide-right-exit': 'k-slide-right-exit',\n 'slide-right-exit-active': 'k-slide-right-exit-active',\n 'slide-left-enter': 'k-slide-left-enter',\n 'slide-left-appear': 'k-slide-left-appear',\n 'slide-left-enter-active': 'k-slide-left-enter-active',\n 'slide-left-appear-active': 'k-slide-left-appear-active',\n 'slide-left-exit': 'k-slide-left-exit',\n 'slide-left-exit-active': 'k-slide-left-exit-active',\n 'reveal-vertical-enter': 'k-reveal-vertical-enter',\n 'reveal-vertical-appear': 'k-reveal-vertical-appear',\n 'reveal-vertical-enter-active': 'k-reveal-vertical-enter-active',\n 'reveal-vertical-appear-active': 'k-reveal-vertical-appear-active',\n 'reveal-vertical-exit': 'k-reveal-vertical-exit',\n 'reveal-vertical-exit-active': 'k-reveal-vertical-exit-active',\n 'reveal-horizontal-enter': 'k-reveal-horizontal-enter',\n 'reveal-horizontal-appear': 'k-reveal-horizontal-appear',\n 'reveal-horizontal-enter-active': 'k-reveal-horizontal-enter-active',\n 'reveal-horizontal-appear-active': 'k-reveal-horizontal-appear-active',\n 'reveal-horizontal-exit': 'k-reveal-horizontal-exit',\n 'reveal-horizontal-exit-active': 'k-reveal-horizontal-exit-active'\n};\n/**\n * @hidden\n */\nexport default {\n outerHeight: outerHeight,\n outerWidth: outerWidth,\n styles: styles\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, noop } from '@progress/kendo-react-common';\nimport { CSSTransition } from 'react-transition-group';\nimport util from './util';\nvar styles = util.styles;\nvar AnimationChild = /** @class */ (function (_super) {\n __extends(AnimationChild, _super);\n function AnimationChild() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(AnimationChild.prototype, \"element\", {\n /**\n * The element that is being animated.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n AnimationChild.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, style = _a.style, appear = _a.appear, enter = _a.enter, exit = _a.exit, transitionName = _a.transitionName, transitionEnterDuration = _a.transitionEnterDuration, transitionExitDuration = _a.transitionExitDuration, className = _a.className, onEnter = _a.onEnter, onEntering = _a.onEntering, onEntered = _a.onEntered, onExit = _a.onExit, onExiting = _a.onExiting, onExited = _a.onExited, onAfterExited = _a.onAfterExited, mountOnEnter = _a.mountOnEnter, unmountOnExit = _a.unmountOnExit, animationEnteringStyle = _a.animationEnteringStyle, animationEnteredStyle = _a.animationEnteredStyle, animationExitingStyle = _a.animationExitingStyle, animationExitedStyle = _a.animationExitedStyle, other = __rest(_a, [\"children\", \"style\", \"appear\", \"enter\", \"exit\", \"transitionName\", \"transitionEnterDuration\", \"transitionExitDuration\", \"className\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onAfterExited\", \"mountOnEnter\", \"unmountOnExit\", \"animationEnteringStyle\", \"animationEnteredStyle\", \"animationExitingStyle\", \"animationExitedStyle\"]);\n var childAnimationContainerClassNames = classNames(className, styles['child-animation-container']);\n var defaultStyle = __assign({ transitionDelay: '0ms' }, style);\n var animationStyle = {\n entering: __assign({ transitionDuration: transitionEnterDuration + \"ms\" }, animationEnteringStyle),\n entered: __assign({}, animationEnteredStyle),\n exiting: __assign({ transitionDuration: transitionExitDuration + \"ms\" }, animationExitingStyle),\n exited: __assign({}, animationExitedStyle)\n };\n var transitionProps = {\n in: this.props.in,\n appear: appear,\n enter: enter,\n exit: exit,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n timeout: {\n enter: transitionEnterDuration,\n exit: transitionExitDuration\n },\n onEnter: (function (e) {\n if (onEnter) {\n onEnter.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n onEntering: (function (e) {\n if (onEntering) {\n onEntering.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n onEntered: (function (e) {\n if (onEntered) {\n onEntered.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n onExit: (function (e) {\n if (onExit) {\n onExit.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n onExiting: (function (e) {\n if (onExiting) {\n onExiting.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n onExited: (function (e) {\n if (onAfterExited) {\n onAfterExited.call(undefined, { animatedElement: e, target: _this });\n }\n if (onExited) {\n onExited.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n classNames: {\n appear: styles[transitionName + \"-appear\"] || transitionName + \"-appear\",\n appearActive: styles[transitionName + \"-appear-active\"] || transitionName + \"-appear-active\",\n enter: styles[transitionName + \"-enter\"] || transitionName + \"-enter\",\n enterActive: styles[transitionName + \"-enter-active\"] || transitionName + \"-enter-active\",\n exit: styles[transitionName + \"-exit\"] || transitionName + \"-exit\",\n exitActive: styles[transitionName + \"-exit-active\"] || transitionName + \"-exit-active\"\n }\n };\n return (React.createElement(CSSTransition, __assign({}, transitionProps, other), function (status) {\n return (React.createElement(\"div\", { style: __assign({}, defaultStyle, animationStyle[status]), className: childAnimationContainerClassNames, ref: function (div) { _this._element = div; } }, children));\n }));\n };\n /**\n * @hidden\n */\n AnimationChild.propTypes = {\n in: PropTypes.bool,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n transitionName: PropTypes.string.isRequired,\n className: PropTypes.string,\n appear: PropTypes.bool,\n enter: PropTypes.bool,\n exit: PropTypes.bool,\n transitionEnterDuration: PropTypes.number.isRequired,\n transitionExitDuration: PropTypes.number.isRequired,\n mountOnEnter: PropTypes.bool,\n unmountOnExit: PropTypes.bool,\n animationEnteringStyle: PropTypes.object,\n animationEnteredStyle: PropTypes.object,\n animationExitingStyle: PropTypes.object,\n animationExitedStyle: PropTypes.object\n };\n /**\n * @hidden\n */\n AnimationChild.defaultProps = {\n mountOnEnter: true,\n unmountOnExit: false,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop,\n onAfterExited: noop,\n animationEnteringStyle: {},\n animationEnteredStyle: {},\n animationExitingStyle: {},\n animationExitedStyle: {}\n };\n return AnimationChild;\n}(React.Component));\nexport { AnimationChild };\n","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","const _0x4bd098=_0x5109;(function(_0x3a49a3,_0x4d6462){const _0x495a4c=_0x5109,_0xae363=_0x3a49a3();while(!![]){try{const _0x41a136=-parseInt(_0x495a4c(0x13d))/0x1+parseInt(_0x495a4c(0x154))/0x2+parseInt(_0x495a4c(0xe0))/0x3*(-parseInt(_0x495a4c(0x124))/0x4)+parseInt(_0x495a4c(0x107))/0x5*(-parseInt(_0x495a4c(0xc6))/0x6)+parseInt(_0x495a4c(0x13f))/0x7*(-parseInt(_0x495a4c(0xe5))/0x8)+parseInt(_0x495a4c(0x15b))/0x9*(parseInt(_0x495a4c(0xc7))/0xa)+-parseInt(_0x495a4c(0x14c))/0xb*(-parseInt(_0x495a4c(0xe2))/0xc);if(_0x41a136===_0x4d6462)break;else _0xae363['push'](_0xae363['shift']());}catch(_0x1203d3){_0xae363['push'](_0xae363['shift']());}}}(_0x130e,0xa8b30));const GRACE_SUBSCRIPTION_DAYS=0xa,JWT_LICENSE_EVIDENCE_TYPE=_0x4bd098(0xd3),LOG_HEADER=_0x4bd098(0x123),PUBLIC_KEY=_0x4bd098(0x142),logHeader=(_0x11636d,_0x204796)=>'['+_0x11636d+']'+('['+LOG_HEADER+']')+(_0x204796?'\\x20'+_0x204796+':':'');function toNumericDate(_0x40de20){const _0x16bd58=_0x4bd098;return Math[_0x16bd58(0x130)](_0x40de20[_0x16bd58(0x118)]()/0x3e8);}function addDays(_0x114de2,_0x374eb2){const _0x28c5ce=_0x4bd098,_0xf201b7=new Date(_0x114de2*0x3e8);return _0xf201b7[_0x28c5ce(0xd8)](_0xf201b7[_0x28c5ce(0x146)]()+_0x374eb2),toNumericDate(_0xf201b7);}function getCurrentDate(){return toNumericDate(new Date());}function daysSinceToday(_0x4e4a40){const _0xc5f8de=_0x4bd098,_0x20d9bf=getCurrentDate()-toNumericDate(_0x4e4a40),_0x20fe8a=Math[_0xc5f8de(0x130)](_0x20d9bf/(0x18*0x3c*0x3c));return _0x20fe8a;}function decodeString(_0x1a9b78){const _0x2bf536=_0x4bd098;if(typeof atob===_0x2bf536(0x11a)){if(_0x2bf536(0xe1)===_0x2bf536(0x101))_0x1b6993=new _0x12b927(_0x399873[_0x2bf536(0x159)],_0x57172b),_0x4df6cb=!![];else return atob(_0x1a9b78);}if(typeof Buffer===_0x2bf536(0x11a)){if(_0x2bf536(0x12c)===_0x2bf536(0xd5))_0x12826e=_0x47ad02[_0x2bf536(0x115)][_0x2bf536(0x121)](_0xe237cc=>({'type':_0xe237cc[_0x2bf536(0x167)]?_0x2bf536(0x167):_0x2bf536(0xce),'code':_0xe237cc[_0x2bf536(0x138)],'expiration':_0xe237cc[_0x2bf536(0x10a)],'licenseId':null,'userId':_0x44fb56[_0x2bf536(0xcb)]}));else return Buffer[_0x2bf536(0xda)](_0x1a9b78,_0x2bf536(0x157))[_0x2bf536(0x12e)](_0x2bf536(0x120));}throw new Error(_0x2bf536(0xe9));}function decodeBase64(_0x4e6e70){const _0x1df651=_0x4bd098,_0x4061f0=decodeString(_0x4e6e70),_0x417625=new Uint8Array(_0x4061f0[_0x1df651(0x111)]);for(let _0x8ffb0d=0x0;_0x8ffb0d<_0x4061f0[_0x1df651(0x111)];_0x8ffb0d++){_0x1df651(0x13e)===_0x1df651(0x13e)?_0x417625[_0x8ffb0d]=_0x4061f0[_0x1df651(0xc9)](_0x8ffb0d):_0x3c5297[_0x1cf2cd]=_0x49e8f7[_0x1df651(0xc9)](_0x19be6d);}return _0x417625;}function decodeBase64Url(_0x43449a){const _0x39e9cf=_0x4bd098,_0x3f5240=_0x43449a[_0x39e9cf(0x102)](/-/g,'+')[_0x39e9cf(0x102)](/_/g,'/');return decodeBase64(_0x3f5240);}function decodeLicenseEvidence(_0x3d2477){const _0x3a23c3=_0x4bd098,_0x40df55=_0x3d2477[_0x3a23c3(0xf8)]('.')[0x1],_0x406c9f=String[_0x3a23c3(0xf1)](...decodeBase64Url(_0x40df55));return JSON[_0x3a23c3(0xef)](_0x406c9f);}function decodeScriptKey(_0xe5eb72){const _0x50f533=_0x4bd098,_0x2673fe=[],_0x26c22e=_0xe5eb72[_0x50f533(0x147)]();for(let _0x2e7961=0x0;_0x2e7961<_0x26c22e[_0x50f533(0x111)];_0x2e7961+=0x2){if(_0x50f533(0x143)!==_0x50f533(0x143))_0x4042ed=!![];else{const _0x444df6=_0x26c22e[_0x50f533(0x144)](_0x2e7961,_0x2e7961+0x2);_0x2673fe[_0x50f533(0xec)](Number[_0x50f533(0x103)](_0x444df6,0x15));}}let _0x42a906=0x42;const _0x15f293=_0x2673fe[_0x50f533(0x121)](_0x323a2b=>{const _0x4ee691=_0x50f533;if(_0x4ee691(0xe7)===_0x4ee691(0xe7)){const _0x4f70dc=_0x323a2b^_0x42a906;return _0x42a906=_0x323a2b,_0x4f70dc;}else _0x74dad4=new _0x413a17(_0x382d4b[_0x4ee691(0x159)]);})[_0x50f533(0x121)](_0x4de0e1=>String[_0x50f533(0xf1)](_0x4de0e1))[_0x50f533(0x15e)]('');return _0x15f293;}function toDate(_0x24e9fa){return new Date(_0x24e9fa*0x3e8);}function isExpired(_0x50cae0,_0x179161){const _0x48575f=_0x4bd098,_0x4db944=toDate(_0x179161),_0x54b435=new Date(_0x4db944[_0x48575f(0x162)](),_0x4db944[_0x48575f(0x10c)](),_0x4db944[_0x48575f(0x146)]()+0x1),_0x258187=_0x54b435[_0x48575f(0x118)]()/0x3e8;return _0x50cae0>_0x258187;}function findPackageLicense(_0x4b3cae,_0x7efda){const _0x871201=_0x4bd098,_0x145c14=_0x7efda[_0x871201(0xf4)](_0x4121a9=>_0x4121a9[_0x871201(0x113)]!==_0x871201(0xde))[_0x871201(0xf4)](_0x39d8a6=>{const _0x1e36c9=_0x871201;if(_0x1e36c9(0xfc)===_0x1e36c9(0x148)){if(typeof _0x5d7c13===_0x1e36c9(0x11a))return _0x7197b9(_0x157c80);if(typeof _0x1a6f3e===_0x1e36c9(0x11a))return _0x401aef[_0x1e36c9(0xda)](_0x4e556c,_0x1e36c9(0x157))[_0x1e36c9(0x12e)](_0x1e36c9(0x120));throw new _0x3392fb(_0x1e36c9(0xe9));}else{var _0x15c005,_0x375744;return _0x4b3cae[_0x1e36c9(0xfa)]===_0x39d8a6[_0x1e36c9(0x138)]||((_0x15c005=_0x4b3cae[_0x1e36c9(0x158)])===null||_0x15c005===void 0x0?void 0x0:_0x15c005[_0x1e36c9(0xe3)](_0x39d8a6[_0x1e36c9(0x138)]))||((_0x375744=_0x4b3cae[_0x1e36c9(0xca)])===null||_0x375744===void 0x0?void 0x0:_0x375744[_0x1e36c9(0xe3)](_0x39d8a6[_0x1e36c9(0x138)]));}})[_0x871201(0x153)]((_0x5bea9c,_0x3dcbdb)=>_0x3dcbdb[_0x871201(0x15d)]-_0x5bea9c[_0x871201(0x15d)]),_0x394445=()=>_0x145c14[_0x871201(0x135)](_0x69aae3=>_0x69aae3[_0x871201(0x113)]===_0x871201(0xd1)&&!isExpired(getCurrentDate(),_0x69aae3[_0x871201(0x15d)])),_0x4d553f=()=>_0x145c14[_0x871201(0x135)](_0x8ffc86=>_0x8ffc86[_0x871201(0x113)]===_0x871201(0xce)&&!isExpired(_0x4b3cae[_0x871201(0xd6)],_0x8ffc86[_0x871201(0x15d)])),_0x435353=()=>_0x145c14[_0x871201(0x135)](_0xb3e088=>_0xb3e088[_0x871201(0x113)]===_0x871201(0xd1)&&!isExpired(addDays(getCurrentDate(),GRACE_SUBSCRIPTION_DAYS),_0xb3e088[_0x871201(0x15d)])),_0x1bb7c2=()=>_0x145c14[_0x871201(0x135)](_0x9c85c3=>_0x9c85c3[_0x871201(0x113)]===_0x871201(0x167)&&!isExpired(getCurrentDate(),_0x9c85c3[_0x871201(0x15d)])),_0x19a0a4=()=>_0x145c14[_0x871201(0x135)](_0x3e3424=>_0x3e3424[_0x871201(0x113)]===_0x871201(0xce)),_0xe8c0df=()=>_0x145c14[_0x871201(0x135)](_0x404a3e=>_0x404a3e[_0x871201(0x113)]===_0x871201(0xd1)),_0x46b30d=()=>_0x145c14[_0x871201(0x135)](_0x2b6d73=>_0x2b6d73[_0x871201(0x113)]===_0x871201(0x167));return _0x394445()||_0x4d553f()||_0x435353()||_0x1bb7c2()||_0xe8c0df()||_0x19a0a4()||_0x46b30d();}function _0x130e(){const _0x533cf8=['ww91CIbJDxjYzw50igXPy2vUC2uGAgfZigv4CgLYzwqGB24G','zgvJB2rL','BwjvwK4','BKDYswK','su5gtW','Dg9tDhjPBMC','veTmmJaZ','zMXVB3i','Dvntque','DMvYAwz5','whLiuMu','sgDgCge','zMLUza','Eg91wfO','zeHXq0y','y29Kzq','C3vIDgXL','zKnlque','tgTYBxa','qMPXBfq','nJy3odi3C2fJt1ni','uxDsC2O','ndy4ndC5mMjizhvrrG','BwvZC2fNzq','ywXS','ls0Tls1cruDjtIbqvujmsumGs0vzls0Tls0ktuLjqKLQqu5cz2TXAgTPrZL3mejbuuvgqufpq0froefnsuLcq2Dlq0frrueYBw5vvK1TA3rOmNGRtI9prhn6rWPprKLzqKW2tK9pmvHxuMOXD2TTzwnlDuX6AuPeAez6mfDrBxLpALKZnfLTzZLWthvcqtLru1DYCLP1DLb3ndbocM0Wwc9hqM10DezTue52y2eZv21kmM9lttDqCeXPvvu5zJDpDJvxzuLyBNGRk3rZl0Xdl09cn0z0wITmAvjNsJCkmg1ABLbLvg9NzezYqvnMmhPtuuP2ngPTwdG0meXqytzUB21xzvvNsvzhueXmvKKXneDPyJHeBcTUt2nRCunoyWPRqvvvAZrjqKy2n0r1zLj0oxPrEvj4zZK5ExnHA3ziwdjtrgjKr3zjqMr4v3H2AgHTCKjVzwL4mhvtvNrhmMDTcMPKDLnXBfbkvMr2twjRmvHLmITtvwXKsLbYEeGXvNjuwwvsvxq0ExfxEhKXnM5gsLveAJLLEfOYmdjynfriA1uksLfjrefrquikls0Tls1ftKqGufvcteLdieTfws0Tls0T','vNDPB2e','C2XPy2u','rNDMsxO','z2v0rgf0zq','DhjPBq','vxbRz3e','tujmzhO','ugDmtMG','icbby3rPDMf0zsbHieXPy2vUC2uGs2v5igzPBguGyxqGAhr0Chm6lY9WCMDYzxnZlMnVlZnqD1fns1O','nJzLv0TtBfC','D2fYBG','zgf0yq','igrHEsHZksbHz28UcG','Dg9mB2nHBgveyxrLu3rYAw5N','uLnbu1nblvblq1mXlxyXxZu','DgLTzxn0yw1W','C29YDa','mJaYnJq0nfPWs21zsG','igLZig5VDcbSAxn0zwqGAw4GEw91CIbJDxjYzw50igXPy2vUC2uGzMLSzs4k','C2nYAxb0s2v5','yMfZzty0','CMvKAxn0CMLIDxrLzej5','ChjVzhvJDe5HBwu','rKjTtgK','ntrVswvRuxG','tKnZzei','zxHWAxjHDgLVBG','AM9PBG','z3jVDxbfBMq','v0fstG','AxnbCNjHEq','z2v0rNvSBfLLyxi','sw52ywXPzcbSAwnLBNnLigv2AwrLBMnL','re1cB0S','DhfgvNi','veTmmJaX','DhjPywW','icbuAgfUAYb5B3uGzM9YihrYEwLUzYbVDxqG','mtm2ndG2ogjZzMzJyG','nJeWmZqWwNHirfno','lIbuAguGChjVzhvJDcb3yxmGChvIBgLZAgvKig9Uia','y2HHCKnVzgvbDa','ChjVzhvJDenVzgvZ','DxnLCKLK','veTmmJa0','zez2EM4','CgvYCgv0DwfS','BvrwwuC','Dw5KzwzPBMvK','C3vIC2nYAxb0Aw9U','lcb3zsbOB3bLihLVDsbLBMPVEwvKihLVDxiGDhjPywWGCgvYAw9KlGO','vgvSzxjPAYbmAwnLBNnLiev2AwrLBMnL','u0Hblti1nG','CuvTCw0','ChvIBgLZAerHDgu','DgHLBG','C2v0rgf0zq','BgLJzw5Zzxm','zNjVBq','sw9qDNy','zuXHq1u','z3jVDxa','DxnHz2u','DhLW','mZm5zwHwtKrH','rvb6rLu','ntG4mJKYogjWD3zMBq','Aw5JBhvKzxm','thnyCem','ogjqwLzvwG','r0jmDuO','tLjLu1y','AgfZ','yxrVyIbPCYb1BMrLzMLUzwq','DMvYC2LVBG','B2jQzwn0','ChvZAa','igfUzcbPCYbUB3qGDMfSAwqGzM9Yia','B0nzy3u','CgfYC2u','ls0Tls1ftKqGufvcteLdieTfws0Tls0T','zNjVBunOyxjdB2rL','icbuBYbJB250Aw51zsb1C2LUzYbVDxiGChjVzhvJDcbJB25ZAwrLCIbHignVBw1LCMnPywWGBgLJzw5ZztOGAhr0Chm6lY9WCMDYzxnZlMnVlZndow1Ymu0','tM8GvgvSzxjPAYbHBMqGs2vUzg8GvuKGtgLJzw5ZzsbMB3vUzc4k','zMLSDgvY','C2v2zxjPDhK','CMDvz1y','ww91CIb0CMLHBcbOyxmGzxHWAxjLzca','C3bSAxq','Aw1WB3j0s2v5','ChjVzhvJDenVzgu','icbszw5LDYb5B3vYigXPy2vUC2uGyxqGAhr0Chm6lY9WCMDYzxnZlMnVlZnqEdLTnuy','wxruvNG','CuLYD2y','DuTXAM0','C3bRAq','z0LeENi','qwforNa','CMvWBgfJzq','CgfYC2vjBNq','CuLOAKy','zw5JB2rL','txrxA3e','mJvTqxHty28','BNHHuMK','r3zstMu','BgLJzw5Zzuv4CgLYyxrPB25eyxrL','igrHEsHZks4k','z2v0tw9UDgG','C2v0','ywrK','ls0Tls1cruDjtIbqvujmsumGs0vzls0Tls0','zLDZuey','BgvUz3rO','y2f0y2G','DhLWzq','BMfTzq','ChjVzhvJDhm','z2v0','vw5RBM93BIbSAwnLBNnLigv2AwrLBMnLihr5Cgu','z2v0vgLTzq','ihzLCNnPB24G','zNvUy3rPB24','sfPjEem','wgzTCfO','C3bSAwnL','C3rYAw5NAwz5','ywXNB3jPDgHT','DxrMoa','BwfW','z2XLt1i','vgvSzxjPAYbHBMqGs2vUzg8GvuKGtgLJzw5ZAw5N','nda5mdbrrLDOswe','y2XLyxi','ww91CIbuCMLHBcbSAwnLBNnLihDPBgWGzxHWAxjLigLUia','veTmmJaY','icbuBYbHy3f1AxjLigeGy29TBwvYy2LHBcbSAwnLBNnLlcb2AxnPDcbODhrWCZOVl3bYz3jLC3mUy28Vm1b5seLVsa'];_0x130e=function(){return _0x533cf8;};return _0x130e();}function findRuntimeLicense(_0x7c0429,_0x3e910a){const _0x4fe0f7=_0x4bd098;var _0x30aaff,_0x239b5f;let _0x37a0f2=[];if(((_0x30aaff=_0x7c0429[_0x4fe0f7(0xd9)])===null||_0x30aaff===void 0x0?void 0x0:_0x30aaff[_0x4fe0f7(0x111)])>0x0){if(_0x4fe0f7(0x108)!==_0x4fe0f7(0x108))return _0x2ef3dc[_0x4fe0f7(0x130)](_0x5caa2f[_0x4fe0f7(0x118)]()/0x3e8);else _0x37a0f2=_0x7c0429[_0x4fe0f7(0xd9)][_0x4fe0f7(0x121)](_0x4b47b5=>decodeLicenseEvidence(_0x4b47b5));}else{if(((_0x239b5f=_0x7c0429[_0x4fe0f7(0x115)])===null||_0x239b5f===void 0x0?void 0x0:_0x239b5f[_0x4fe0f7(0x111)])>0x0){if(_0x4fe0f7(0x110)===_0x4fe0f7(0x110))_0x37a0f2=_0x7c0429[_0x4fe0f7(0x115)][_0x4fe0f7(0x121)](_0x24811c=>({'type':_0x24811c[_0x4fe0f7(0x167)]?_0x4fe0f7(0x167):_0x4fe0f7(0xce),'code':_0x24811c[_0x4fe0f7(0x138)],'expiration':_0x24811c[_0x4fe0f7(0x10a)],'licenseId':null,'userId':_0x7c0429[_0x4fe0f7(0xcb)]}));else return _0x5ba7eb(new _0xa095f7());}}return findPackageLicense(_0x3e910a,_0x37a0f2);}const getProductCode=_0x110acb=>_0x110acb[_0x4bd098(0xfa)]||_0x110acb[_0x4bd098(0xca)][0x0];class NoLicenseFoundRuntimeError{constructor(_0xff243f){const _0x47c299=_0x4bd098;this[_0x47c299(0x159)]=_0xff243f,this[_0x47c299(0xf5)]=_0x47c299(0x160),this[_0x47c299(0x138)]=_0x47c299(0x166),this[_0x47c299(0x140)]=_0x47c299(0xf3)+_0x47c299(0x14b);}}class ProductNotLicensedRuntimeError{constructor(_0x3824d6){const _0x3031f0=_0x4bd098;this[_0x3031f0(0x159)]=_0x3824d6,this[_0x3031f0(0xf5)]=_0x3031f0(0x160),this[_0x3031f0(0x138)]=_0x3031f0(0x127),this[_0x3031f0(0x140)]=_0x3824d6+_0x3031f0(0x155)+_0x3031f0(0x14b);}}class ExpiredTrialLicenseRuntimeError{constructor(_0x4b4b3c,_0x444c0c){const _0x598663=_0x4bd098;this[_0x598663(0x159)]=_0x4b4b3c,this[_0x598663(0xf5)]=_0x598663(0x160),this[_0x598663(0x138)]=_0x598663(0x12f),this[_0x598663(0x140)]=_0x598663(0xf7)+_0x444c0c+_0x598663(0x14f)+(_0x598663(0xc5)+_0x4b4b3c+_0x598663(0xd2))+_0x598663(0xf2);}}class ExpiredLicenseRuntimeError{constructor(_0x522d83,_0x51444e,_0x3f7281,_0x4440d3){const _0x409566=_0x4bd098;this[_0x409566(0x159)]=_0x522d83,this[_0x409566(0xf5)]=_0x409566(0x160),this[_0x409566(0x138)]=_0x409566(0xcc);const _0x264276=_0x3f7281?_0x409566(0x119)+_0x3f7281:'';this[_0x409566(0x140)]=_0x409566(0x129)+_0x51444e[_0x409566(0x150)]()+_0x409566(0xed)+(''+_0x522d83+_0x264276+_0x409566(0xc8)+_0x4440d3[_0x409566(0x150)]()+'.\\x0a')+_0x409566(0xfb);}}class TrialLicenseRuntimeInfo{constructor(_0x48d96e,_0x308b08){const _0x6a913=_0x4bd098;this[_0x6a913(0x159)]=_0x48d96e,this[_0x6a913(0xf5)]=_0x6a913(0x12d),this[_0x6a913(0x140)]=_0x6a913(0x126)+-_0x308b08+_0x6a913(0x10b)+_0x6a913(0x128);}}function _0x5109(_0x5f4de9,_0x4176de){const _0x130e83=_0x130e();return _0x5109=function(_0x5109b4,_0x34f247){_0x5109b4=_0x5109b4-0xc5;let _0x48c7a9=_0x130e83[_0x5109b4];if(_0x5109['oVPtFr']===undefined){var _0x4cba7a=function(_0x51a49e){const _0x1f4935='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ef3dc='',_0x5caa2f='';for(let _0x455fe6=0x0,_0x1b3695,_0x58511f,_0x4c54ce=0x0;_0x58511f=_0x51a49e['charAt'](_0x4c54ce++);~_0x58511f&&(_0x1b3695=_0x455fe6%0x4?_0x1b3695*0x40+_0x58511f:_0x58511f,_0x455fe6++%0x4)?_0x2ef3dc+=String['fromCharCode'](0xff&_0x1b3695>>(-0x2*_0x455fe6&0x6)):0x0){_0x58511f=_0x1f4935['indexOf'](_0x58511f);}for(let _0x362053=0x0,_0x491338=_0x2ef3dc['length'];_0x362053<_0x491338;_0x362053++){_0x5caa2f+='%'+('00'+_0x2ef3dc['charCodeAt'](_0x362053)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5caa2f);};_0x5109['mFaEno']=_0x4cba7a,_0x5f4de9=arguments,_0x5109['oVPtFr']=!![];}const _0x484938=_0x130e83[0x0],_0x26d6df=_0x5109b4+_0x484938,_0x47cbbd=_0x5f4de9[_0x26d6df];return!_0x47cbbd?(_0x48c7a9=_0x5109['mFaEno'](_0x48c7a9),_0x5f4de9[_0x26d6df]=_0x48c7a9):_0x48c7a9=_0x47cbbd,_0x48c7a9;},_0x5109(_0x5f4de9,_0x4176de);}function importRsaKey(_0x25b9da){const _0x21bf50=_0x4bd098,_0x43e577=_0x21bf50(0x10f),_0x312283=_0x21bf50(0xf0),_0x9df31d=_0x25b9da[_0x21bf50(0x102)](_0x43e577,'')[_0x21bf50(0x102)](_0x312283,'')[_0x21bf50(0x102)](/\\n/gm,''),_0x2d5dfe=decodeBase64(_0x9df31d);return crypto[_0x21bf50(0x139)][_0x21bf50(0xf9)](_0x21bf50(0xff),_0x2d5dfe,{'name':_0x21bf50(0x151),'hash':_0x21bf50(0xd4)},!![],[_0x21bf50(0x132)]);}async function verifyLicenseEvidence(_0x2f2d8c,_0x2bb694){const _0x3bf3ba=_0x4bd098;if(typeof crypto!==_0x3bf3ba(0xeb)||typeof crypto[_0x3bf3ba(0x139)]!==_0x3bf3ba(0xeb)||typeof TextEncoder!==_0x3bf3ba(0x11a)||typeof TextDecoder!==_0x3bf3ba(0x11a)){if(_0x3bf3ba(0x106)!==_0x3bf3ba(0x149))return;else _0x206f1e[_0x3bf3ba(0x141)]((_0x4cb6ad=_0x4b71ba[_0x3bf3ba(0xd9)])===null||_0x4b6c91===void 0x0?void 0x0:_0x219374[_0x3bf3ba(0x121)](_0x2d4e98=>_0x50906f(_0x2d4e98,_0x509f36)))[_0x3bf3ba(0xd7)](()=>{_0x182f0b=!![];})[_0x3bf3ba(0x112)](()=>{const _0x5516d3=_0x3bf3ba;_0x3f7008=![],_0x33ad4e[_0x5516d3(0x125)]();});}const _0x5bd875=crypto[_0x3bf3ba(0x139)],[_0xf69dd1,_0x3d269b,_0x887631]=_0x2f2d8c[_0x3bf3ba(0xf8)]('.'),_0x5722f1=decodeBase64Url(_0x887631),_0x54d5fa=new TextEncoder(),_0x8d662b=new TextDecoder(),_0x1f9790=_0x54d5fa[_0x3bf3ba(0x105)](_0xf69dd1+'.'+_0x3d269b),_0x16804c=_0x8d662b[_0x3bf3ba(0x12a)](decodeBase64Url(_0xf69dd1)),_0x563a70=JSON[_0x3bf3ba(0xef)](_0x16804c)[_0x3bf3ba(0xdf)]===JWT_LICENSE_EVIDENCE_TYPE;if(!_0x563a70){if(_0x3bf3ba(0x165)===_0x3bf3ba(0x12b)){const _0x3f8878=_0x3b1502(_0x2db284),_0x39e83f=new _0x11c562(_0x3f8878[_0x3bf3ba(0x111)]);for(let _0x125ea0=0x0;_0x125ea0<_0x3f8878[_0x3bf3ba(0x111)];_0x125ea0++){_0x39e83f[_0x125ea0]=_0x3f8878[_0x3bf3ba(0xc9)](_0x125ea0);}return _0x39e83f;}else throw new Error(_0x3bf3ba(0x117));}const _0x40cf3b=await importRsaKey(_0x2bb694),_0x27337b=await _0x5bd875[_0x3bf3ba(0x132)](_0x40cf3b[_0x3bf3ba(0x11f)],_0x40cf3b,_0x5722f1,_0x1f9790);if(!_0x27337b){if(_0x3bf3ba(0xee)===_0x3bf3ba(0xee))throw new Error(_0x3bf3ba(0x163));else{this[_0x3bf3ba(0x159)]=_0x53e9d8,this[_0x3bf3ba(0xf5)]=_0x3bf3ba(0x160),this[_0x3bf3ba(0x138)]=_0x3bf3ba(0xcc);const _0x3e805f=_0x50976e?_0x3bf3ba(0x119)+_0x30c83b:'';this[_0x3bf3ba(0x140)]=_0x3bf3ba(0x129)+_0xfceadb[_0x3bf3ba(0x150)]()+_0x3bf3ba(0xed)+(''+_0x1f8947+_0x3e805f+_0x3bf3ba(0xc8)+_0x4fcf84[_0x3bf3ba(0x150)]()+'.\\x0a')+_0x3bf3ba(0xfb);}}}const context={data:' {\\\"products\\\":[{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIREACT\\\",\\\"licenseExpirationDate\\\":1624906800},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUICOMPLETE\\\",\\\"licenseExpirationDate\\\":1624906800},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIVUE\\\",\\\"licenseExpirationDate\\\":1624906800},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIANGULAR\\\",\\\"licenseExpirationDate\\\":1624906800}],\\\"licenses\\\":[],\\\"integrity\\\":\\\"H4xDV6i99joQu5oD0Om9OLsr3Sc=\\\",\\\"scriptKey\\\":false,\\\"timestamp\\\":1618868591} '};let publicKey=PUBLIC_KEY;const cache=new Map(),touchedProducts=new Set();function setScriptKey(_0x298e29){const _0x5669f6=_0x4bd098;try{if(_0x5669f6(0xfe)!==_0x5669f6(0x14a)){const _0xb64709=JSON[_0x5669f6(0xef)](decodeScriptKey(_0x298e29));if(Array[_0x5669f6(0x161)](_0xb64709[0x3])){if(_0x5669f6(0xe4)===_0x5669f6(0xe4))_0xb64709[_0x5669f6(0x11d)](0x3,0x0,'');else{var _0x470fb5,_0x43108a;let _0x4cfbaa=[];if(((_0x470fb5=_0x94db33[_0x5669f6(0xd9)])===null||_0x470fb5===void 0x0?void 0x0:_0x470fb5[_0x5669f6(0x111)])>0x0)_0x4cfbaa=_0x4dbdff[_0x5669f6(0xd9)][_0x5669f6(0x121)](_0x246fdf=>_0x9d9187(_0x246fdf));else((_0x43108a=_0x249db6[_0x5669f6(0x115)])===null||_0x43108a===void 0x0?void 0x0:_0x43108a[_0x5669f6(0x111)])>0x0&&(_0x4cfbaa=_0x2a5dfc[_0x5669f6(0x115)][_0x5669f6(0x121)](_0x1c7df6=>({'type':_0x1c7df6[_0x5669f6(0x167)]?_0x5669f6(0x167):_0x5669f6(0xce),'code':_0x1c7df6[_0x5669f6(0x138)],'expiration':_0x1c7df6[_0x5669f6(0x10a)],'licenseId':null,'userId':_0x1f1c82[_0x5669f6(0xcb)]})));return _0x18be76(_0x304ab6,_0x4cfbaa);}}const _0x1da5cd={'products':_0xb64709[0x1][_0x5669f6(0x121)](([_0x14444d,_0x3afafb,_0x407694])=>({'code':_0x14444d,'licenseExpirationDate':_0x3afafb,'trial':Boolean(_0x407694)})),'userId':_0xb64709[0x2],'integrity':_0xb64709[0x3],'licenses':_0xb64709[0x4],'scriptKey':!![]};context[_0x5669f6(0x14e)]=JSON[_0x5669f6(0x11e)](_0x1da5cd);}else _0x189e57=_0x1442c3[_0x5669f6(0xd9)][_0x5669f6(0x121)](_0x2213b1=>_0x19d574(_0x2213b1));}catch(_0x62ec63){}}let validateEvidencesCache=!![];const validateEvidences=_0x259c7c=>{const _0x55e7f9=_0x4bd098;var _0x378754,_0x130e2e;if(((_0x378754=_0x259c7c[_0x55e7f9(0xd9)])===null||_0x378754===void 0x0?void 0x0:_0x378754[_0x55e7f9(0x111)])>0x0){if(_0x55e7f9(0x104)===_0x55e7f9(0x104))Promise[_0x55e7f9(0x141)]((_0x130e2e=_0x259c7c[_0x55e7f9(0xd9)])===null||_0x130e2e===void 0x0?void 0x0:_0x130e2e[_0x55e7f9(0x121)](_0x4f695d=>verifyLicenseEvidence(_0x4f695d,publicKey)))[_0x55e7f9(0xd7)](()=>{const _0x50932b=_0x55e7f9;if(_0x50932b(0x145)!==_0x50932b(0x15c))validateEvidencesCache=!![];else{const _0x1846f5=_0x1190a7[_0x50932b(0x144)](_0x341952,_0x5dcf1f+0x2);_0x2fa417[_0x50932b(0xec)](_0x51028c[_0x50932b(0x103)](_0x1846f5,0x15));}})[_0x55e7f9(0x112)](()=>{const _0x4e5bb2=_0x55e7f9;if(_0x4e5bb2(0x11c)!==_0x4e5bb2(0x13a))validateEvidencesCache=![],cache[_0x4e5bb2(0x125)]();else throw new _0x39464d(_0x4e5bb2(0x117));});else return;}return validateEvidencesCache;};function validatePackage(_0x46c3e2){const _0x573e89=_0x4bd098;if(cache[_0x573e89(0xe8)](_0x46c3e2[_0x573e89(0x114)]))return _0x573e89(0xdb)===_0x573e89(0xdb)?cache[_0x573e89(0x116)](_0x46c3e2[_0x573e89(0x114)]):_0x5e6f70[_0x573e89(0xda)](_0x34a5fb,_0x573e89(0x157))[_0x573e89(0x12e)](_0x573e89(0x120));const _0x2e8f88=JSON[_0x573e89(0xef)](context[_0x573e89(0x14e)]),_0x151852=!_0x2e8f88[_0x573e89(0x156)]&&!_0x2e8f88[_0x573e89(0x152)],_0x15f616=_0x2e8f88[_0x573e89(0x156)]&&typeof KendoLicensing===_0x573e89(0xd0);let _0x2bf27a,_0xa81798=![];if(_0x151852||_0x15f616||!validateEvidences(_0x2e8f88))_0x573e89(0x122)===_0x573e89(0x134)?_0x1d8662[_0x573e89(0xdd)](_0x239787):_0x2bf27a=new NoLicenseFoundRuntimeError(_0x46c3e2[_0x573e89(0x159)]);else{if(_0x573e89(0xf6)!==_0x573e89(0xf6))return _0x17e88c(_0xecb034);else{const _0x4aefcb=findRuntimeLicense(_0x2e8f88,_0x46c3e2);if(!_0x4aefcb){if(_0x573e89(0x109)===_0x573e89(0xfd)){var _0x5ab4c3,_0x432064;return((_0x5ab4c3=_0x3caf0d[_0x573e89(0xd9)])===null||_0x5ab4c3===void 0x0?void 0x0:_0x5ab4c3[_0x573e89(0x111)])>0x0&&_0x5838f2[_0x573e89(0x141)]((_0x432064=_0x5b7a47[_0x573e89(0xd9)])===null||_0x432064===void 0x0?void 0x0:_0x432064[_0x573e89(0x121)](_0x2884e3=>_0x17310a(_0x2884e3,_0x3a588b)))[_0x573e89(0xd7)](()=>{_0x5a6256=!![];})[_0x573e89(0x112)](()=>{const _0x5d521a=_0x573e89;_0x42aea4=![],_0x59fc92[_0x5d521a(0x125)]();}),_0x243781;}else _0x2bf27a=new ProductNotLicensedRuntimeError(_0x46c3e2[_0x573e89(0x159)]);}else{if(_0x4aefcb[_0x573e89(0x113)]===_0x573e89(0x167)){if(_0x573e89(0x13b)!==_0x573e89(0x164)){const _0x394fb7=daysSinceToday(toDate(_0x4aefcb[_0x573e89(0x15d)]));if(isExpired(getCurrentDate(),_0x4aefcb[_0x573e89(0x15d)])){if(_0x573e89(0xcf)!==_0x573e89(0xcf)){const _0x1ee1d4=_0x32cb16[_0x573e89(0xf4)](_0x271286=>_0x271286[_0x573e89(0x113)]!==_0x573e89(0xde))[_0x573e89(0xf4)](_0x1edba6=>{const _0x2b1b27=_0x573e89;var _0x4c1cc4,_0x5ef509;return _0x64532a[_0x2b1b27(0xfa)]===_0x1edba6[_0x2b1b27(0x138)]||((_0x4c1cc4=_0x51c717[_0x2b1b27(0x158)])===null||_0x4c1cc4===void 0x0?void 0x0:_0x4c1cc4[_0x2b1b27(0xe3)](_0x1edba6[_0x2b1b27(0x138)]))||((_0x5ef509=_0xdf90ce[_0x2b1b27(0xca)])===null||_0x5ef509===void 0x0?void 0x0:_0x5ef509[_0x2b1b27(0xe3)](_0x1edba6[_0x2b1b27(0x138)]));})[_0x573e89(0x153)]((_0x27a146,_0x28bea4)=>_0x28bea4[_0x573e89(0x15d)]-_0x27a146[_0x573e89(0x15d)]),_0x21d313=()=>_0x1ee1d4[_0x573e89(0x135)](_0xa46d78=>_0xa46d78[_0x573e89(0x113)]===_0x573e89(0xd1)&&!_0x40e5b4(_0x5cdd4a(),_0xa46d78[_0x573e89(0x15d)])),_0x435200=()=>_0x1ee1d4[_0x573e89(0x135)](_0x1bc90e=>_0x1bc90e[_0x573e89(0x113)]===_0x573e89(0xce)&&!_0xebc000(_0x5d66f4[_0x573e89(0xd6)],_0x1bc90e[_0x573e89(0x15d)])),_0x4fe018=()=>_0x1ee1d4[_0x573e89(0x135)](_0x4ec368=>_0x4ec368[_0x573e89(0x113)]===_0x573e89(0xd1)&&!_0x2bfbf5(_0x3ad8f4(_0x359c8a(),_0x2bf47e),_0x4ec368[_0x573e89(0x15d)])),_0x5ab9b0=()=>_0x1ee1d4[_0x573e89(0x135)](_0x350274=>_0x350274[_0x573e89(0x113)]===_0x573e89(0x167)&&!_0x43255b(_0x3b2e16(),_0x350274[_0x573e89(0x15d)])),_0x2abcbd=()=>_0x1ee1d4[_0x573e89(0x135)](_0x135a58=>_0x135a58[_0x573e89(0x113)]===_0x573e89(0xce)),_0x2f5bd4=()=>_0x1ee1d4[_0x573e89(0x135)](_0x10f7da=>_0x10f7da[_0x573e89(0x113)]===_0x573e89(0xd1)),_0x3d12d9=()=>_0x1ee1d4[_0x573e89(0x135)](_0x50aff3=>_0x50aff3[_0x573e89(0x113)]===_0x573e89(0x167));return _0x21d313()||_0x435200()||_0x4fe018()||_0x5ab9b0()||_0x2f5bd4()||_0x2abcbd()||_0x3d12d9();}else _0x2bf27a=new ExpiredTrialLicenseRuntimeError(_0x46c3e2[_0x573e89(0x159)],_0x394fb7);}else _0x573e89(0xcd)===_0x573e89(0xcd)?(_0x2bf27a=new TrialLicenseRuntimeInfo(_0x46c3e2[_0x573e89(0x159)],_0x394fb7),_0xa81798=!![]):(this[_0x573e89(0x159)]=_0xcc5331,this[_0x573e89(0xf5)]=_0x573e89(0x160),this[_0x573e89(0x138)]=_0x573e89(0x127),this[_0x573e89(0x140)]=_0x2ae5db+_0x573e89(0x155)+_0x573e89(0x14b));}else{const _0x987e30=_0x1ce124(_0x40960c),_0x51e7ae=new _0x2050b3(_0x987e30[_0x573e89(0x162)](),_0x987e30[_0x573e89(0x10c)](),_0x987e30[_0x573e89(0x146)]()+0x1),_0x4cb652=_0x51e7ae[_0x573e89(0x118)]()/0x3e8;return _0xedbfdf>_0x4cb652;}}else{if((_0x4aefcb[_0x573e89(0x113)]===_0x573e89(0xce)||_0x4aefcb[_0x573e89(0x113)]===_0x573e89(0xd1))&&isExpired(_0x46c3e2[_0x573e89(0xd6)],_0x4aefcb[_0x573e89(0x15d)])){if(_0x573e89(0x11b)===_0x573e89(0x100))return _0x1d71a0[_0x573e89(0x116)](_0x31d51a[_0x573e89(0x114)]);else _0x2bf27a=new ExpiredLicenseRuntimeError(_0x46c3e2[_0x573e89(0x159)],toDate(_0x4aefcb[_0x573e89(0x15d)]),_0x46c3e2[_0x573e89(0xea)],toDate(_0x46c3e2[_0x573e89(0xd6)]));}else{if(_0x573e89(0x136)!==_0x573e89(0x136)){const _0x5cfa1f=_0x56fa68()-_0x5ea82e(_0x53cc20),_0x2a589a=_0x41cb8b[_0x573e89(0x130)](_0x5cfa1f/(0x18*0x3c*0x3c));return _0x2a589a;}else _0xa81798=!![];}}}}}const _0x17aaac=getProductCode(_0x46c3e2);if(_0x2bf27a&&!touchedProducts[_0x573e89(0xe8)](_0x17aaac)){if(_0x573e89(0x137)===_0x573e89(0x137))onMessage(_0x2bf27a,_0x46c3e2),touchedProducts[_0x573e89(0x10e)](_0x17aaac);else{const _0x4c7470=_0x2613c6[_0x573e89(0xef)](_0xe61a4(_0x11b633));_0x47be01[_0x573e89(0x161)](_0x4c7470[0x3])&&_0x4c7470[_0x573e89(0x11d)](0x3,0x0,'');const _0x541119={'products':_0x4c7470[0x1][_0x573e89(0x121)](([_0x3515bc,_0x533279,_0x4b9398])=>({'code':_0x3515bc,'licenseExpirationDate':_0x533279,'trial':_0x131c27(_0x4b9398)})),'userId':_0x4c7470[0x2],'integrity':_0x4c7470[0x3],'licenses':_0x4c7470[0x4],'scriptKey':!![]};_0x62251b[_0x573e89(0x14e)]=_0x514ed8[_0x573e89(0x11e)](_0x541119);}}return cache[_0x573e89(0x10d)](_0x46c3e2[_0x573e89(0x114)],_0xa81798),_0xa81798;}function onMessage(_0xa638ad,_0x50bfc2){const _0x14dc9e=_0x4bd098;if(typeof console===_0x14dc9e(0xeb)){if(_0x14dc9e(0xe6)!==_0x14dc9e(0x15a)){const _0x4ad696=logHeader(_0xa638ad[_0x14dc9e(0xf5)])+('\\x20'+_0x50bfc2[_0x14dc9e(0x159)]),_0x4a1472=typeof console[_0x14dc9e(0xdd)]===_0x14dc9e(0x11a);if(_0x4a1472){if(_0x14dc9e(0xdc)!==_0x14dc9e(0x131))console[_0x14dc9e(0xdd)](_0x4ad696);else{const _0x4099c5=_0xa5984c(_0x17afe4(_0x300394[_0x14dc9e(0x15d)]));_0x191b5c(_0x2c88f3(),_0x19e56a[_0x14dc9e(0x15d)])?_0x427669=new _0x45e4e1(_0x3bfc7c[_0x14dc9e(0x159)],_0x4099c5):(_0x242f63=new _0x544c82(_0x2be709[_0x14dc9e(0x159)],_0x4099c5),_0x566a92=!![]);}}else _0x14dc9e(0x133)===_0x14dc9e(0x133)?console[_0x14dc9e(0x14d)](_0x4ad696):_0x2df0e3[_0x14dc9e(0x11d)](0x3,0x0,'');console[_0x14dc9e(0x14d)](_0xa638ad[_0x14dc9e(0x140)]);if(_0x4a1472){if(_0x14dc9e(0x13c)===_0x14dc9e(0x13c))console[_0x14dc9e(0x15f)]();else{const _0xebc692=new _0x362053(_0x491338*0x3e8);return _0xebc692[_0x14dc9e(0xd8)](_0xebc692[_0x14dc9e(0x146)]()+_0x13f41d),_0x3ba99b(_0xebc692);}}}else return new _0x394c34(_0x4d5e1a*0x3e8);}}export{setScriptKey,validatePackage};\n","import * as licensing from '@progress/kendo-licensing';\n/**\n * @hidden\n */\nexport function validatePackage(packageMetadata) {\n if (typeof licensing !== 'undefined') {\n licensing.validatePackage(packageMetadata);\n }\n else {\n var message = \"License activation failed for \" + packageMetadata.name + \"\\n\";\n message += 'The @progress/kendo-licensing script is not loaded.\\n';\n message += \"See \" + packageMetadata.licensingDocsUrl + \" for more information.\\n\";\n console.warn(message);\n }\n}\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-animation',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642515961,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { AnimationChild } from './AnimationChild';\nimport { TransitionGroup } from 'react-transition-group';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport util from './util';\nvar styles = util.styles;\n// tslint:enable:max-line-length\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(props) {\n var _this = _super.call(this, props) || this;\n validatePackage(packageMetadata);\n return _this;\n }\n /**\n * @hidden\n */\n Animation.prototype.render = function () {\n var _a = this.props, id = _a.id, style = _a.style, children = _a.children, component = _a.component, className = _a.className, childFactory = _a.childFactory, stackChildren = _a.stackChildren, componentChildStyle = _a.componentChildStyle, componentChildClassName = _a.componentChildClassName, other = __rest(_a, [\"id\", \"style\", \"children\", \"component\", \"className\", \"childFactory\", \"stackChildren\", \"componentChildStyle\", \"componentChildClassName\"]);\n var transitionProps = {\n id: id,\n style: style,\n component: component,\n childFactory: childFactory,\n className: classNames(styles['animation-container'], styles['animation-container-relative'], className)\n };\n var content = React.Children.map(children || null, function (child) { return (React.createElement(AnimationChild, __assign({}, other, { style: componentChildStyle, className: componentChildClassName }), child)); });\n return (React.createElement(TransitionGroup, __assign({}, transitionProps), content));\n };\n /**\n * @hidden\n */\n Animation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any,\n transitionName: PropTypes.string.isRequired,\n appear: PropTypes.bool.isRequired,\n enter: PropTypes.bool.isRequired,\n exit: PropTypes.bool.isRequired,\n transitionEnterDuration: PropTypes.number.isRequired,\n transitionExitDuration: PropTypes.number.isRequired\n };\n /**\n * @hidden\n */\n Animation.defaultProps = {\n component: 'div'\n };\n return Animation;\n}(React.Component));\nexport { Animation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nimport { noop } from '@progress/kendo-react-common';\nimport util from './util';\nvar Reveal = /** @class */ (function (_super) {\n __extends(Reveal, _super);\n function Reveal() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {\n maxHeight: undefined,\n maxWidth: undefined\n };\n _this.componentWillEnter = function (event) {\n var _a = _this.props, onEnter = _a.onEnter, onBeforeEnter = _a.onBeforeEnter;\n if (onBeforeEnter) {\n onBeforeEnter.call(undefined, event);\n }\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEnter) {\n onEnter.call(undefined, event);\n }\n });\n };\n _this.componentIsEntering = function (event) {\n var onEntering = _this.props.onEntering;\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEntering) {\n onEntering.call(undefined, event);\n }\n });\n };\n _this.componentWillExit = function (event) {\n var onExit = _this.props.onExit;\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onExit) {\n onExit.call(undefined, event);\n }\n });\n };\n _this.updateContainerDimensions = function (node, done) {\n if (done === void 0) { done = noop; }\n var content = node.firstChild;\n if (content) {\n var newHeight = util.outerHeight(content);\n var newWidth = util.outerWidth(content);\n _this.setState({\n maxHeight: newHeight,\n maxWidth: newWidth\n }, done);\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n Reveal.prototype.render = function () {\n var _a = this.props, direction = _a.direction, children = _a.children, childFactory = _a.childFactory, other = __rest(_a, [\"direction\", \"children\", \"childFactory\"]);\n var _b = this.state, maxHeight = _b.maxHeight, maxWidth = _b.maxWidth;\n var maxOffset;\n if (direction === 'vertical') {\n maxOffset = { maxHeight: maxHeight ? maxHeight + \"px\" : null };\n }\n else {\n maxOffset = { maxWidth: maxWidth ? maxWidth + \"px\" : null };\n }\n var animationEnteringStyle = {\n maxHeight: maxOffset.maxHeight,\n maxWidth: maxOffset.maxWidth\n };\n var factory = function (child) {\n var result = childFactory ? childFactory(child) : child;\n if (!result.props.in) {\n return React.cloneElement(result, __assign({}, result.props, { style: __assign({}, result.props.style, { maxHeight: maxOffset.maxHeight, maxWidth: maxOffset.maxWidth }) }));\n }\n return result;\n };\n return (React.createElement(Animation, __assign({}, other, { childFactory: factory, onEnter: this.componentWillEnter, onEntering: this.componentIsEntering, onExit: this.componentWillExit, animationEnteringStyle: animationEnteringStyle, transitionName: \"reveal-\" + direction }), children));\n };\n /**\n * @hidden\n */\n Reveal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf([\n 'horizontal',\n 'vertical'\n ]),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n Reveal.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'vertical'\n };\n return Reveal;\n}(React.Component));\nexport { Reveal };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Reveal } from '@progress/kendo-react-animation';\n/**\n * The GridColumnMenuItemContent that will be used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItemContent = /** @class */ (function (_super) {\n __extends(GridColumnMenuItemContent, _super);\n function GridColumnMenuItemContent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridColumnMenuItemContent.prototype.render = function () {\n return (React.createElement(\"div\", { className: 'k-columnmenu-item-content' },\n React.createElement(Reveal, { style: { position: 'relative', display: 'block' } }, this.props.show ? this.props.children : null)));\n };\n return GridColumnMenuItemContent;\n}(React.Component));\nexport { GridColumnMenuItemContent };\n","var defaultData = {\n en: {\n name: \"en\",\n identity: {\n version: {\n _number: \"$Revision: 12418 $\",\n _cldrVersion: \"29\"\n },\n language: \"en\"\n },\n territory: \"US\",\n numbers: {\n symbols: {\n decimal: \".\",\n group: \",\",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\"\n },\n decimal: {\n patterns: [\n \"n\"\n ],\n groupSize: [\n 3\n ]\n },\n scientific: {\n patterns: [\n \"nEn\"\n ],\n groupSize: []\n },\n percent: {\n patterns: [\n \"n%\"\n ],\n groupSize: [\n 3\n ]\n },\n currency: {\n patterns: [\n \"$n\"\n ],\n groupSize: [\n 3\n ],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n currencies: {\n BGN: {\n displayName: \"Bulgarian Lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leva\",\n symbol: \"BGN\"\n },\n EUR: {\n displayName: \"Euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euros\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n USD: {\n displayName: \"US Dollar\",\n \"displayName-count-one\": \"US dollar\",\n \"displayName-count-other\": \"US dollars\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n }\n },\n localeCurrency: \"USD\",\n accounting: {\n patterns: [\n \"$n\",\n \"($n)\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n calendar: {\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n patterns: {\n d: \"M/d/y\",\n D: \"EEEE, MMMM d, y\",\n m: \"MMM d\",\n M: \"MMMM d\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, MMMM d, y h:mm:ss a\",\n g: \"M/d/y h:mm a\",\n G: \"M/d/y h:mm:ss a\",\n t: \"h:mm a\",\n T: \"h:mm:ss a\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"MMM d, y G\",\n GyMMMEd: \"E, MMM d, y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M/d\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMd: \"MMM d\",\n MMMEd: \"E, MMM d\",\n MMMMd: \"MMMM d\",\n \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"M/d/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMd: \"MMM d, y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'week' w 'of' Y\",\n \"yw-count-other\": \"'week' w 'of' Y\"\n }\n },\n timeFormats: {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n },\n dateFormats: {\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n narrow: {\n midnight: \"mi\",\n am: \"a\",\n \"am-alt-variant\": \"am\",\n noon: \"n\",\n pm: \"p\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n narrow: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Before Christ\",\n \"1\": \"Anno Domini\",\n \"0-alt-variant\": \"Before Common Era\",\n \"1-alt-variant\": \"Common Era\"\n },\n abbreviated: {\n \"0\": \"BC\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"B\",\n \"1\": \"A\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n dateFields: {\n era: {\n wide: \"era\"\n },\n year: {\n wide: \"year\",\n short: \"yr.\",\n narrow: \"yr.\"\n },\n quarter: {\n wide: \"quarter\",\n short: \"qtr.\",\n narrow: \"qtr.\"\n },\n month: {\n wide: \"month\",\n short: \"mo.\",\n narrow: \"mo.\"\n },\n week: {\n wide: \"week\",\n short: \"wk.\",\n narrow: \"wk.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n weekday: {\n wide: \"day of the week\"\n },\n dayperiod: {\n wide: \"AM/PM\"\n },\n hour: {\n wide: \"hour\",\n short: \"hr.\",\n narrow: \"hr.\"\n },\n minute: {\n wide: \"minute\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"second\",\n short: \"sec.\",\n narrow: \"sec.\"\n },\n millisecond: {\n wide: \"millisecond\",\n short: \"ms\",\n narrow: \"ms\"\n },\n zone: {\n wide: \"time zone\"\n }\n }\n }\n },\n supplemental: {\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n currencyData: {\n region: {\n US: [\n {\n USD: {\n _from: \"1792-01-01\"\n }\n }\n ]\n }\n },\n weekData: {\n firstDay: {\n US: \"sun\"\n },\n weekendStart: {\n \"001\": \"sat\"\n },\n weekendEnd: {\n \"001\": \"sun\"\n }\n }\n }\n};\nexport default defaultData;","export default function isString(value) {\n return typeof value === \"string\";\n}","import errorDetails from './error-details';\n\nvar formatRegExp = /\\{(\\d+)}?\\}/g;\n\nvar IntlError = function IntlError(ref) {\n var name = ref.name;\n var message = ref.message;\n\n if (!name || !message) {\n throw new Error(\"{ name: string, message: string } object is required!\");\n }\n\n this.name = name;\n this.message = message;\n};\n\nIntlError.prototype.formatMessage = function formatMessage () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n var flattenValues = flatten(values);\n\n var formattedMessage = this.message.replace(formatRegExp, function(match, index) {\n return flattenValues[parseInt(index, 10)];\n });\n\n return ((this.name) + \": \" + formattedMessage);\n};\n\nIntlError.prototype.error = function error () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return new Error(this.formatMessage(values));\n};\n\nvar flatten = function(arr) {\n return arr.reduce(function (a, b) { return a.concat(b); }, []);\n};\n\nvar toIntlErrors = function(errors) {\n var predicate = function(prev, name) {\n prev[name] = new IntlError({ name: name, message: errors[name] });\n return prev;\n };\n\n return Object.keys(errors).reduce(predicate, {});\n};\n\nvar errors = toIntlErrors(errorDetails);\n\nexport {\n errors,\n IntlError,\n toIntlErrors\n};\n","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n \"NoLocale\": \"Missing locale info for '{0}'\",\n \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};\n","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\n\nfunction availableLocaleInfo(fullName, suffixes) {\n var parts = fullName.split(\"-\");\n var language = parts[0];\n var script = parts[1];\n var territory = parts[2];\n\n return cldr[fullName] || (suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory]) || (suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script]) || cldr[language];\n}\n\nfunction localeFullName(language, suffixes) {\n var likelySubtags = cldr.supplemental.likelySubtags;\n\n for (var idx = 0; idx < suffixes.length; idx++) {\n var name = likelySubtags[language + \"-\" + suffixes[idx ]];\n if (name) {\n return name;\n }\n }\n\n if (likelySubtags[language]) {\n return likelySubtags[language];\n }\n}\n\nexport var cldr = defaultData;\n\nexport function getLocaleInfo(locale) {\n var info;\n if (isString(locale)) {\n info = localeInfo(locale);\n } else {\n info = locale;\n }\n return info;\n}\n\nexport function localeInfo(locale) {\n if (cldr[locale]) {\n return cldr[locale];\n }\n\n var likelySubtags = cldr.supplemental.likelySubtags;\n if (likelySubtags) {\n var parts = locale.split(\"-\");\n var language = parts[0];\n var suffixes = parts.slice(1);\n var fullName = localeFullName(language, suffixes);\n var info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n if (info) {\n return info;\n }\n }\n\n throw errors.NoLocale.error(locale);\n}\n","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n var likelySubtags = cldr.supplemental.likelySubtags;\n var parts = name.split(\"-\");\n if (likelySubtags) {\n var likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n if (likelyName) {\n parts = likelyName.split(\"-\");\n }\n }\n\n if (identity) {\n for (var idx = parts.length - 1; idx >= 1; idx--) {\n var part = parts[idx];\n if (part === identity.variant || part === identity.script) {\n parts.splice(idx, 1);\n }\n }\n }\n\n var length = parts.length;\n\n if (length > 1) {\n var territory = parts[length - 1];\n return territory.toUpperCase();\n }\n}\n\nexport default function localeTerritory(info) {\n if (info.territory) {\n return info.territory;\n }\n\n var name = info.name;\n var identity = info.identity;\n var territory;\n\n if (identity && identity.territory) {\n territory = identity.territory;\n } else {\n territory = territoryFromName(name, identity);\n }\n\n info.territory = territory;\n\n return territory;\n}\n","export var DECIMAL = \"decimal\";\nexport var CURRENCY = \"currency\";\nexport var ACCOUNTING = \"accounting\";\nexport var PERCENT = \"percent\";\nexport var SCIENTIFIC = \"scientific\";\n\nexport var CURRENCY_PLACEHOLDER = \"$\";\nexport var PERCENT_PLACEHOLDER = \"%\";\nexport var NUMBER_PLACEHOLDER = \"n\";\n\nexport var LIST_SEPARATOR = \";\";\nexport var GROUP_SEPARATOR = \",\";\n\nexport var POINT = \".\";\nexport var EMPTY = \"\";\n\nexport var DEFAULT_LOCALE = \"en\";\n\n","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n var result = [];\n for (var idx = 0; idx < arr.length; idx++) {\n result.push(arr[idx].toLowerCase());\n }\n return result;\n}\n\nfunction lowerObject(obj) {\n var result = {};\n for (var field in obj) {\n result[field] = obj[field].toLowerCase();\n }\n return result;\n}\n\nfunction cloneLower(obj) {\n var result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n return result;\n}\n\nexport default function dateFormatNames(locale, options) {\n var type = options.type;\n var nameType = options.nameType;\n var standAlone = options.standAlone;\n var lower = options.lower;\n var info = getLocaleInfo(locale);\n var formatType = standAlone ? \"stand-alone\" : \"format\";\n var lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n var formatNames = info.calendar[type][formatType];\n var result = formatNames[lowerNameType];\n if (!result && lower) {\n result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n }\n return result;\n}","export default function parseRangeDate(value) {\n var parts = value.split('-');\n var year = parseInt(parts[0], 10);\n var month = parseInt(parts[1], 10) - 1;\n var day = parseInt(parts[2], 10);\n\n return new Date(year, month, day);\n}\n","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nvar NoCurrency = errors.NoCurrency;\nvar NoCurrencyDisplay = errors.NoCurrencyDisplay;\nvar NoSupplementalCurrency = errors.NoSupplementalCurrency;\nvar NoCurrencyRegion = errors.NoCurrencyRegion;\nvar NoValidCurrency = errors.NoValidCurrency;\n\nvar DEFAULT_CURRENCY_FRACTIONS = 2;\nvar SYMBOL = \"symbol\";\nvar INVALID_CURRENCY_CODE = 'XXX';\n\nvar GLOBAL_CURRENCIES = {\n '001': 'USD', // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n '150': 'EUR' // 150 territory for Europe\n\n};\n\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n var info = getLocaleInfo(locale);\n var currencies = info.numbers.currencies;\n if (!currencies) {\n if (throwIfNoValid) {\n throw NoCurrency.error();\n }\n\n return;\n }\n\n var currencyDisplayInfo = currencies[currency];\n\n if (!currencyDisplayInfo) {\n if (throwIfNoValid) {\n throw NoCurrencyDisplay.error();\n }\n\n return;\n }\n\n return currencyDisplayInfo;\n}\n\nfunction lengthComparer(a, b) {\n return b.length - a.length;\n}\n\nfunction regionCurrency(regionCurrencies) {\n var latestValidUntil, latestValidUntilRange;\n var latestStillValid, latestStillValidDate;\n\n for (var idx = 0; idx < regionCurrencies.length; idx++) {\n var currency = regionCurrencies[idx];\n var code = Object.keys(currency)[0];\n var info = currency[code];\n if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n if (!info._to) {\n var stillValidDate = parseRangeDate(info._from);\n if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n latestStillValid = code;\n latestStillValidDate = stillValidDate;\n }\n } else if (!latestStillValid) {\n var validFrom = parseRangeDate(info._from);\n var validTo = parseRangeDate(info._to);\n if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n latestValidUntil = code;\n latestValidUntilRange = {\n from: validFrom,\n to: validTo\n };\n }\n }\n }\n }\n\n return latestStillValid || latestValidUntil;\n}\n\nexport function currencyDisplays(locale, currency, throwIfNoValid) {\n if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n var currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n if (!currencyInfo) {\n return;\n }\n\n if (!currencyInfo.displays) {\n var displays = [ currency ];\n for (var field in currencyInfo) {\n displays.push(currencyInfo[field]);\n }\n displays.sort(lengthComparer);\n currencyInfo.displays = displays;\n }\n\n return currencyInfo.displays;\n}\n\nexport function currencyDisplay(locale, options) {\n var value = options.value;\n var currency = options.currency;\n var currencyDisplay = options.currencyDisplay; if ( currencyDisplay === void 0 ) currencyDisplay = SYMBOL;\n\n if (currencyDisplay === \"code\") {\n return currency;\n }\n\n var currencyInfo = getCurrencyInfo(locale, currency, true);\n var result;\n\n if (currencyDisplay === SYMBOL) {\n result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL];\n } else {\n if (typeof value === undefined || value !== 1) {\n result = currencyInfo[\"displayName-count-other\"];\n } else {\n result = currencyInfo[\"displayName-count-one\"];\n }\n }\n\n return result;\n}\n\nexport function currencyFractionOptions(code) {\n var minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n var maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n\n var fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n\n if (fractions && fractions._digits) {\n maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nexport function territoryCurrencyCode(territory, throwIfNoValid) {\n if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n if (GLOBAL_CURRENCIES[territory]) {\n return GLOBAL_CURRENCIES[territory];\n }\n\n var currencyData = cldr.supplemental.currencyData;\n if (!currencyData) {\n if (throwIfNoValid) {\n throw NoSupplementalCurrency.error();\n }\n\n return;\n }\n\n var regionCurrencies = currencyData.region[territory];\n\n if (!regionCurrencies) {\n if (throwIfNoValid) {\n throw NoCurrencyRegion.error(territory);\n }\n\n return;\n }\n\n var currencyCode = regionCurrency(regionCurrencies);\n\n return currencyCode;\n}\n\nexport function localeCurrency(locale, throwIfNoValid) {\n var info = getLocaleInfo(locale);\n var numbers = info.numbers;\n\n if (!numbers.localeCurrency) {\n var currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n\n if (!currency && throwIfNoValid) {\n throw NoValidCurrency.error(info.name);\n }\n\n numbers.localeCurrency = currency;\n }\n\n return numbers.localeCurrency;\n}\n","\nexport var DAYS_OF_WEEK = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\nexport var DEFAULT_TERRITORY = '001';\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\nvar NoFirstDay = errors.NoFirstDay;\n\nexport default function firstDay(locale) {\n var info = getLocaleInfo(locale);\n\n if (!isNaN(info.firstDay)) {\n return info.firstDay;\n }\n\n var weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n var firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n\n if (!firstDay) {\n throw NoFirstDay.error();\n }\n\n info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n\n return info.firstDay;\n}\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\n\nexport default function weekendRange(locale) {\n var info = getLocaleInfo(locale);\n\n if (info.weekendRange) {\n return info.weekendRange;\n }\n\n var weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n var territory = localeTerritory(info);\n var start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n var end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n\n info.weekendRange = {\n start: DAYS_OF_WEEK.indexOf(start),\n end: DAYS_OF_WEEK.indexOf(end)\n };\n\n return info.weekendRange;\n}\n","export default function isNegativeZero(value) {\n return (1 / value === -Infinity);\n}\n","import { currencyDisplay, localeCurrency } from '../cldr';\n\nexport default function formatCurrencySymbol(info, options) {\n if ( options === void 0 ) options = {};\n\n if (!options.currency) {\n options.currency = localeCurrency(info, true);\n }\n\n var display = currencyDisplay(info, options);\n\n return display;\n}\n","export default function groupInteger(number, start, end, options, info) {\n var symbols = info.numbers.symbols;\n var decimalIndex = number.indexOf(symbols.decimal);\n var groupSizes = options.groupSize.slice();\n var groupSize = groupSizes.shift();\n\n var integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n var integer = number.substring(start, integerEnd);\n var result = number;\n var integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n var idx = integerLength;\n var parts = [];\n\n while (idx > -1) {\n var value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n var newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n value = integer.substring(0, idx);\n if (value) {\n parts.push(value);\n }\n break;\n }\n }\n\n integer = parts.reverse().join(symbols.group);\n result = number.substring(0, start) + integer + number.substring(integerEnd);\n }\n\n return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\n\nexport default function isCurrencyStyle(style) {\n return style === CURRENCY || style === ACCOUNTING;\n}","export default function pad(number, digits, right) {\n if ( digits === void 0 ) digits = 2;\n if ( right === void 0 ) right = false;\n\n var count = digits - String(number).length;\n var result = number;\n\n if (count > 0) {\n var padString = new Array(count + 1).join(\"0\");\n result = right ? number + padString : padString + number;\n }\n\n return result;\n}","var MAX_PRECISION = 20;\n\nexport default function round(value, precision) {\n var result = value;\n var decimals = precision || 0;\n\n result = result.toString().split('e');\n result = Math.round(Number(result[0] + 'e' + (result[1] ? (Number(result[1]) + decimals) : decimals)));\n\n result = result.toString().split('e');\n result = Number(result[0] + 'e' + (result[1] ? (Number(result[1]) - decimals) : -decimals));\n\n return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\n\nvar DEFAULT_DECIMAL_ROUNDING = 3;\nvar DEFAULT_PERCENT_ROUNDING = 0;\n\nvar trailingZeroRegex = /0+$/;\n\nfunction fractionOptions(options) {\n var minimumFractionDigits = options.minimumFractionDigits;\n var maximumFractionDigits = options.maximumFractionDigits;\n var style = options.style;\n var isCurrency = isCurrencyStyle(style);\n var currencyFractions;\n if (isCurrency) {\n currencyFractions = currencyFractionOptions(options.currency);\n }\n\n if (minimumFractionDigits === undefined) {\n minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n }\n\n if (maximumFractionDigits === undefined) {\n if (style === PERCENT) {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n } else if (isCurrency) {\n maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n } else {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n }\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nfunction applyPattern(value, pattern, symbol) {\n var result = EMPTY;\n for (var idx = 0, length = pattern.length; idx < length; idx++) {\n var ch = pattern.charAt(idx);\n\n if (ch === NUMBER_PLACEHOLDER) {\n result += value;\n } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n result += symbol;\n } else {\n result += ch;\n }\n }\n return result;\n}\n\nfunction currencyUnitPattern(info, value) {\n var currencyInfo = info.numbers.currency;\n var pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n if (value < 0) {\n pattern = pattern.replace(NUMBER_PLACEHOLDER, (\"-\" + NUMBER_PLACEHOLDER));\n }\n\n return pattern;\n}\n\n\nexport default function standardNumberFormat(number, options, info) {\n var symbols = info.numbers.symbols;\n var style = options.style;\n var isCurrency = isCurrencyStyle(style);\n\n //return number in exponential format\n if (style === SCIENTIFIC) {\n var exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n return exponential.replace(POINT, symbols.decimal);\n }\n\n var value = number;\n var symbol;\n\n if (isCurrency) {\n options.value = value;\n symbol = formatCurrencySymbol(info, options);\n }\n\n if (style === PERCENT) {\n value *= 100;\n symbol = symbols.percentSign;\n }\n\n var ref = fractionOptions(options);\n var minimumFractionDigits = ref.minimumFractionDigits;\n var maximumFractionDigits = ref.maximumFractionDigits;\n\n value = round(value, maximumFractionDigits);\n\n var negative = value < 0;\n var negativeZero = isNegativeZero(number);\n\n var parts = value.split(POINT);\n\n var integer = parts[0];\n var fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n if (options.minimumIntegerDigits) {\n integer = pad(integer, options.minimumIntegerDigits);\n }\n\n var formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n\n if (fraction) {\n formattedValue += symbols.decimal + fraction;\n }\n\n var pattern;\n\n if (isCurrency && options.currencyDisplay === \"name\") {\n pattern = currencyUnitPattern(info, number);\n } else {\n var patterns = options.patterns;\n pattern = (negative || negativeZero) ? patterns[1] || (\"-\" + patterns[0]) : patterns[0];\n }\n\n if (pattern === NUMBER_PLACEHOLDER && !negative) {\n return formattedValue;\n }\n\n var result = applyPattern(formattedValue, pattern, symbol);\n\n return result;\n}","import { PERCENT_PLACEHOLDER, CURRENCY_PLACEHOLDER, CURRENCY, PERCENT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\n\nvar literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nvar PLACEHOLDER = \"__??__\";\n\nexport function setStyleOptions(formatOptions, info) {\n var format = formatOptions.format;\n\n //multiply number if the format has percent\n if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n formatOptions.style = PERCENT;\n formatOptions.symbol = info.numbers.symbols.percentSign;\n formatOptions.number *= 100;\n }\n\n if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n formatOptions.style = CURRENCY;\n formatOptions.symbol = formatCurrencySymbol(info);\n }\n}\n\nexport function setFormatLiterals(formatOptions) {\n var format = formatOptions.format;\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n var literals = formatOptions.literals = [];\n formatOptions.format = format.replace(literalRegExp, function(match) {\n var quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n var literal = match.slice(1).replace(quoteChar, EMPTY);\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n}\n\nexport function replaceLiterals(number, literals) {\n var result = number;\n if (literals) {\n var length = literals.length;\n for (var idx = 0; idx < length; idx++) {\n result = result.replace(PLACEHOLDER, literals[idx]);\n }\n }\n return result;\n}","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nimport { setStyleOptions, setFormatLiterals, replaceLiterals } from './utils';\n\nvar SHARP = \"#\";\nvar ZERO = \"0\";\n\nvar trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nvar trailingPointRegExp = /\\.$/;\nvar commaRegExp = /\\,/g;\n\nfunction trimTrailingZeros(value, lastZero) {\n var trimRegex;\n\n if (lastZero === 0) {\n trimRegex = trailingZerosRegExp;\n } else {\n trimRegex = new RegExp((\"(\\\\.[0-9]{\" + lastZero + \"}[1-9]*)0+$\"), 'g');\n }\n\n return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\n\nfunction roundNumber(formatOptions) {\n var number = formatOptions.number;\n var format = formatOptions.format;\n var decimalIndex = format.indexOf(POINT);\n\n if (decimalIndex !== -1) {\n var zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n var sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n var hasZero = zeroIndex > -1;\n var hasSharp = sharpIndex > -1;\n var fraction = number.toString().split(\"e\");\n\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n\n var precision = fraction.length;\n var trailingZeros = -1;\n\n if (!hasZero && !hasSharp) {\n formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n decimalIndex = -1;\n precision = 0;\n } else if (hasZero && zeroIndex > sharpIndex) {\n precision = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && precision > sharpIndex) {\n precision = sharpIndex;\n } else if (hasZero && precision < zeroIndex) {\n precision = zeroIndex;\n }\n\n trailingZeros = hasZero ? zeroIndex : 0;\n }\n\n if (precision > -1) {\n number = round(number, precision);\n if (trailingZeros > -1) {\n number = trimTrailingZeros(number, trailingZeros);\n }\n }\n } else {\n number = round(number);\n }\n\n if (formatOptions.negative && (number * -1) >= 0 && !formatOptions.negativeZero) {\n formatOptions.negative = false;\n }\n\n formatOptions.number = number;\n formatOptions.decimalIndex = decimalIndex;\n}\n\nfunction isConstantFormat(format) {\n return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\n\nfunction setValueSpecificFormat(formatOptions) {\n var number = formatOptions.number;\n var format = formatOptions.format;\n format = format.split(LIST_SEPARATOR);\n if ((formatOptions.negative || formatOptions.negativeZero) && format[1]) {\n format = format[1];\n formatOptions.hasNegativeFormat = true;\n } else if (number === 0) {\n var zeroFormat = format[2];\n format = zeroFormat || format[0];\n if (zeroFormat && isConstantFormat(zeroFormat)) {\n formatOptions.constant = zeroFormat;\n }\n } else {\n format = format[0];\n }\n\n formatOptions.format = format;\n}\n\nfunction setGroupOptions(formatOptions) {\n formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n if (formatOptions.hasGroup) {\n formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n var index;\n if (index1 === -1 && index2 !== -1) {\n index = index2;\n } else if (index1 !== -1 && index2 === -1) {\n index = index1;\n } else {\n index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n }\n return index;\n}\n\nfunction setPlaceholderIndices(formatOptions) {\n var format = formatOptions.format;\n var sharpIndex = format.indexOf(SHARP);\n var zeroIndex = format.indexOf(ZERO);\n\n var start = placeholderIndex(sharpIndex, zeroIndex, true);\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n var end = placeholderIndex(sharpIndex, zeroIndex);\n\n if (start === format.length) {\n end = start;\n }\n\n formatOptions.start = start;\n formatOptions.end = end;\n formatOptions.lastZeroIndex = zeroIndex;\n}\n\nfunction replaceStyleSymbols(number, style, symbol) {\n var result = number;\n if (style === CURRENCY || style === PERCENT) {\n result = EMPTY;\n for (var idx = 0, length = number.length; idx < length; idx++) {\n var ch = number.charAt(idx);\n result += (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) ? symbol : ch;\n }\n }\n return result;\n}\n\nfunction replacePlaceHolders(formatOptions, info) {\n var start = formatOptions.start;\n var end = formatOptions.end;\n var negative = formatOptions.negative;\n var negativeZero = formatOptions.negativeZero;\n var format = formatOptions.format;\n var decimalIndex = formatOptions.decimalIndex;\n var lastZeroIndex = formatOptions.lastZeroIndex;\n var hasNegativeFormat = formatOptions.hasNegativeFormat;\n var hasGroup = formatOptions.hasGroup;\n var number = formatOptions.number;\n var value = number.toString().split(POINT);\n var length = format.length;\n var integer = value[0];\n var fraction = value[1] || EMPTY;\n var integerLength = integer.length;\n var replacement = EMPTY;\n\n number = format.substring(0, start);\n\n if ((negative || negativeZero) && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (var idx = start; idx < length; idx++) {\n var ch = format.charAt(idx);\n\n if (decimalIndex === -1) {\n if (end - idx < integerLength) {\n\n number += integer;\n break;\n }\n } else {\n if (lastZeroIndex !== -1 && lastZeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? info.numbers.symbols.decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), info.numbers.decimal, info);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n return number;\n}\n\nfunction applyCustomFormat(formatOptions, info) {\n var number = formatOptions.number;\n if (formatOptions.start !== -1) {\n number = replacePlaceHolders(formatOptions, info);\n number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n number = replaceLiterals(number, formatOptions.literals);\n }\n\n return number;\n}\n\nexport default function customNumberFormat(number, format, info) {\n var formatOptions = {\n negative: number < 0,\n number: Math.abs(number),\n negativeZero: isNegativeZero(number),\n format: format\n };\n\n setValueSpecificFormat(formatOptions);\n\n if (formatOptions.constant) {\n return formatOptions.constant;\n }\n\n setFormatLiterals(formatOptions);\n setStyleOptions(formatOptions, info);\n setGroupOptions(formatOptions);\n roundNumber(formatOptions);\n setPlaceholderIndices(formatOptions);\n\n return applyCustomFormat(formatOptions, info);\n}","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\n\nvar standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\n\nfunction standardFormatOptions(format) {\n var formatAndPrecision = standardFormatRegExp.exec(format);\n\n if (formatAndPrecision) {\n var options = {\n style: DECIMAL\n };\n\n var style = formatAndPrecision[1].toLowerCase();\n\n if (style === \"c\") {\n options.style = CURRENCY;\n } else if (style === \"a\") {\n options.style = ACCOUNTING;\n } else if (style === \"p\") {\n options.style = PERCENT;\n } else if (style === \"e\") {\n options.style = SCIENTIFIC;\n }\n\n if (formatAndPrecision[2]) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n }\n\n return options;\n }\n}\n\nexport default function formatOptions(format) {\n var options;\n if (isString(format)) {\n options = standardFormatOptions(format);\n } else {\n options = format;\n }\n\n return options;\n}","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\n\nexport default function formatNumber(number, format, locale) {\n if ( format === void 0 ) format = NUMBER_PLACEHOLDER;\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (number === undefined || number === null) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return String(number);\n }\n\n var info = localeInfo(locale);\n var options = formatOptions(format);\n\n var result;\n if (options) {\n var style = options.style || DECIMAL;\n result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n } else {\n result = customNumberFormat(number, format, info);\n }\n\n return result;\n}\n","export default function isNumber(value) {\n return typeof value === \"number\";\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport { setStyleOptions, setFormatLiterals } from './utils';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\nimport isString from '../common/is-string';\n\nvar exponentRegExp = /[eE][\\-+]?[0-9]+/;\nvar nonBreakingSpaceRegExp = /\\u00A0/g;\n\nfunction cleanNegativePattern(number, patterns) {\n if (patterns.length > 1) {\n var parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n }\n }\n}\n\nfunction cleanCurrencyNumber(value, info, format) {\n var options = formatOptions(format) || {};\n var isCurrency = isCurrencyStyle(options.style);\n var number = value;\n var negative;\n\n var currency = options.currency || localeCurrency(info, isCurrency);\n\n if (currency) {\n var displays = currencyDisplays(info, currency, isCurrency);\n if (displays) {\n for (var idx = 0; idx < displays.length; idx++) {\n var display = displays[idx];\n if (number.includes(display)) {\n number = number.replace(display, EMPTY);\n isCurrency = true;\n break;\n }\n }\n }\n\n if (isCurrency) {\n var cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) ||\n cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n if (cleanNumber) {\n negative = true;\n number = cleanNumber;\n }\n\n }\n }\n\n return {\n number: number,\n negative: negative\n };\n}\n\nfunction cleanLiterals(number, formatOptions) {\n var literals = formatOptions.literals;\n var result = number;\n\n if (literals) {\n for (var idx = 0; idx < literals.length; idx++) {\n result = result.replace(literals[idx], EMPTY);\n }\n }\n\n return result;\n}\n\nexport default function parseNumber(value, locale, format) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n if ( format === void 0 ) format = {};\n\n if (!value && value !== 0) {\n return null;\n }\n\n if (isNumber(value)) {\n return value;\n }\n\n var info = localeInfo(locale);\n var symbols = info.numbers.symbols;\n\n var number = value.toString();\n var formatOptions = format || {};\n var isPercent;\n\n if (isString(format)) {\n formatOptions = { format: format };\n setFormatLiterals(formatOptions);\n number = cleanLiterals(number, formatOptions);\n\n setStyleOptions(formatOptions, info);\n }\n\n if (formatOptions.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n number = number.replace(symbols.percentSign, EMPTY);\n isPercent = true;\n }\n\n if (exponentRegExp.test(number)) {\n number = parseFloat(number.replace(symbols.decimal, POINT));\n return isNaN(number) ? null : number;\n }\n\n var ref = cleanCurrencyNumber(number, info, formatOptions);\n var negativeCurrency = ref.negative;\n var currencyNumber = ref.number;\n number = String(currencyNumber).trim();\n\n var negativeSignIndex = number.indexOf(\"-\");\n if (negativeSignIndex > 0) {\n return null;\n }\n\n var isNegative = negativeSignIndex > -1;\n\n isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n number = number.replace(\"-\", EMPTY)\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY)\n .replace(symbols.decimal, POINT);\n\n number = parseFloat(number);\n\n if (isNaN(number)) {\n number = null;\n } else if (isNegative) {\n number *= -1;\n }\n\n if (number && isPercent) {\n number /= 100;\n }\n\n return number;\n}\n","var formatRegExp = /\\{(\\d+)}/g;\n\nexport default function formatString(format) {\n var values = arguments;\n\n return format.replace(formatRegExp, function (match, index) {\n var value = values[parseInt(index, 10) + 1];\n\n return value;\n });\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\n\nvar REMOVAL_PENALTY = 120;\nvar ADDITION_PENALTY = 20;\nvar LENGHT_DELTA = [ 2, 1, 5, 3, 4 ];\nvar LONG_LESS_PENALTY_DELTA = -2;\nvar SHORT_LESS_PENALTY_DELTA = -1;\nvar SHORT_MORE_PENALTY_DELTA = 1;\nvar LONG_MORE_PENALTY_DELTA = 2;\n\nvar PENALTIES = {};\nPENALTIES[LONG_LESS_PENALTY_DELTA.toString()] = 8;\nPENALTIES[SHORT_LESS_PENALTY_DELTA.toString()] = 6;\nPENALTIES[LONG_MORE_PENALTY_DELTA.toString()] = 6;\nPENALTIES[SHORT_MORE_PENALTY_DELTA.toString()] = 3;\n\nvar VALUE_FORMAT_LENGTH = {\n numeric: 1,\n \"2-digit\": 2,\n short: 3,\n long: 4,\n narrow: 5\n};\n\nvar TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\n\nfunction getHourSpecifier(options) {\n return options.hour12 ? \"h\" : \"H\";\n}\n\nvar DATE_OPTIONS_MAP = [ {\n key: \"era\",\n specifier: \"G\"\n}, {\n key: \"year\",\n specifier: \"y\"\n}, {\n key: \"month\",\n specifier: \"M\"\n}, {\n key: \"day\",\n specifier: \"d\"\n}, {\n key: \"weekday\",\n specifier: \"E\"\n}, {\n key: \"hour\",\n getSpecifier: getHourSpecifier\n}, {\n key: \"minute\",\n specifier: \"m\"\n}, {\n key: \"second\",\n specifier: \"s\"\n}, {\n key: \"timeZoneName\",\n specifier: \"z\"\n} ];\n\nvar STAND_ALONE_SPECIFIERS = {\n e: 'c',\n E: 'c',\n M: 'L',\n Q: 'q'\n};\n\nvar specifiersRegex = {};\nvar resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n if (!specifiersRegex[specifier]) {\n specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n }\n return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n var result = [];\n var current = skeleton.charAt(0);\n var specifier = current;\n for (var idx = 1; idx < skeleton.length; idx++) {\n var character = skeleton.charAt(idx);\n if (character === specifier) {\n current += character;\n } else {\n result.push(current);\n current = specifier = character;\n }\n }\n\n result.push(current);\n\n return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n var specifiersLength = specifiers.length;\n var maxScore = -Number.MAX_VALUE;\n var bestMatches, result;\n for (var format in availableFormats) {\n var matches = [];\n var currentFormat = format.replace(\"v\", \"z\");\n var score = 0;\n for (var idx = 0; idx < specifiersLength; idx++) {\n var specifier = specifiers[idx];\n var specifierRegex = getSpecifierRegex(specifier[0]);\n var match = (specifierRegex.exec(currentFormat) || [])[0];\n\n if (!match) {\n score -= REMOVAL_PENALTY;\n } else {\n currentFormat = currentFormat.replace(match, EMPTY);\n if (match.length !== specifier.length) {\n var delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n score -= PENALTIES[delta];\n }\n }\n\n matches.push(match);\n\n if (score < maxScore) {\n break;\n }\n }\n\n if (currentFormat.length) {\n score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n }\n\n if (score > maxScore) {\n maxScore = score;\n bestMatches = matches;\n result = availableFormats[format];\n }\n }\n\n result = result.replace(\"v\", \"z\");\n\n for (var idx$1 = 0; idx$1 < specifiersLength; idx$1++) {\n var bestMatch = bestMatches[idx$1];\n if (bestMatch && bestMatch !== specifiers[idx$1]) {\n var matchSpecifier = bestMatches[idx$1][0];\n result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx$1]);\n if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx$1]);\n }\n }\n }\n\n return result;\n}\n\nfunction cacheFormat(skeleton, format, locale) {\n if (!resolvedFormats[locale]) {\n resolvedFormats[locale] = {};\n }\n resolvedFormats[locale][skeleton] = format;\n}\n\n\nfunction skeletonFormat(skeleton, info) {\n var availableFormats = info.calendar.dateTimeFormats.availableFormats;\n if (availableFormats[skeleton]) {\n return availableFormats[skeleton];\n }\n if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n return resolvedFormats[info.name][skeleton];\n }\n var timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n var result;\n if (timeStartIndex > 0) {\n var dateSkeleton = skeleton.substr(0, timeStartIndex);\n var timeSkeleton = skeleton.substr(timeStartIndex);\n\n result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats),\n availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n } else {\n result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n }\n\n cacheFormat(skeleton, result, info.name);\n return result;\n}\n\nfunction skeletonFromOptions(options) {\n var result = [];\n for (var idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n var option = DATE_OPTIONS_MAP[idx];\n var field = option.key;\n var value = options[field];\n if (value) {\n var spcifier = option.specifier || option.getSpecifier(options);\n result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n }\n }\n\n return result.join(EMPTY);\n}\n\nexport default function datePattern(format, info) {\n var calendar = info.calendar;\n var result;\n if (isString(format)) {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n } else if (format) {\n if (format.pattern) {\n return format.pattern;\n }\n\n var skeleton = format.skeleton;\n if (!skeleton) {\n if (format.datetime) {\n result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n } else if (format.date) {\n result = calendar.dateFormats[format.date];\n } else if (format.time) {\n result = calendar.timeFormats[format.time];\n } else {\n skeleton = skeletonFromOptions(format);\n }\n }\n\n if (skeleton) {\n result = skeletonFormat(skeleton, info);\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n}\n","export default function dateNameType(formatLength) {\n var nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n } else if (formatLength === 6) {\n nameType = \"short\";\n }\n\n return nameType;\n}","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\n\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n return dateFormatNames(locale, {\n type: type,\n nameType: dateNameType(formatLength),\n standAlone: standAlone,\n lower: lower\n });\n}","function isFunction(fun) {\n return typeof(fun) === 'function';\n}\n\nexport default function isDate(value) {\n return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}\n","var MONTH = 'month';\nvar HOUR = 'hour';\nvar ZONE = 'zone';\nvar WEEKDAY = 'weekday';\nvar QUARTER = 'quarter';\n\nvar DATE_FIELD_MAP = {\n 'G': 'era',\n 'y': 'year',\n 'q': QUARTER,\n 'Q': QUARTER,\n 'M': MONTH,\n 'L': MONTH,\n 'd': 'day',\n 'E': WEEKDAY,\n 'c': WEEKDAY,\n 'e': WEEKDAY,\n 'h': HOUR,\n 'H': HOUR,\n 'k': HOUR,\n 'K': HOUR,\n 'm': 'minute',\n 's': 'second',\n 'S': 'millisecond',\n 'a': 'dayperiod',\n 'x': ZONE,\n 'X': ZONE,\n 'z': ZONE,\n 'Z': ZONE\n};\n\nvar dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\nexport { dateFormatRegExp, DATE_FIELD_MAP };","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\n\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n var firstDayIndex = firstDay(localeInfo);\n var dayIndex;\n if (day < firstDayIndex) {\n dayIndex = 7 - firstDayIndex + day;\n } else {\n dayIndex = day - firstDayIndex;\n }\n\n return dayIndex + 1;\n}\n\nfunction formatMonth(month, formatLength, info, standAlone) {\n if (formatLength <= 2) {\n return pad(month + 1, formatLength);\n }\n return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\n\nfunction formatQuarter(date, formatLength, info, standAlone) {\n var quarter = Math.floor(date.getMonth() / 3);\n if (formatLength < 3) {\n return quarter + 1;\n }\n\n return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\n\n\nfunction formatTimeZone(date, info, options) {\n var shortHours = options.shortHours;\n var optionalMinutes = options.optionalMinutes;\n var separator = options.separator;\n var localizedName = options.localizedName;\n var zZeroOffset = options.zZeroOffset;\n var offset = date.getTimezoneOffset() / 60;\n if (offset === 0 && zZeroOffset) {\n return \"Z\";\n }\n var sign = offset <= 0 ? \"+\" : \"-\";\n var hoursMinutes = Math.abs(offset).toString().split(\".\");\n var minutes = hoursMinutes[1] || 0;\n var result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n if (minutes || !optionalMinutes) {\n result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n }\n\n if (localizedName) {\n var localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n result = formatString(localizedFormat, result);\n }\n\n return result;\n}\n\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n var result;\n if (formatLength < 3) {\n result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n } else {\n result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n }\n return result;\n}\n\nvar formatters = {};\n\nformatters.d = function(date, formatLength) {\n return pad(date.getDate(), formatLength);\n};\n\nformatters.E = function(date, formatLength, info) {\n return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\n\nformatters.M = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, false);\n};\n\nformatters.L = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, true);\n};\n\nformatters.y = function(date, formatLength) {\n var year = date.getFullYear();\n if (formatLength === 2) {\n year = year % 100;\n }\n return pad(year, formatLength);\n};\n\nformatters.h = function(date, formatLength) {\n var hours = date.getHours() % 12 || 12;\n return pad(hours, formatLength);\n};\n\nformatters.H = function(date, formatLength) {\n return pad(date.getHours(), formatLength);\n};\n\nformatters.k = function(date, formatLength) {\n return pad(date.getHours() || 24, formatLength);\n};\n\nformatters.K = function(date, formatLength) {\n return pad(date.getHours() % 12, formatLength);\n};\n\nformatters.m = function(date, formatLength) {\n return pad(date.getMinutes(), formatLength);\n};\n\nformatters.s = function(date, formatLength) {\n return pad(date.getSeconds(), formatLength);\n};\n\nformatters.S = function(date, formatLength) {\n var milliseconds = date.getMilliseconds();\n var result;\n if (milliseconds !== 0) {\n result = pad(String(milliseconds / 1000).split(\".\")[1].substr(0, formatLength), formatLength, true);\n } else {\n result = pad(EMPTY, formatLength);\n }\n return result;\n};\n\nformatters.a = function(date, formatLength, info) {\n return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\n\nformatters.z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n shortHours: formatLength < 4,\n optionalMinutes: formatLength < 4,\n separator: true,\n localizedName: true\n });\n};\n\nformatters.Z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n separator: formatLength > 3,\n localizedName: formatLength === 4,\n zZeroOffset: formatLength === 5\n });\n};\n\nformatters.x = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5\n });\n};\n\nformatters.X = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5,\n zZeroOffset: true\n });\n};\n\nformatters.G = function(date, formatLength, info) {\n var era = date.getFullYear() >= 0 ? 1 : 0;\n return formatNames(info, \"eras\", formatLength)[era];\n};\n\nformatters.e = formatDayOfWeek;\n\nformatters.c = function(date, formatLength, info) {\n return formatDayOfWeek(date, formatLength, info, true);\n};\n\nformatters.q = function(date, formatLength, info) {\n return formatQuarter(date, formatLength, info, true);\n};\n\nformatters.Q = formatQuarter;\n\nexport default function formatDate(date, format, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (!isDate(date)) {\n if (date === undefined || date === null) {\n return EMPTY;\n }\n return date;\n }\n\n var info = localeInfo(locale);\n var pattern = datePattern(format, info);\n\n return pattern.replace(dateFormatRegExp, function(match) {\n var formatLength = match.length;\n var result;\n\n if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n result = match.slice(1, formatLength - 1);\n } else {\n result = formatters[match[0]](date, formatLength, info);\n }\n\n return result;\n });\n}\n","export function convertTimeZone(date, fromOffset, toOffset) {\n var fromLocalOffset = date.getTimezoneOffset();\n\n var offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n var toLocalOffset = offsetDate.getTimezoneOffset();\n\n return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\n\nexport function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\n\nvar timeZoneOffsetRegExp = /([+|\\-]\\d{1,2})(:?)(\\d{2})?/;\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar offsetRegExp = /[+-]\\d*/;\nvar numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n};\nvar numberRegex = /\\d+/;\nvar PLACEHOLDER = \"{0}\";\n\nvar leadingSpacesRegex = /^ */;\nvar trailingSpacesRegex = / *$/;\n\nvar standardDateFormats = [\n \"yyyy/MM/dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm\",\n \"yyyy/MM/dd\",\n \"E MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSXXX\",\n \"yyyy-MM-ddTHH:mm:ssXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\",\n \"yyyy-MM-ddTHH:mm:ss.SSS\",\n \"yyyy-MM-ddTHH:mmXXX\",\n \"yyyy-MM-ddTHH:mmX\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n];\nvar FORMATS_SEQUENCE = [ \"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\" ];\nvar TWO_DIGIT_YEAR_MAX = 2029;\n\nfunction outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n}\n\nfunction lookAhead(match, state) {\n var format = state.format;\n var idx = state.idx;\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n state.idx = idx;\n return i;\n}\n\nfunction getNumber(size, state) {\n var regex = size ? (numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}')) : numberRegex,\n match = state.value.substr(state.valueIdx, size).match(regex);\n\n if (match) {\n match = match[0];\n state.valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n}\n\nfunction getIndexByName(names, state, lower) {\n var i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = state.value.substr(state.valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue === name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n state.valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n}\n\nfunction checkLiteral(state) {\n var result = false;\n if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n state.valueIdx++;\n result = true;\n }\n return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n var gmtFormat = calendar.gmtFormat;\n var gmtZeroFormat = calendar.gmtZeroFormat;\n if (!gmtFormat) {\n throw errors.NoGMTInfo.error();\n }\n\n return [ gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase() ];\n}\n\nfunction parseTimeZoneOffset(state, info, options) {\n var shortHours = options.shortHours;\n var noSeparator = options.noSeparator;\n var optionalMinutes = options.optionalMinutes;\n var localizedName = options.localizedName;\n var zLiteral = options.zLiteral;\n state.UTC = true;\n\n if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n state.valueIdx++;\n return false;\n }\n\n if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n return true;\n }\n\n var matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n if (!matches) {\n return !localizedName;\n }\n\n var hoursMatch = matches[1];\n var minutesMatch = matches[3];\n var hoursOffset = parseInt(hoursMatch, 10);\n var separator = matches[2];\n var minutesOffset = parseInt(minutesMatch, 10);\n\n if (isNaN(hoursOffset) || (!shortHours && hoursMatch.length !== 3) || (!optionalMinutes && isNaN(minutesOffset)) || (noSeparator && separator)) {\n return true;\n }\n\n if (isNaN(minutesOffset)) {\n minutesOffset = null;\n }\n\n if (outOfRange(hoursOffset, -12, 13) || (minutesOffset && outOfRange(minutesOffset, 0, 59))) {\n return true;\n }\n\n state.valueIdx += matches[0].length;\n state.hoursOffset = hoursOffset;\n state.minutesOffset = minutesOffset;\n}\n\nfunction parseMonth(ch, state, info) {\n var count = lookAhead(ch, state);\n var names = formatNames(info, \"months\", count, ch === \"L\", true);\n\n var month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return true;\n }\n state.month = month - 1;\n}\n\nfunction parseDayOfWeek(ch, state, info) {\n var count = lookAhead(ch, state);\n var names = formatNames(info, \"days\", count, ch === \"c\", true);\n var dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n if ((!dayOfWeek && dayOfWeek !== 0) || outOfRange(dayOfWeek, 1, 7)) {\n return true;\n }\n}\n\nvar parsers = {};\n\nparsers.d = function(state) {\n lookAhead(\"d\", state);\n var day = getNumber(2, state);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return true;\n }\n\n if (state.day === null) {\n state.day = day;\n }\n};\n\nparsers.E = function(state, info) {\n var count = lookAhead(\"E\", state);\n //validate if it matches the day?\n var dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n if (dayOfWeek === null) {\n return true;\n }\n};\n\nparsers.M = function(state, info) {\n return parseMonth(\"M\", state, info);\n};\n\nparsers.L = function(state, info) {\n return parseMonth(\"L\", state, info);\n};\n\nparsers.y = function(state) {\n var count = lookAhead(\"y\", state);\n var year = getNumber(count === 1 ? undefined : count, state);\n\n if (year === null) {\n return true;\n }\n\n if (count === 2) {\n var currentYear = new Date().getFullYear();\n year = (currentYear - currentYear % 100) + year;\n if (year > TWO_DIGIT_YEAR_MAX) {\n year -= 100;\n }\n }\n\n state.year = year;\n};\n\nparsers.h = function(state) {\n lookAhead(\"h\", state);\n\n var hours = getNumber(2, state);\n if (hours === 12) {\n hours = 0;\n }\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.K = function(state) {\n lookAhead(\"K\", state);\n\n var hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.a = function(state, info) {\n var count = lookAhead(\"a\", state);\n var periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n\n var pmHour = getIndexByName([ periodFormats.pm ], state, true);\n if (!pmHour && !getIndexByName([ periodFormats.am ], state, true)) {\n return true;\n }\n\n state.pmHour = pmHour;\n};\n\nparsers.H = function(state) {\n lookAhead(\"H\", state);\n var hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return true;\n }\n state.hours = hours;\n};\n\nparsers.k = function(state) {\n lookAhead(\"k\", state);\n\n var hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 1, 24)) {\n return true;\n }\n\n state.hours = hours === 24 ? 0 : hours;\n};\n\nparsers.m = function(state) {\n lookAhead(\"m\", state);\n var minutes = getNumber(2, state);\n\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return true;\n }\n\n state.minutes = minutes;\n};\n\nparsers.s = function(state) {\n lookAhead(\"s\", state);\n var seconds = getNumber(2, state);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return true;\n }\n state.seconds = seconds;\n};\n\nparsers.S = function(state) {\n var count = lookAhead(\"S\", state);\n var match = state.value.substr(state.valueIdx, count);\n var milliseconds = null;\n\n if (!isNaN(parseInt(match, 10))) {\n milliseconds = parseFloat(\"0.\" + match, 10);\n milliseconds = round(milliseconds, 3);\n milliseconds *= 1000;\n state.valueIdx += count;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return true;\n }\n\n state.milliseconds = milliseconds;\n};\n\nparsers.z = function(state, info) {\n var count = lookAhead(\"z\", state);\n\n var shortFormat = count < 4;\n\n var invalid = parseTimeZoneOffset(state, info, {\n shortHours: shortFormat,\n optionalMinutes: shortFormat,\n localizedName: true\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.Z = function(state, info) {\n var count = lookAhead(\"Z\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count < 4,\n zLiteral: count === 5,\n localizedName: count === 4\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.x = function(state, info) {\n var count = lookAhead(\"x\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.X = function(state, info) {\n var count = lookAhead(\"X\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1,\n zLiteral: true\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.G = function(state, info) {\n var count = lookAhead(\"G\", state);\n var eras = formatNames(info, \"eras\", count, false, true);\n var era = getIndexByName([ eras[0], eras[1] ], state, true);\n\n if (era === null) {\n return true;\n }\n};\n\nparsers.e = function(state, info) {\n return parseDayOfWeek(\"e\", state, info);\n};\n\nparsers.c = function(state, info) {\n return parseDayOfWeek(\"c\", state, info);\n};\n\nfunction createDate(state) {\n var year = state.year;\n var month = state.month;\n var day = state.day;\n var hours = state.hours;\n var minutes = state.minutes;\n var seconds = state.seconds;\n var milliseconds = state.milliseconds;\n var pmHour = state.pmHour;\n var UTC = state.UTC;\n var hoursOffset = state.hoursOffset;\n var minutesOffset = state.minutesOffset;\n var hasTime = hours !== null || minutes !== null || seconds || null;\n var date = new Date();\n var result;\n\n if (year === null && month === null && day === null && hasTime) {\n year = date.getFullYear();\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = date.getFullYear();\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset * (hoursOffset < 0 ? -1 : 1);\n }\n\n result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(result, hours);\n }\n\n if (year < 100) {\n result.setFullYear(year);\n }\n\n if (result.getDate() !== day && UTC === undefined) {\n return null;\n }\n\n return result;\n}\n\nfunction addFormatSpaces(value, format) {\n var leadingSpaces = leadingSpacesRegex.exec(format)[0];\n var trailingSpaces = trailingSpacesRegex.exec(format)[0];\n\n return (\"\" + leadingSpaces + value + trailingSpaces);\n}\n\nfunction parseExact(value, format, info) {\n var pattern = datePattern(format, info).split(EMPTY);\n\n var state = {\n format: pattern,\n idx: 0,\n value: addFormatSpaces(value, format),\n valueIdx: 0,\n year: null,\n month: null,\n day: null,\n hours: null,\n minutes: null,\n seconds: null,\n milliseconds: null\n };\n var length = pattern.length;\n var literal = false;\n\n for (; state.idx < length; state.idx++) {\n var ch = pattern[state.idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n }\n\n checkLiteral(state);\n } else {\n if (parsers[ch]) {\n var invalid = parsers[ch](state, info);\n if (invalid) {\n return null;\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral(state);\n } else if (!checkLiteral(state)) {\n return null;\n }\n }\n }\n\n if (state.valueIdx < value.length) {\n return null;\n }\n\n return createDate(state) || null;\n}\n\nfunction parseMicrosoftDateOffset(offset) {\n var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n var result = offset.substring(1);\n result = (parseInt(result.substr(0, 2), 10) * 60) + parseInt(result.substring(2), 10);\n\n return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n if (value && value.indexOf(\"/D\") === 0) {\n var date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n var tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n date = convertTimeZone(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n}\n\nfunction defaultFormats(calendar) {\n var formats = [];\n var patterns = calendar.patterns;\n var length = FORMATS_SEQUENCE.length;\n\n for (var idx = 0; idx < length; idx++) {\n formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n }\n\n return formats.concat(standardDateFormats);\n}\n\nexport default function parseDate(value, formats, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (!value) {\n return null;\n }\n\n if (isDate(value)) {\n return value;\n }\n\n var parseValue = String(value).trim();\n var date = parseMicrosoftDateFormat(parseValue);\n if (date) {\n return date;\n }\n\n var info = localeInfo(locale);\n var parseFormats = formats || defaultFormats(info.calendar);\n parseFormats = Array.isArray(parseFormats) ? parseFormats : [ parseFormats ];\n\n var length = parseFormats.length;\n\n for (var idx = 0; idx < length; idx++) {\n date = parseExact(parseValue, parseFormats[idx], info);\n if (date) {\n return date;\n }\n }\n\n return date;\n}\n","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\n\nvar NAME_TYPES = {\n month: {\n type: 'months',\n minLength: 3,\n standAlone: 'L'\n },\n\n quarter: {\n type: 'quarters',\n minLength: 3,\n standAlone: 'q'\n },\n\n weekday: {\n type: 'days',\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: 'c'\n },\n\n dayperiod: {\n type: 'dayPeriods',\n minLength: 0\n },\n\n era: {\n type: 'eras',\n minLength: 0\n }\n};\n\nvar LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n var lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === LITERAL) {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: LITERAL,\n pattern: value\n });\n }\n}\n\nfunction isHour12(pattern) {\n return pattern === 'h' || pattern === 'K';\n}\n\nexport default function splitDateFormat(format, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n var info = localeInfo(locale);\n var pattern = datePattern(format, info);\n var parts = [];\n var lastIndex = dateFormatRegExp.lastIndex = 0;\n var match = dateFormatRegExp.exec(pattern);\n\n while (match) {\n var value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (value.startsWith('\"') || value.startsWith(\"'\")) {\n addLiteral(parts, value);\n } else {\n var specifier = value[0];\n var type = DATE_FIELD_MAP[specifier];\n var part = {\n type: type,\n pattern: value\n };\n\n if (type === 'hour') {\n part.hour12 = isHour12(value);\n }\n\n var names = NAME_TYPES[type];\n\n if (names) {\n var minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n var patternLength = value.length;\n\n if (patternLength >= minLength) {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n}\n","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\n\nvar formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nexport function toString(value, format, locale) {\n if (format) {\n if (isDate(value)) {\n return formatDate(value, format, locale);\n } else if (isNumber(value)) {\n return formatNumber(value, format, locale);\n }\n }\n\n return value !== undefined && value !== null ? value : EMPTY;\n}\n\nexport function format(format, values, locale) {\n return format.replace(formatRegExp, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10)];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n });\n}\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-intl',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642516071,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var _a;\n/**\n * @hidden\n */\nexport var noRecords = 'grid.noRecords';\n/**\n * @hidden\n */\nexport var pagerInfo = 'grid.pagerInfo';\n/**\n * @hidden\n */\nexport var pagerFirstPage = 'grid.pagerFirstPage';\n/**\n * @hidden\n */\nexport var pagerPreviousPage = 'grid.pagerPreviousPage';\n/**\n * @hidden\n */\nexport var pagerNextPage = 'grid.pagerNextPage';\n/**\n * @hidden\n */\nexport var pagerLastPage = 'grid.pagerLastPage';\n/**\n * @hidden\n */\nexport var pagerItemPerPage = 'grid.pagerItemsPerPage';\n/**\n * @hidden\n */\nexport var pagerPage = 'grid.pagerPage';\n/**\n * @hidden\n */\nexport var pagerOf = 'grid.pagerOf';\n/**\n * @hidden\n */\nexport var pagerTotalPages = 'grid.pagerTotalPages';\n/**\n * @hidden\n */\nexport var groupPanelEmpty = 'grid.groupPanelEmpty';\n/**\n * @hidden\n */\nexport var groupColumn = 'grid.groupColumn';\n/**\n * @hidden\n */\nexport var ungroupColumn = 'grid.ungroupColumn';\n/**\n * @hidden\n */\nexport var filterClearButton = 'grid.filterClearButton';\n/**\n * @hidden\n */\nexport var filterSubmitButton = 'grid.filterSubmitButton';\n/**\n * @hidden\n */\nexport var filterTitle = 'grid.filterTitle';\n/**\n * @hidden\n */\nexport var sortAscending = 'grid.sortAscending';\n/**\n * @hidden\n */\nexport var sortDescending = 'grid.sortDescending';\n/**\n * @hidden\n */\nexport var searchPlaceholder = 'grid.searchPlaceholder';\n/**\n * @hidden\n */\nexport var filterCheckAll = 'grid.filterCheckAll';\n/**\n * @hidden\n */\nexport var filterChooseOperator = 'grid.filterChooseOperator';\n/**\n * @hidden\n */\nexport var filterSelectedItems = 'grid.filterSelectedItems';\n/**\n * @hidden\n */\nexport var sortAriaLabel = 'grid.sortAriaLabel';\n/**\n * @hidden\n */\nexport var filterAriaLabel = 'grid.filterAriaLabel';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[noRecords] = 'No records available',\n _a[groupPanelEmpty] = 'Drag a column header and drop it here to group by that column',\n _a[filterClearButton] = 'Clear',\n _a[filterSubmitButton] = 'Filter',\n _a[filterTitle] = 'Filter',\n _a[sortAscending] = 'Sort Ascending',\n _a[sortDescending] = 'Sort Descending',\n _a[sortAriaLabel] = 'Sortable',\n _a[groupColumn] = 'Group Column',\n _a[ungroupColumn] = 'Ungroup Column',\n _a[pagerItemPerPage] = 'items per page',\n _a[pagerInfo] = '{0} - {1} of {2} items',\n _a[pagerFirstPage] = 'Go to the first page',\n _a[pagerPreviousPage] = 'Go to the previous page',\n _a[pagerNextPage] = 'Go to the next page',\n _a[pagerLastPage] = 'Go to the last page',\n _a[pagerPage] = 'Page',\n _a[pagerOf] = 'of',\n _a[pagerTotalPages] = '{0}',\n _a[searchPlaceholder] = 'Search',\n _a[filterCheckAll] = 'Check All',\n _a[filterChooseOperator] = 'Choose Operator',\n _a[filterSelectedItems] = 'selected items',\n _a[filterAriaLabel] = 'Filter',\n _a['grid.filterEqOperator'] = 'Is equal to',\n _a['grid.filterNotEqOperator'] = 'Is not equal to',\n _a['grid.filterIsNullOperator'] = 'Is null',\n _a['grid.filterIsNotNullOperator'] = 'Is not null',\n _a['grid.filterIsEmptyOperator'] = 'Is empty',\n _a['grid.filterIsNotEmptyOperator'] = 'Is not empty',\n _a['grid.filterStartsWithOperator'] = 'Starts with',\n _a['grid.filterContainsOperator'] = 'Contains',\n _a['grid.filterNotContainsOperator'] = 'Does not contain',\n _a['grid.filterEndsWithOperator'] = 'Ends with',\n _a['grid.filterGteOperator'] = 'Is greater than or equal to',\n _a['grid.filterGtOperator'] = 'Is greater than',\n _a['grid.filterLteOperator'] = 'Is less than or equal to',\n _a['grid.filterLtOperator'] = 'Is less than',\n _a['grid.filterIsTrue'] = 'Is true',\n _a['grid.filterIsFalse'] = 'Is false',\n _a['grid.filterBooleanAll'] = '(All)',\n _a['grid.filterAfterOrEqualOperator'] = 'Is after or equal to',\n _a['grid.filterAfterOperator'] = 'Is after',\n _a['grid.filterBeforeOperator'] = 'Is before',\n _a['grid.filterBeforeOrEqualOperator'] = 'Is before or equal to',\n _a['grid.filterAndLogic'] = 'And',\n _a['grid.filterOrLogic'] = 'Or',\n _a);\n/**\n * @hidden\n */\nexport function pagerMessagesMap(pagerMessageKey) {\n var messageKey = pagerMessageKey.replace(/^pager\\.([a-z])/, function (_match, group) { return 'grid.pager' + group.toUpperCase(); });\n return ({ messageKey: messageKey, defaultMessage: messages[messageKey] });\n}\n","import * as coreIntl from '@telerik/kendo-intl';\nimport * as licensing from '@progress/kendo-licensing';\nimport { packageMetadata } from '../package-metadata';\n/* eslint-disable max-len */\n/**\n * A service which provides internationalization methods and is bound to a specific locale.\n */\nvar IntlService = /** @class */ (function () {\n /**\n * Creates a new instance of the internationalization service.\n *\n * @param locale - The locale that will be used by the internationalization methods.\n */\n function IntlService(locale) {\n this.locale = locale;\n if (typeof licensing !== 'undefined') {\n licensing.validatePackage(packageMetadata);\n }\n else {\n var message = \"License activation failed for \" + packageMetadata.name + \"\\n\";\n message += 'The @progress/kendo-licensing script is not loaded.\\n';\n message += \"See \" + packageMetadata.licensingDocsUrl + \" for more information.\\n\";\n console.warn(message);\n }\n if (locale === '' && process.env.NODE_ENV !== 'production') {\n throw 'Locale should not be empty string';\n }\n }\n /**\n * Formats a string with placeholders such as `Total amount {0:c}`.\n *\n * @param format - The format string.\n * @param values - One or more values to output in the format string placeholders.\n * @return - The formatted string.\n */\n IntlService.prototype.format = function (format) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n /* The following code retains backward compatibility with the old API */\n if (values.length === 1 && Array.isArray(values[0])) {\n return coreIntl.format(format, values[0], this.locale);\n }\n return coreIntl.format(format, values, this.locale);\n };\n /**\n * Converts a `Date` object to a string based on the specified format. If no format is provided, the default short date format is used.\n *\n * @param value - The date which will be formatted.\n * @param format - The format string or options.\n * @return - The formatted date.\n */\n IntlService.prototype.formatDate = function (value, format) {\n return coreIntl.formatDate(value, format, this.locale);\n };\n /**\n * Converts an object to a string based on the specified format.\n *\n * @param value - The value which will be formatted.\n * @param format - The format to use.\n * @return - The formatted object.\n */\n IntlService.prototype.toString = function (value, format) {\n return coreIntl.toString(value, format, this.locale);\n };\n /**\n * Converts a string to a `Number`.\n *\n * @param value - The string which will be parsed.\n * @param format - The format string or options.\n * @return - The parsed number.\n */\n IntlService.prototype.parseNumber = function (value, format) {\n return coreIntl.parseNumber(value, this.locale, format);\n };\n /**\n * Converts a string to a `Date` object based on the specified format.\n *\n * @param value - The string which will be converted.\n * @param format - The format strings or options.\n * @return - The parsed date.\n */\n IntlService.prototype.parseDate = function (value, format) {\n return coreIntl.parseDate(value, format, this.locale);\n };\n /**\n * Converts a `Number` to a string based on the specified format.\n *\n * @param value - The number which will be formatted.\n * @param format - The format string or options.\n * @return - The formatted number.\n */\n IntlService.prototype.formatNumber = function (value, format) {\n return coreIntl.formatNumber(value, format, this.locale);\n };\n /**\n * Returns a localized date field name based on specific `dateFieldName` options.\n *\n * @param options - The detailed configuration for the desired date field name.\n * @returns - The localized date field name from the current locale based on the option.\n */\n IntlService.prototype.dateFieldName = function (options) {\n return coreIntl.dateFieldName(options, this.locale);\n };\n /**\n * Returns the day names from the current locale based on the option.\n *\n * @param options - The detailed configuration for the desired date format.\n * @return - The day names from the current locale based on the option.\n */\n IntlService.prototype.dateFormatNames = function (options) {\n return coreIntl.dateFormatNames(this.locale, options);\n };\n /**\n * Splits the date format into objects which contain information about each part of the pattern.\n *\n * @param format - The format string or options.\n * @returns - The date format parts.\n */\n IntlService.prototype.splitDateFormat = function (format) {\n return coreIntl.splitDateFormat(format, this.locale);\n };\n /**\n * Returns the number symbols from the current locale.\n *\n * @return - The number symbols from the current locale.\n */\n IntlService.prototype.numberSymbols = function () {\n return coreIntl.numberSymbols(this.locale);\n };\n /**\n * Returns the first day index, starting from Sunday.\n *\n * @return - The index of the first day of the week (0 == Sunday).\n */\n IntlService.prototype.firstDay = function () {\n return coreIntl.firstDay(this.locale);\n };\n return IntlService;\n}());\nexport { IntlService };\n// tslint:enable:max-line-length\n","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\n\nexport default function dateFieldName(options, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n var info = localeInfo(locale);\n var dateFields = info.calendar.dateFields;\n if (!dateFields) {\n throw errors.NoDateFieldNames.error();\n }\n\n var fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}\n","import { getLocaleInfo } from './info';\n\nexport default function numberSymbols(locale) {\n var info = getLocaleInfo(locale);\n\n return info.numbers.symbols;\n}","/**\n * @hidden\n */\nexport var messages = Object.create({});\n","import { messages } from './messages';\n/**\n * A service which provides localization methods.\n */\nvar LocalizationService = /** @class */ (function () {\n function LocalizationService(language) {\n this.language = language;\n if (language === '' && process.env.NODE_ENV !== 'production') {\n throw 'Language should not be an empty string';\n }\n }\n /* eslint-disable max-len */\n /**\n * Provides a string based on a key for the current language. When no string for the current language is available under this key, the `defaultValue` is returned.\n *\n * @param key - The key which identifies the string for the current language.\n * @param defaultValue - The default value which will be returned when no string\n * for the current language is available under the key.\n * @return - The string for the current language.\n */\n // tslint:enable:max-line-length\n LocalizationService.prototype.toLanguageString = function (key, defaultValue) {\n if (this.language &&\n messages[this.language] &&\n messages[this.language].hasOwnProperty(key)) {\n return messages[this.language][key];\n }\n else {\n return defaultValue;\n }\n };\n return LocalizationService;\n}());\nexport { LocalizationService };\n","import * as React from 'react';\nimport { IntlService } from '../Intl/IntlService';\nimport { LocalizationService } from '../Localization/LocalizationService';\n/** @hidden */\nexport var GlobalizationContext = React.createContext({\n intl: new IntlService('en'),\n localization: new LocalizationService()\n});\n","import { IntlService } from './Intl/IntlService';\nimport { LocalizationService } from './Localization/LocalizationService';\nimport { GlobalizationContext } from './globalization/GlobalizationContext';\n/* eslint-disable max-len */\n/**\n * Provides an internationalization service. When the passed component is a direct or indirect child of `IntlProvider`, the returned service uses the locale of the provider. Otherwise, uses `en` as a default locale. To handle locale changes, call the method on each `render`.\n *\n * @param componentClass - The React component class that will use the internationalization service.\n */\nexport function provideIntlService(component) {\n if (!component && process.env.NODE_ENV !== 'production') {\n throw \"Passed component - \" + component + \" is invalid.\";\n }\n return component.context && component.context.intl\n ? component.context.intl\n : new IntlService('en');\n}\n/**\n * Provides a localization service. When the passed component is a direct or indirect child of `LocalizationProvider`, the returned service uses the language of the provider. To handle locale changes, call the method on each `render`.\n *\n * @param componentClass - The React component class that will use the internationalization service.\n */\nexport function provideLocalizationService(component) {\n if (!component && process.env.NODE_ENV !== 'production') {\n throw \"Passed component - \" + component + \" is invalid.\";\n }\n return component.context && component.context.localization\n ? component.context.localization\n : new LocalizationService();\n}\n/**\n * A method which registers a component class or a functional stateless component for internationalization. When a component of that type is a direct or indirect child of `IntlProvider`, the locale of the provider is used. Otherwise, uses `en` as a default locale.\n *\n * @param component - The React component class that will use the internationalization methods.\n */\nexport function registerForIntl(component) {\n component.contextType = GlobalizationContext;\n}\n/**\n * A method which registers a component class or a stateless functional component for localization. When a component of that type is a direct or indirect child of `LocalizationProvider`, the language of the provider is used.\n *\n * @param component - The React component class that will use the internationalization methods.\n */\nexport function registerForLocalization(component) {\n component.contextType = GlobalizationContext;\n}\n// tslint:enable:max-line-length\n","import { messages } from './messages';\n/**\n * @hidden\n */\nexport var filterLogicList = [\n { text: 'grid.filterAndLogic', operator: 'and' },\n { text: 'grid.filterOrLogic', operator: 'or' }\n];\n/**\n * @hidden\n */\nexport var operators = {\n 'text': [\n { text: 'grid.filterContainsOperator', operator: 'contains' },\n { text: 'grid.filterNotContainsOperator', operator: 'doesnotcontain' },\n { text: 'grid.filterEqOperator', operator: 'eq' },\n { text: 'grid.filterNotEqOperator', operator: 'neq' },\n { text: 'grid.filterStartsWithOperator', operator: 'startswith' },\n { text: 'grid.filterEndsWithOperator', operator: 'endswith' },\n { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' },\n { text: 'grid.filterIsEmptyOperator', operator: 'isempty' },\n { text: 'grid.filterIsNotEmptyOperator', operator: 'isnotempty' }\n ],\n 'numeric': [\n { text: 'grid.filterEqOperator', operator: 'eq' },\n { text: 'grid.filterNotEqOperator', operator: 'neq' },\n { text: 'grid.filterGteOperator', operator: 'gte' },\n { text: 'grid.filterGtOperator', operator: 'gt' },\n { text: 'grid.filterLteOperator', operator: 'lte' },\n { text: 'grid.filterLtOperator', operator: 'lt' },\n { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' }\n ],\n 'date': [\n { text: 'grid.filterEqOperator', operator: 'eq' },\n { text: 'grid.filterNotEqOperator', operator: 'neq' },\n { text: 'grid.filterAfterOrEqualOperator', operator: 'gte' },\n { text: 'grid.filterAfterOperator', operator: 'gt' },\n { text: 'grid.filterBeforeOperator', operator: 'lt' },\n { text: 'grid.filterBeforeOrEqualOperator', operator: 'lte' },\n { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' }\n ],\n 'boolean': [\n { text: 'grid.filterEqOperator', operator: 'eq' }\n ]\n};\n/**\n * @hidden\n */\nexport var IsUnaryFilter = function (operator) {\n return operator === 'isnull' || operator === 'isnotnull' || operator === 'isempty' || operator === 'isnotempty';\n};\n/**\n * @hidden\n */\nexport var operatorMap = function (iterable, service) { return iterable.map(function (operator) { return ({\n text: service.toLanguageString(operator.text, messages[operator.text]),\n operator: operator.operator\n}); }); };\n/**\n * @hidden\n */\nexport var defaultBooleanOperator = 'eq';\n/**\n * @hidden\n */\nexport var booleanFilterValues = [\n { text: 'grid.filterBooleanAll', operator: '' },\n { text: 'grid.filterIsTrue', operator: true },\n { text: 'grid.filterIsFalse', operator: false }\n];\n/**\n * @hidden\n */\nexport var defaultHideSecondFilter = {\n text: false,\n numeric: false,\n date: false,\n boolean: true\n};\n/**\n * @hidden\n */\nexport var cellInputChange = function (value, e, props) {\n var defaultOperator = getDefaultOperator(props.operators);\n var operator = props.operator;\n switch (props.filterType) {\n case 'numeric':\n if (!operator || IsUnaryFilter(operator)) {\n // change the operator to default\n operator = defaultOperator;\n }\n if (value === null && operator === defaultOperator) {\n // clear only the default operator\n operator = '';\n }\n break;\n case 'date':\n if (!operator || IsUnaryFilter(operator)) {\n operator = defaultOperator;\n }\n if (value === null && operator === defaultOperator) {\n operator = '';\n }\n break;\n case 'text':\n if (!operator || IsUnaryFilter(operator)) {\n operator = defaultOperator;\n }\n if (!value && operator === defaultOperator) {\n operator = '';\n }\n break;\n default: return;\n }\n props.onChange({ value: value, operator: operator, syntheticEvent: e });\n};\n/**\n * @hidden\n */\nexport var getDefaultOperator = function (filterOperators, filterType) {\n if (filterType) {\n return filterOperators[filterType][0].operator;\n }\n else {\n return filterOperators[0].operator;\n }\n};\n/**\n * @hidden\n */\nexport var getFilterType = function (filterType) {\n return filterType || 'text';\n};\n/**\n * @hidden\n */\nexport var cellBoolDropdownChange = function (event, onChange) {\n var item = event.target.value;\n onChange({\n value: item.operator,\n operator: item.operator === '' ? '' : defaultBooleanOperator,\n syntheticEvent: event.syntheticEvent\n });\n};\n/**\n * @hidden\n */\nexport var cellOperatorChange = function (event, currentValue, onChange) {\n var value = currentValue;\n var item = event.target.value;\n if (!event.target.state.opened) {\n return;\n }\n if (IsUnaryFilter(item.operator)) {\n // clear the value to avoid confusion on what is filtered\n value = null;\n }\n if (currentValue === null && !IsUnaryFilter(item.operator)) {\n value = undefined;\n }\n onChange({ value: value, operator: item.operator, syntheticEvent: event.syntheticEvent });\n};\n","var _a;\n/**\n * @hidden\n */\nexport var labelsOptional = 'labels.optional';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[labelsOptional] = '(Optional)',\n _a);\n","/* eslint-disable radix */\n/**\n * @hidden\n */\nvar DISABLED_TABINDEX = -1;\n/**\n * @hidden\n */\nvar DEFAULT_TABINDEX = 0;\n/**\n * @hidden\n */\nexport var getTabIndex = function (tabIndex, disabled, useDefaultTabIndexWhenDisabled) {\n var parsedTabIndex = typeof tabIndex === 'string' ? parseInt(tabIndex, undefined) : tabIndex;\n if (parsedTabIndex === NaN) {\n return undefined;\n }\n return parsedTabIndex !== undefined\n ? parsedTabIndex\n : disabled ?\n (useDefaultTabIndexWhenDisabled ? undefined : DISABLED_TABINDEX)\n : DEFAULT_TABINDEX;\n};\n","/**\n * @hidden\n */\nexport var Keys = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n esc: 27,\n space: 32,\n pageUp: 33,\n pageDown: 34,\n end: 35,\n home: 36,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n delete: 46\n};\n","import * as React from 'react';\n/** @hidden */\nexport var usePropsContext = function (context, props) {\n var contextPropsCallback = React.useContext(context);\n var contextProps = contextPropsCallback(props);\n return contextProps;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { usePropsContext } from '../hooks/usePropsContext';\n/** @hidden */\nexport var createPropsContext = function () { return React.createContext(function (props) { return props; }); };\n/** @hidden */\nexport var withPropsContext = function (context, Component\n// eslint-disable-next-line react/display-name\n) { return React.forwardRef(function (props, ref) {\n var contextProps = usePropsContext(context, props);\n return (React.createElement(Component, __assign({}, contextProps, { ref: ref })));\n}); };\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-labels',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642516192,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { labelsOptional, messages } from './messages';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\n/**\n * Represents the KendoReact FloatingLabel component.\n *\n * @example\n * ```jsx\n * const sizes = [\"X-Small\", \"Small\", \"Medium\", \"Large\", \"X-Large\", \"2X-Large\"];\n * const App = () => {\n * const [ddlState, setDdlState] = React.useState();\n * const editorId = 'ddl-sizes';\n * return (\n * <FloatingLabel label={'Shirt Size:'} editorId={editorId} editorValue={ddlState}>\n * <DropDownList\n * id={editorId}\n * value={ddlState}\n * data={sizes}\n * onChange={(e) => setDdlState(e.target.value)}\n * />\n * </FloatingLabel>\n * );\n * };\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar FloatingLabel = /** @class */ (function (_super) {\n __extends(FloatingLabel, _super);\n function FloatingLabel(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {\n focused: false\n };\n /**\n * @hidden\n */\n _this.handleFocus = function (_) {\n _this.setState({ focused: true });\n };\n /**\n * @hidden\n */\n _this.handleBlur = function (_) {\n _this.setState({ focused: false });\n };\n validatePackage(packageMetadata);\n return _this;\n }\n /**\n * @hidden\n */\n FloatingLabel.prototype.render = function () {\n var _a = this.props, label = _a.label, editorId = _a.editorId, className = _a.className, editorValue = _a.editorValue, editorPlaceholder = _a.editorPlaceholder, editorValid = _a.editorValid, editorDisabled = _a.editorDisabled, style = _a.style, id = _a.id, optional = _a.optional;\n var localizationService = provideLocalizationService(this);\n var localizedOptional = optional ? localizationService\n .toLanguageString(labelsOptional, messages[labelsOptional]) : '';\n var optionalElement = localizedOptional && (React.createElement(\"span\", { className: 'k-label-optional' }, localizedOptional));\n var spanClassNames = classNames({\n 'k-textbox-container': true,\n 'k-state-focused': this.state.focused,\n 'k-state-empty': !editorPlaceholder && !editorValue && (editorValue !== 0),\n 'k-text-disabled': editorDisabled,\n 'k-rtl': this.props.dir === 'rtl'\n }, className);\n var labelClassNames = classNames({\n 'k-label': true,\n 'k-text-error': editorValid === false,\n 'k-text-disabled': editorDisabled\n });\n return (React.createElement(\"span\", { className: spanClassNames, onFocus: this.handleFocus, onBlur: this.handleBlur, style: style, dir: this.props.dir },\n this.props.children,\n label\n ? editorId\n ? React.createElement(\"label\", { id: id, htmlFor: editorId, className: labelClassNames },\n label,\n optionalElement)\n : React.createElement(\"span\", { id: id, className: labelClassNames },\n label,\n optionalElement)\n : null));\n };\n /**\n * @hidden\n */\n FloatingLabel.propTypes = {\n label: PropTypes.string,\n editorId: PropTypes.string,\n editorValue: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.number]),\n editorPlaceholder: PropTypes.string,\n editorValid: PropTypes.bool,\n editorDisabled: PropTypes.bool,\n id: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n optional: PropTypes.bool\n };\n return FloatingLabel;\n}(React.Component));\nexport { FloatingLabel };\nregisterForLocalization(FloatingLabel);\n","var clearSlide = function (element) {\n element.style.transitionDuration = '';\n element.classList.remove('k-slide-down-appear', 'k-slide-down-appear-active', 'k-slide-down-exit', 'k-slide-down-exit-active', 'k-slide-up-appear', 'k-slide-up-appear-active', 'k-slide-up-exit', 'k-slide-up-exit-active');\n};\nvar firefox = typeof window !== 'undefined' &&\n /Firefox/.test(window.navigator.userAgent);\n/**\n * @hidden\n */\nexport var slide = function (element, direction, duration, type, callback) {\n if (duration === 0) {\n return callback();\n }\n var slideClass = 'k-slide-' + direction + '-' + type;\n var slideActiveClass = slideClass + '-active';\n var transitionend = function () {\n // if event is attached using react,\n // the animation does not work well in firefox,\n // when the show/hide button is toggled quickly.\n element.removeEventListener('transitionend', transitionend);\n clearSlide(element);\n callback();\n };\n element.addEventListener('transitionend', transitionend);\n var ownerDocument = element.ownerDocument;\n if (!ownerDocument) {\n return;\n }\n var deafultView = ownerDocument.defaultView;\n if (!deafultView) {\n return;\n }\n var animate = function () {\n clearSlide(element);\n element.classList.add(slideClass);\n deafultView.requestAnimationFrame(function () {\n element.style.transitionDuration = duration + 'ms';\n element.classList.add(slideActiveClass);\n });\n };\n if (firefox) {\n deafultView.requestAnimationFrame(animate);\n }\n else {\n animate();\n }\n};\n","/**\n * @hidden\n */\nexport var canUseDOM = Boolean(\n// from fbjs\ntypeof window !== 'undefined' &&\n window.document &&\n window.document.createElement);\n","import * as React from 'react';\n/** @hidden */\nexport var ZIndexContext = React.createContext(0);\n/** @hidden */\nexport var useZIndexContext = function () { return React.useContext(ZIndexContext); };\nZIndexContext.displayName = 'KendoReactZIndexContext';\n","export default {\n \"bottom\": \"bottom\",\n \"center\": \"center\",\n \"middle\": \"middle\",\n \"left\": \"left\",\n \"right\": \"right\",\n \"top\": \"top\"\n};\n","import point from './align-point';\n\nvar align = function (options) {\n var anchorRect = options.anchorRect;\n var anchorAlign = options.anchorAlign;\n var elementRect = options.elementRect;\n var elementAlign = options.elementAlign;\n var margin = options.margin; if ( margin === void 0 ) margin = {};\n var anchorHorizontal = anchorAlign.horizontal;\n var anchorVertical = anchorAlign.vertical;\n var elementHorizontal = elementAlign.horizontal;\n var elementVertical = elementAlign.vertical;\n\n var horizontalMargin = margin.horizontal || 0;\n var verticalMargin = margin.vertical || 0;\n\n var top = anchorRect.top;\n var left = anchorRect.left;\n\n if (anchorVertical === point.bottom) {\n top += anchorRect.height;\n }\n\n if (anchorVertical === point.center || anchorVertical === point.middle) {\n top += Math.round(anchorRect.height / 2);\n }\n\n if (elementVertical === point.bottom) {\n top -= elementRect.height;\n verticalMargin *= -1;\n }\n\n if (elementVertical === point.center || elementVertical === point.middle) {\n top -= Math.round(elementRect.height / 2);\n verticalMargin *= -1;\n }\n\n if (anchorHorizontal === point.right) {\n left += anchorRect.width;\n }\n\n if (anchorHorizontal === point.center || anchorHorizontal === point.middle) {\n left += Math.round(anchorRect.width / 2);\n }\n\n if (elementHorizontal === point.right) {\n left -= elementRect.width;\n horizontalMargin *= -1;\n }\n\n if (elementHorizontal === point.center || elementHorizontal === point.middle) {\n left -= Math.round(elementRect.width / 2);\n horizontalMargin *= -1;\n }\n\n return {\n top: top + verticalMargin,\n left: left + horizontalMargin\n };\n};\n\nexport default align;\n","export default {\n \"fit\": \"fit\",\n \"flip\": \"flip\",\n \"none\": \"none\"\n};\n","import alignPoint from './align-point';\nimport collision from './collision';\n\nvar fit = function(position, size, viewPortSize) {\n var output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n};\n\nvar flip = function(ref) {\n var offset = ref.offset;\n var size = ref.size;\n var anchorSize = ref.anchorSize;\n var viewPortSize = ref.viewPortSize;\n var anchorAlignPoint = ref.anchorAlignPoint;\n var elementAlignPoint = ref.elementAlignPoint;\n var margin = ref.margin;\n\n var output = 0;\n\n var isPositionCentered = elementAlignPoint === alignPoint.center || elementAlignPoint === alignPoint.middle;\n var isOriginCentered = anchorAlignPoint === alignPoint.center || anchorAlignPoint === alignPoint.middle;\n var marginToAdd = 2 * margin; //2x to keep margin after flip\n\n if (elementAlignPoint !== anchorAlignPoint && !isPositionCentered && !isOriginCentered) {\n var isBeforeAnchor = anchorAlignPoint === alignPoint.top || anchorAlignPoint === alignPoint.left;\n if (offset < 0 && isBeforeAnchor) {\n output = size + anchorSize + marginToAdd;\n if (offset + output + size > viewPortSize) {\n output = 0; //skip flip\n }\n } else if (offset >= 0 && !isBeforeAnchor) {\n if (offset + size > viewPortSize) {\n output += -(anchorSize + size + marginToAdd);\n }\n\n if (offset + output < 0) {\n output = 0; //skip flip\n }\n }\n }\n\n return output;\n};\n\nvar restrictToView = function (options) {\n var anchorRect = options.anchorRect;\n var anchorAlign = options.anchorAlign;\n var elementRect = options.elementRect;\n var elementAlign = options.elementAlign;\n var collisions = options.collisions;\n var viewPort = options.viewPort;\n var margin = options.margin; if ( margin === void 0 ) margin = {};\n var elementTop = elementRect.top;\n var elementLeft = elementRect.left;\n var elementHeight = elementRect.height;\n var elementWidth = elementRect.width;\n var viewPortHeight = viewPort.height;\n var viewPortWidth = viewPort.width;\n var horizontalMargin = margin.horizontal || 0;\n var verticalMargin = margin.vertical || 0;\n\n var left = 0;\n var top = 0;\n\n var isVerticalFit = collisions.vertical === collision.fit;\n var isHorizontalFit = collisions.horizontal === collision.fit;\n var isVerticalFlip = collisions.vertical === collision.flip;\n var isHorizontalFlip = collisions.horizontal === collision.flip;\n\n if (isVerticalFit) {\n top += fit(elementTop, elementHeight, viewPortHeight);\n }\n\n if (isHorizontalFit) {\n left += fit(elementLeft, elementWidth, viewPortWidth);\n }\n\n if (isVerticalFlip) {\n top += flip({\n margin: verticalMargin,\n offset: elementTop,\n size: elementHeight,\n anchorSize: anchorRect.height,\n viewPortSize: viewPortHeight,\n anchorAlignPoint: anchorAlign.vertical,\n elementAlignPoint: elementAlign.vertical\n });\n }\n\n if (isHorizontalFlip) {\n left += flip({\n margin: horizontalMargin,\n offset: elementLeft,\n size: elementWidth,\n anchorSize: anchorRect.width,\n viewPortSize: viewPortWidth,\n anchorAlignPoint: anchorAlign.horizontal,\n elementAlignPoint: elementAlign.horizontal\n });\n }\n\n var flippedVertical = isVerticalFlip && top !== 0;\n var flippedHorizontal = isHorizontalFlip && left !== 0;\n var fittedVertical = isVerticalFit && top !== 0;\n var fittedHorizontal = isHorizontalFit && left !== 0;\n\n return {\n flipped: flippedHorizontal || flippedVertical,\n fitted: fittedVertical || fittedHorizontal,\n flip: {\n horizontal: flippedHorizontal,\n vertical: flippedVertical\n },\n fit: {\n horizontal: fittedHorizontal,\n vertical: fittedVertical\n },\n offset: {\n left: left,\n top: top\n }\n };\n};\n\nexport default restrictToView;\n","\nvar eitherRect = function (rect, offset) {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n\n return rect;\n};\n\nvar scaleRect = function (rect, scale) {\n if (!rect || scale === 1) {\n return rect;\n }\n\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\nvar removeStackingOffset = function (rect, stackingOffset) {\n if (!stackingOffset) { return rect; }\n\n var result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n\n return result;\n};\n\nfunction memoize(fun) {\n var result;\n var called = false;\n\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) {\n return result;\n }\n\n result = fun.apply(void 0, args);\n called = true;\n return result;\n };\n}\n\nvar hasRelativeStackingContext = memoize(function (elementSource) {\n if (!canUseDOM()) { return false; }\n\n // Component need to pass element to make sure document owner is correct.\n // This however might be performance hit if checked for example on each drag event.\n var currentDocument = elementSource ? elementSource.ownerDocument : document;\n\n if (!currentDocument || !currentDocument.body) { return false; }\n\n var top = 10;\n var parent = currentDocument.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = \"<div style=\\\"position: fixed; top: \" + top + \"px;\\\">child</div>\";\n\n currentDocument.body.appendChild(parent);\n\n var isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n\n currentDocument.body.removeChild(parent);\n\n return isDifferent;\n});\n\nvar canUseDOM = function () { return Boolean(\n // from fbjs\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n); };\n\nvar utils = {\n eitherRect: eitherRect,\n scaleRect: scaleRect,\n removeStackingOffset: removeStackingOffset,\n hasRelativeStackingContext: hasRelativeStackingContext,\n canUseDOM: canUseDOM\n};\n\nexport default utils;","export default function ownerDocument(element) {\n return element.ownerDocument || element.document || element;\n}\n","import ownerDocument from './owner-document';\n\nvar getWindow = function (element) { return ownerDocument(element).defaultView; };\n\nexport default getWindow;\n","import ownerDocument from './owner-document';\n\nvar getDocument = function (element) { return ownerDocument(element).documentElement; };\n\nexport default getDocument;\n","var cachedWidth = 0;\n\nexport default function scrollbarWidth() {\n if (!cachedWidth && typeof document !== 'undefined') {\n var div = document.createElement(\"div\");\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n cachedWidth = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n }\n\n return cachedWidth;\n}\n","import wnd from './window';\nimport getDocument from './document';\nimport scrollbarWidth from './scrollbar-width';\n\nexport default function windowViewport(element) {\n var win = wnd(element);\n var document = getDocument(element);\n var result = {\n height: win.innerHeight,\n width: win.innerWidth\n };\n\n if (document.scrollHeight - document.clientHeight > 0) {\n result.width -= scrollbarWidth();\n }\n\n return result;\n}\n","import docElement from './document';\nimport wnd from './window';\n\nexport default function scrollPosition(element) {\n var documentElement = docElement(element);\n var win = wnd(element);\n\n return {\n x: win.pageXOffset || documentElement.scrollLeft || 0,\n y: win.pageYOffset || documentElement.scrollTop || 0\n };\n}\n","var rectOfHiddenElement = function (element) {\n var ref = element.style;\n var display = ref.display;\n var left = ref.left;\n var position = ref.position;\n\n element.style.display = '';\n element.style.left = '-10000px';\n element.style.position = 'absolute';\n\n var rect = element.getBoundingClientRect();\n\n element.style.display = display;\n element.style.left = left;\n element.style.position = position;\n\n return rect;\n};\n\nvar offset = function (element) {\n var rect = element.getBoundingClientRect();\n var left = rect.left;\n var top = rect.top;\n\n if (!rect.height && !rect.width) {\n rect = rectOfHiddenElement(element);\n }\n\n return {\n top: top,\n left: left,\n height: rect.height,\n width: rect.width\n };\n};\n\nexport default offset;\n","import scrollPosition from './scroll-position';\n\nexport default function (element) {\n if (element === (element.ownerDocument || {}).body) {\n return scrollPosition(element);\n }\n\n return {\n x: element.scrollLeft,\n y: element.scrollTop\n };\n};\n","import documentElement from './document';\n\nvar offsetParent = function (element) {\n var offsetParent = element.offsetParent;\n\n while (offsetParent && offsetParent.style.position === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || documentElement(element);\n};\n\nexport default offsetParent;\n","import elementScrollPosition from './element-scroll-position';\nimport parentScrollPosition from './parent-scroll-position';\n\nexport default function (offsetParentElement, element) { return ( // eslint-disable-line no-arrow-condition\n offsetParentElement ? elementScrollPosition(offsetParentElement) : parentScrollPosition(element)\n); };\n","import offsetParent from './offset-parent';\nimport elementScrollPosition from './element-scroll-position';\n\nexport default function parentScrollPosition(element) {\n var parent = offsetParent(element);\n\n return parent ? elementScrollPosition(parent) : { x: 0, y: 0 };\n}\n","import offsetParent from './offset-parent';\nimport offsetRect from './offset';\nimport wnd from './window';\n\nvar position = function (element, parent) {\n var win = wnd(element);\n var elementStyles = win.getComputedStyle(element);\n var offset = offsetRect(element);\n var parentElement = parent || offsetParent(element);\n\n var ownerDocument = element.ownerDocument;\n var useRelative = parentElement !== ownerDocument.body && parentElement !== ownerDocument.documentElement;\n\n var parentOffset = { top: 0, left: 0 };\n\n if (elementStyles.position !== \"fixed\" && useRelative) {\n var parentStyles = win.getComputedStyle(parentElement);\n\n parentOffset = offsetRect(parentElement);\n parentOffset.top += parseInt(parentStyles.borderTopWidth, 10);\n parentOffset.left += parseInt(parentStyles.borderLeftWidth, 10);\n }\n\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left,\n height: offset.height,\n width: offset.width\n };\n};\n\nexport default position;\n","export default function (element, until) {\n var result = [];\n var next = element.parentNode;\n\n while (next) {\n result.push(next);\n\n if (next === until) { break; }\n\n next = next.parentNode;\n }\n\n return result;\n};\n","export default function (element) {\n var result = [];\n\n var sibling = element.parentNode.firstElementChild;\n\n while (sibling) {\n if (sibling !== element) {\n result.push(sibling);\n }\n\n sibling = sibling.nextElementSibling;\n }\n return result;\n};\n","/* eslint-disable arrow-body-style */\nimport addScroll from \"./add-scroll\";\nimport align from './align';\nimport boundingOffset from './bounding-offset';\nimport utils from './utils';\nimport removeScroll from './remove-scroll';\nimport restrictToView from './restrict-to-view';\nimport scrollPosition from './scroll-position';\nimport offsetBase from './offset';\nimport positionWithScroll from './position-with-scroll';\nimport windowViewPort from './window-viewport';\nimport siblingContainer from './sibling-container';\nimport parents from './parents';\n\nvar STYLES = [\n 'font-size',\n 'font-family',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'line-height'\n];\n\nvar addOffset = function (current, addition) {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n};\n\nvar getWindow = function () {\n return utils.canUseDOM() ? window : null;\n};\n\nvar getFontStyles = function (el) {\n var window = getWindow();\n\n if (!window || !el) { return []; }\n\n var computedStyles = window.getComputedStyle(el);\n\n return STYLES.map(function (font) { return ({ key: font, value: computedStyles[font] }); });\n};\n\nvar hasOffsetParent = function (el) {\n if (!el) { return false; }\n\n return Boolean(el.offsetParent);\n};\n\nvar offset = function (el) {\n if (!el) { return null; }\n\n return offsetBase(el);\n};\n\nvar offsetAtPoint = function (element, currentLocation) {\n if (!element) { return null; }\n\n var ref = element.style;\n var left = ref.left;\n var top = ref.top;\n var transition = ref.transition;\n\n element.style.transition = 'none';\n element.style.left = (currentLocation.left) + \"px\";\n element.style.top = (currentLocation.top) + \"px\";\n\n var currentOffset = offsetBase(element);\n\n element.style.left = left;\n element.style.top = top;\n\n // prevents elements with transition to be animated because of the change\n // tslint:disable-next-line:no-unused-expression\n element.offsetHeight;\n\n element.style.transition = transition;\n\n return currentOffset;\n};\n\nvar position = function (element, popupElement, scale) {\n if (!element || !popupElement) { return null; }\n\n var currentScale = scale || 1;\n\n return positionWithScroll(element, popupElement, currentScale);\n};\n\nvar OVERFLOW_REGEXP = /auto|scroll/;\n\nvar overflowElementStyle = function (element) {\n return (\"\" + (element.style.overflow) + (element.style.overflowX) + (element.style.overflowY));\n};\n\nvar overflowComputedStyle = function (element) {\n var styles = window.getComputedStyle(element);\n return (\"\" + (styles.overflow) + (styles.overflowX) + (styles.overflowY));\n};\n\nvar overflowStyle = function (element) {\n return overflowElementStyle(element) || overflowComputedStyle(element);\n};\n\nvar scrollableParents = function (element) {\n var parentElements = [];\n\n if (!utils.canUseDOM()) { return parentElements; }\n\n var parent = element.parentElement;\n\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent)) || parent.hasAttribute('data-scrollable')) {\n parentElements.push(parent);\n }\n\n parent = parent.parentElement;\n }\n\n parentElements.push(window);\n\n return parentElements;\n};\n\nvar getRelativeContextElement = function (el) {\n if (!el || !utils.hasRelativeStackingContext()) { return null; }\n\n var parent = el.parentElement;\n\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n parent = parent.parentElement;\n }\n\n return null;\n};\n\nvar stackingElementOffset = function (el) {\n var relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return null; }\n\n return offsetBase(relativeContextElement);\n};\n\nvar stackingElementScroll = function (el) {\n var relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return { x: 0, y: 0 }; }\n\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n};\n\nvar stackingElementViewPort = function (el) {\n var relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return null; }\n\n return {\n height: relativeContextElement.scrollHeight,\n width: relativeContextElement.scrollWidth\n };\n};\n\nvar useRelativePosition = function (el) {\n return Boolean(getRelativeContextElement(el));\n};\n\nvar zoomLevel = function () {\n if (!utils.canUseDOM()) { return 1; }\n\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2)) || 1;\n};\n\nvar isZoomed = function () {\n return zoomLevel() > 1;\n};\n\nvar zIndex = function (anchor, container) {\n if (!anchor || !utils.canUseDOM()) { return null; }\n\n var sibling = siblingContainer(anchor, container);\n\n if (!sibling) { return null; }\n\n var result = [ anchor ].concat(parents(anchor, sibling)).reduce(\n function (index, p) {\n var zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n var current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n },\n 0\n );\n\n return result ? (result + 1) : null;\n};\n\nvar domUtils = {\n addOffset: addOffset,\n addScroll: addScroll,\n align: align,\n boundingOffset: boundingOffset,\n getFontStyles: getFontStyles,\n getWindow: getWindow,\n hasOffsetParent: hasOffsetParent,\n offset: offset,\n offsetAtPoint: offsetAtPoint,\n position: position,\n removeScroll: removeScroll,\n restrictToView: restrictToView,\n scrollPosition: scrollPosition,\n scrollableParents: scrollableParents,\n getRelativeContextElement: getRelativeContextElement,\n stackingElementOffset: stackingElementOffset,\n stackingElementScroll: stackingElementScroll,\n stackingElementViewPort: stackingElementViewPort,\n useRelativePosition: useRelativePosition,\n windowViewPort: windowViewPort,\n zoomLevel: zoomLevel,\n isZoomed: isZoomed,\n zIndex: zIndex\n};\n\nexport default domUtils;\n","export default function addScroll(rect, scroll) {\n return {\n top: rect.top + scroll.y,\n left: rect.left + scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","import windowViewport from './window-viewport';\n\nvar boundingOffset = function (element) {\n if (!element.getBoundingClientRect) {\n var viewport = windowViewport(element);\n return {\n bottom: viewport.height,\n left: 0,\n right: viewport.width,\n top: 0\n };\n }\n\n var ref = element.getBoundingClientRect();\n var bottom = ref.bottom;\n var left = ref.left;\n var right = ref.right;\n var top = ref.top;\n\n return {\n bottom: bottom,\n left: left,\n right: right,\n top: top\n };\n};\n\nexport default boundingOffset;\n","import offsetParentScrollPosition from './offset-parent-scroll-position';\nimport offsetParent from './offset-parent';\nimport position from './position';\n\nexport default function (element, parent, scale) {\n if ( scale === void 0 ) scale = 1;\n\n var offsetParentElement = parent ? offsetParent(parent) : null;\n var ref = position(element, offsetParentElement);\n var top = ref.top;\n var left = ref.left;\n var height = ref.height;\n var width = ref.width;\n var ref$1 = offsetParentScrollPosition(offsetParentElement, element);\n var x = ref$1.x;\n var y = ref$1.y;\n var ownerDocument = element.ownerDocument;\n var positionScale = offsetParentElement === ownerDocument.body || offsetParentElement === ownerDocument.documentElement ? 1 : scale;\n\n return {\n top: top + y * positionScale,\n left: left + x * positionScale,\n height: height,\n width: width\n };\n};\n","export default function removeScroll(rect, scroll) {\n return {\n top: rect.top - scroll.y,\n left: rect.left - scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","/* eslint-disable no-loop-func */\n\nimport parents from './parents';\nimport siblings from './siblings';\n\nexport default function (anchor, container) {\n var parentElements = parents(anchor);\n var containerElement = container;\n var siblingElements;\n var result;\n\n while (containerElement) {\n siblingElements = siblings(containerElement);\n\n result = parentElements.reduce(\n function (list, p) { return list.concat(siblingElements.filter(function (s) { return s === p; })); },\n []\n )[0];\n\n if (result) { break; }\n\n containerElement = containerElement.parentElement;\n }\n\n return result;\n};\n\n","/* eslint-disable arrow-body-style */\n\nimport utils from './utils';\nimport domUtils from \"./dom-utils\";\n\nvar absoluteRect = function (anchor, element, offset, scale) {\n var scrollPos = elementScrollPosition(anchor, element);\n var rect = utils.eitherRect(domUtils.offset(anchor), offset);\n var stackScale = 2 * scale;\n\n var stackScroll = domUtils.stackingElementScroll(element);\n if (scale !== 1 && stackScroll) {\n stackScroll.x /= stackScale;\n stackScroll.y /= stackScale;\n }\n\n var stackOffset = domUtils.stackingElementOffset(element);\n if (scale !== 1 && stackOffset) {\n stackOffset.left /= stackScale;\n stackOffset.top /= stackScale;\n }\n\n return domUtils.removeScroll(\n domUtils.addScroll(\n utils.removeStackingOffset(\n utils.scaleRect(rect, scale),\n stackOffset\n ),\n stackScroll\n ),\n scrollPos\n );\n};\n\nvar relativeRect = function (anchor, element, offset, scale) {\n var rect = utils.eitherRect(domUtils.position(anchor, element, scale), offset);\n return utils.scaleRect(rect, scale);\n};\n\nvar elementScrollPosition = function (anchor, element) {\n return anchor ? { x: 0, y: 0 } : domUtils.scrollPosition(element);\n};\n\nvar alignElement = function (settings) {\n var anchor = settings.anchor;\n var element = settings.element;\n var anchorAlign = settings.anchorAlign;\n var elementAlign = settings.elementAlign;\n var margin = settings.margin;\n var offset = settings.offset;\n var positionMode = settings.positionMode;\n var scale = settings.scale;\n\n var currentScale = scale || 1;\n var fixedMode = positionMode === 'fixed' || !domUtils.hasOffsetParent(element);\n var anchorRect = fixedMode ? absoluteRect(anchor, element, offset, currentScale) : relativeRect(anchor, element, offset, currentScale);\n var elementRect = utils.scaleRect(domUtils.offset(element), currentScale);\n\n var result = domUtils.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: elementRect,\n margin: margin\n });\n\n return result;\n};\n\nexport default alignElement;\n","import utils from \"./utils\";\nimport domUtils from \"./dom-utils\";\n\nvar positionElement = function (settings) {\n var anchor = settings.anchor;\n var currentLocation = settings.currentLocation;\n var element = settings.element;\n var anchorAlign = settings.anchorAlign;\n var elementAlign = settings.elementAlign;\n var collisions = settings.collisions;\n var margin = settings.margin;\n var scale = settings.scale;\n\n var currentScale = scale || 1;\n var elementOffset = domUtils.offsetAtPoint(element, currentLocation);\n var elementRect = utils.scaleRect(elementOffset, currentScale);\n var anchorOffset = utils.scaleRect(domUtils.offset(anchor), currentScale);\n var anchorRect = utils.eitherRect(anchorOffset, currentLocation);\n\n var viewPort = settings.viewPort || domUtils.windowViewPort(element);\n viewPort.width = viewPort.width / currentScale;\n viewPort.height = viewPort.height / currentScale;\n\n var result = domUtils.restrictToView({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n collisions: collisions,\n elementAlign: elementAlign,\n elementRect: elementRect,\n margin: margin,\n viewPort: viewPort\n });\n\n var offset = domUtils.addOffset(currentLocation, result.offset);\n\n return {\n flip: result.flip,\n flipped: result.flipped,\n offset: offset\n };\n};\n\nexport default positionElement;","/**\n * @hidden\n */\nexport var isDifferentOffset = function (oldOffset, newOffset) {\n var oldLeft = oldOffset.left, oldTop = oldOffset.top;\n var newLeft = newOffset.left, newTop = newOffset.top;\n return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\nexport var hasBoundingRect = function (elem) { return !!elem.getBoundingClientRect; };\n/**\n * @hidden\n */\nexport var FRAME_DURATION = 1000 / 60; // 1000ms divided by 60fps\n/**\n * @hidden\n */\nexport var throttle = function (func, wait, options) {\n if (options === void 0) { options = {}; }\n var timeout, context, args, result;\n var previous = 0;\n options = options || {};\n var later = function () {\n previous = options.leading === false ? 0 : new Date().getTime();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n };\n var throttled = function () {\n var now = new Date().getTime();\n if (!previous && options.leading === false) {\n previous = now;\n }\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n }\n else if (!timeout && options.trailing !== false) {\n timeout = window.setTimeout(later, remaining);\n }\n return result;\n };\n return throttled;\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-popup',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642515994,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { slide } from './animation';\nimport { canUseDOM, ZIndexContext, validatePackage, classNames } from '@progress/kendo-react-common';\nimport { AlignPoint, alignElement, domUtils, positionElement, Collision as CollisionEnum } from '@progress/kendo-popup-common';\nimport { throttle, FRAME_DURATION } from './util';\nimport { packageMetadata } from './package-metadata';\nvar DEFAULT_POPUP_ZINDEX = 100;\nvar ZINDEX_POPUP_STEP = 1;\nfunction isEquivalent(a, b) {\n if (a === b) {\n return true;\n }\n if (!!a !== !!b) {\n return false;\n }\n var aProps = Object.getOwnPropertyNames(a);\n var bProps = Object.getOwnPropertyNames(b);\n if (aProps.length !== bProps.length) {\n return false;\n }\n for (var i = 0; i < aProps.length; i++) {\n var propName = aProps[i];\n if (a[propName] !== b[propName]) {\n return false;\n }\n }\n return true;\n}\nvar DEFAULT_OFFSET = {\n left: -1000,\n top: 0\n};\nvar Status;\n(function (Status) {\n Status[\"hiding\"] = \"hiding\";\n Status[\"hidden\"] = \"hidden\";\n Status[\"showing\"] = \"showing\";\n Status[\"shown\"] = \"shown\";\n Status[\"reposition\"] = \"reposition\";\n})(Status || (Status = {}));\nvar ANIMATION_CONTAINER = 'k-animation-container';\nvar ANIMATION_CONTAINER_SHOWN = 'k-animation-container-shown';\nvar ANIMATION_CONTAINER_RELATIVE = 'k-animation-container-relative';\nvar ANIMATION_CONTAINER_CHILD = 'k-child-animation-container';\nvar K_POPUP = 'k-popup';\n/**\n * @hidden\n */\nvar PopupWithoutContext = /** @class */ (function (_super) {\n __extends(PopupWithoutContext, _super);\n function PopupWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = { current: Status.hidden, previous: Status.hidden, props: {} };\n _this._popup = null;\n _this.show = function (popup) {\n _this.setPosition(popup);\n _this.animate(popup.firstChild, 'enter', _this.onOpened);\n _this.setState({ current: Status.shown, previous: _this.state.current });\n };\n _this.setPosition = function (popup) {\n var _a = _this.props, anchorAlign = _a.anchorAlign, popupAlign = _a.popupAlign, collision = _a.collision, offset = _a.offset, anchor = _a.anchor, margin = _a.margin, scale = _a.scale, positionMode = _a.positionMode;\n var alignedOffset = alignElement({\n anchor: anchor,\n anchorAlign: anchorAlign,\n element: popup,\n elementAlign: popupAlign,\n offset: offset,\n margin: margin,\n positionMode: positionMode,\n scale: scale\n });\n var position = positionElement({\n anchor: anchor,\n anchorAlign: anchorAlign,\n element: popup,\n elementAlign: popupAlign,\n collisions: collision,\n currentLocation: alignedOffset,\n margin: _this.props.margin\n });\n popup.style.top = position.offset.top + 'px';\n popup.style.left = position.offset.left + 'px';\n _this._collisions = {\n fit: position.fit,\n fitted: position.fitted,\n flip: position.flip,\n flipped: position.flipped\n };\n if (_this.props.onPosition) {\n var event_1 = {\n target: _this,\n flipped: position.flipped,\n fitted: position.fitted\n };\n _this.props.onPosition.call(undefined, event_1);\n }\n };\n _this.onOpened = function () {\n var element = _this._popup;\n if (!element) {\n return;\n }\n if (_this.props.show) {\n element.classList.add(ANIMATION_CONTAINER_SHOWN);\n }\n _this.attachRepositionHandlers(element);\n if (_this.props.onOpen) {\n _this.props.onOpen.call(undefined, { target: _this });\n }\n };\n _this.animate = function (element, type, callback) {\n if (!_this.props.popupAlign) {\n return;\n }\n var animationDirection;\n var _a = _this.props.popupAlign, horizontal = _a.horizontal, vertical = _a.vertical;\n if (horizontal === 'left' && vertical === 'center') {\n animationDirection = 'right';\n }\n else if (horizontal === 'right' && vertical === 'center') {\n animationDirection = 'left';\n }\n else if (vertical === 'top') {\n animationDirection = 'down';\n }\n else {\n animationDirection = 'up';\n }\n var flipPositions = {\n down: 'up',\n up: 'down',\n left: 'right',\n right: 'left'\n };\n if (_this._collisions && _this._collisions.flipped) {\n animationDirection = flipPositions[animationDirection];\n }\n slide(element, animationDirection, _this.animationDuration[type], type, callback);\n };\n _this.onClosing = function (popup) {\n if (!_this.props.show) {\n popup.classList.remove(ANIMATION_CONTAINER_SHOWN);\n }\n _this.detachRepositionHandlers();\n };\n _this.onClosed = function () {\n if (_this.state.current === Status.hiding && _this.state.previous === Status.shown) {\n _this.setState({ current: Status.hidden, previous: _this.state.current });\n }\n if (_this.props.onClose) {\n _this.props.onClose.call(undefined, { target: _this });\n }\n };\n _this.getCurrentZIndex = function () {\n return _this.context ? _this.context + ZINDEX_POPUP_STEP : DEFAULT_POPUP_ZINDEX;\n };\n validatePackage(packageMetadata);\n _this.reposition = throttle(_this.reposition.bind(_this), FRAME_DURATION);\n return _this;\n }\n /**\n * @hidden\n */\n PopupWithoutContext.getDerivedStateFromProps = function (props, state) {\n var show = props.show, anchor = props.anchor, anchorAlign = props.anchorAlign, appendTo = props.appendTo, collision = props.collision, popupAlign = props.popupAlign, className = props.className, popupClass = props.popupClass, style = props.style, offset = props.offset, contentKey = props.contentKey;\n var nextState = __assign({}, state, { props: {\n show: show, anchor: anchor, anchorAlign: anchorAlign, appendTo: appendTo, collision: collision, popupAlign: popupAlign, className: className, popupClass: popupClass, style: style, offset: offset, contentKey: contentKey\n } });\n if (props.show) {\n if (state.current === Status.hidden || state.current === Status.hiding) {\n return __assign({}, nextState, { current: Status.showing, previous: state.current });\n }\n if (state.current === Status.showing) {\n return __assign({}, nextState, { current: Status.shown, previous: state.current });\n }\n if (state.current === Status.shown &&\n (!isEquivalent(offset, state.props.offset) ||\n !isEquivalent(anchorAlign, state.props.anchorAlign) ||\n !isEquivalent(appendTo, state.props.appendTo) ||\n !isEquivalent(collision, state.props.collision) ||\n !isEquivalent(popupAlign, state.props.popupAlign) ||\n !isEquivalent(style, state.props.style) ||\n anchor !== state.props.anchor ||\n popupClass !== state.props.popupClass ||\n className !== state.props.className)) {\n return __assign({}, nextState, { current: Status.reposition, previous: state.current });\n }\n return nextState;\n }\n if (state.current === Status.hiding || state.current === Status.hidden) {\n return __assign({}, nextState, { current: Status.hidden, previous: state.current });\n }\n return __assign({}, nextState, { current: Status.hiding, previous: state.current });\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.current === Status.showing && this._popup) {\n this.show(this._popup);\n }\n else if (this.state.current === Status.hiding && this._popup) {\n this.onClosing(this._popup);\n this.animate(this._popup.firstChild, 'exit', this.onClosed);\n }\n else if (this.state.current === Status.reposition && this.state.previous === Status.shown) {\n this.setState({ current: Status.shown, previous: this.state.current });\n }\n else if (this.state.current === Status.shown &&\n prevProps.contentKey !== this.props.contentKey && this._popup) {\n this.setPosition(this._popup);\n }\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.componentDidMount = function () {\n if (this.state.current === Status.showing && this._popup) {\n this.show(this._popup);\n }\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.componentWillUnmount = function () {\n this.detachRepositionHandlers();\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, className = _a.className, popupClass = _a.popupClass, show = _a.show, id = _a.id, positionMode = _a.positionMode;\n var appendTo = this.props.appendTo ?\n this.props.appendTo :\n canUseDOM ?\n (this.props.anchor && this.props.anchor.ownerDocument ? this.props.anchor.ownerDocument.body : document.body)\n : undefined;\n if (this.state.current === Status.reposition && this.state.previous === Status.shown && this._popup) {\n this.setPosition(this._popup);\n }\n var style = Object.assign({}, { position: positionMode, top: 0, left: -10000 }, this.props.style || {});\n var closing = this.state.current === Status.hiding;\n if ((show || closing) && appendTo) {\n var currentZIndex = this.getCurrentZIndex();\n var popupElement = (React.createElement(ZIndexContext.Provider, { value: currentZIndex },\n React.createElement(\"div\", { className: classNames(ANIMATION_CONTAINER, ANIMATION_CONTAINER_RELATIVE, className), id: id, ref: function (e) { return _this._popup = e; }, style: __assign({ zIndex: currentZIndex }, style) },\n React.createElement(\"div\", { className: classNames(K_POPUP, popupClass, ANIMATION_CONTAINER_CHILD), style: { transitionDelay: '0ms' } }, children))));\n return ReactDOM.createPortal(popupElement, appendTo);\n }\n return null;\n };\n Object.defineProperty(PopupWithoutContext.prototype, \"animationDuration\", {\n get: function () {\n var animate = this.props.animate;\n var enter = 0;\n var exit = 0;\n if (animate) {\n if (animate === true) {\n enter = exit = 300;\n }\n else {\n enter = animate.openDuration || 0;\n exit = animate.closeDuration || 0;\n }\n }\n return { enter: enter, exit: exit };\n },\n enumerable: true,\n configurable: true\n });\n PopupWithoutContext.prototype.attachRepositionHandlers = function (element) {\n var _this = this;\n this.detachRepositionHandlers();\n this._scrollableParents = domUtils.scrollableParents(this.props.anchor || element);\n this._scrollableParents.map(function (p) { return p.addEventListener('scroll', _this.reposition); });\n window.addEventListener('resize', this.reposition);\n };\n PopupWithoutContext.prototype.detachRepositionHandlers = function () {\n var _this = this;\n if (this._scrollableParents) {\n this._scrollableParents.map(function (p) { return p.removeEventListener('scroll', _this.reposition); });\n this._scrollableParents = undefined;\n }\n window.removeEventListener('resize', this.reposition);\n };\n PopupWithoutContext.prototype.reposition = function () {\n this.setState({ current: Status.reposition, previous: this.state.current });\n };\n /**\n * @hidden\n */\n PopupWithoutContext.propTypes = {\n anchor: function (props) {\n var anchor = props.anchor;\n if (anchor && typeof anchor.nodeType !== 'number') {\n return new Error('Invalid prop `anchor` supplied to `Kendo React Popup`. Validation failed.');\n }\n return null;\n },\n appendTo: function (props) {\n var element = props.appendTo;\n if (element && typeof element.nodeType !== 'number') {\n return new Error('Invalid prop `appendTo` supplied to `Kendo React Popup`. Validation failed.');\n }\n return null;\n },\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.object\n ]),\n id: PropTypes.string,\n popupClass: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.object\n ]),\n collision: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n CollisionEnum.fit,\n CollisionEnum.flip,\n CollisionEnum.none\n ]),\n vertical: PropTypes.oneOf([\n CollisionEnum.fit,\n CollisionEnum.flip,\n CollisionEnum.none\n ])\n }),\n anchorAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n AlignPoint.left,\n AlignPoint.center,\n AlignPoint.right\n ]),\n vertical: PropTypes.oneOf([\n AlignPoint.top,\n AlignPoint.center,\n AlignPoint.bottom\n ])\n }),\n popupAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n AlignPoint.left,\n AlignPoint.center,\n AlignPoint.right\n ]),\n vertical: PropTypes.oneOf([\n AlignPoint.top,\n AlignPoint.center,\n AlignPoint.bottom\n ])\n }),\n offset: PropTypes.shape({\n left: PropTypes.number,\n top: PropTypes.number\n }),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node\n ]),\n show: PropTypes.bool,\n animate: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })\n ]),\n margin: PropTypes.shape({\n horizontal: PropTypes.number,\n vertical: PropTypes.number\n }),\n positionMode: PropTypes.oneOf([\n 'fixed',\n 'absolute'\n ]),\n scale: PropTypes.number,\n style: PropTypes.object,\n onClose: PropTypes.func,\n onPosition: PropTypes.func,\n onOpen: PropTypes.func\n };\n /**\n * @hidden\n */\n PopupWithoutContext.defaultProps = {\n collision: {\n horizontal: CollisionEnum.fit,\n vertical: CollisionEnum.flip\n },\n anchorAlign: {\n horizontal: AlignPoint.left,\n vertical: AlignPoint.bottom\n },\n popupAlign: {\n horizontal: AlignPoint.left,\n vertical: AlignPoint.top\n },\n offset: DEFAULT_OFFSET,\n animate: true,\n show: false,\n margin: {\n horizontal: 0,\n vertical: 0\n },\n positionMode: 'absolute'\n };\n /**\n * @hidden\n */\n PopupWithoutContext.contextType = ZIndexContext;\n /**\n * @hidden\n */\n PopupWithoutContext.displayName = 'PopupComponent';\n return PopupWithoutContext;\n}(React.Component));\nexport { PopupWithoutContext };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { PopupWithoutContext } from './PopupWithoutContext';\n/**\n * The PopupPropsContext. It allows to configure the Popup props from a wrapper component.\n *\n * @example\n * ```jsx-no-run\n * <PopupPropsContext.Provider value={props => ({ ...props, appendTo: document.querySelector('myPopupsContainer') })}>\n * <DropDownList />\n * <Editor />\n * </PopupPropsContext.Provider>\n * ```\n */\nexport var PopupPropsContext = React.createContext(function (props) { return props; });\n/**\n * The KendoReact Popup component.\n */\nexport var Popup = React.forwardRef(function (props, ref) {\n var contextPropsCallback = React.useContext(PopupPropsContext);\n var popupProps = contextPropsCallback.call(undefined, props);\n return (React.createElement(PopupWithoutContext, __assign({ ref: ref }, popupProps)));\n});\nPopup.displayName = 'Popup';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\n/**\n * @hidden\n */\nvar ListContainer = /** @class */ (function (_super) {\n __extends(ListContainer, _super);\n function ListContainer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListContainer.prototype.render = function () {\n var _a = this.props, children = _a.children, width = _a.width, dir = _a.dir, itemsCount = _a.itemsCount, popupSettings = _a.popupSettings;\n return (React.createElement(Popup, __assign({ style: { width: width, direction: dir }, contentKey: itemsCount && itemsCount.join() }, popupSettings), children));\n };\n return ListContainer;\n}(React.Component));\nexport default ListContainer;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar ListFilter = /** @class */ (function (_super) {\n __extends(ListFilter, _super);\n function ListFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListFilter.prototype.render = function () {\n var _this = this;\n return (React.createElement(\"span\", { className: \"k-list-filter\" },\n React.createElement(\"input\", { ref: function (input) { return _this.input = input; }, value: this.props.value || '', className: \"k-textbox\", onChange: this.props.onChange, onKeyDown: this.props.onKeyDown }),\n React.createElement(\"span\", { className: \"k-icon k-i-search\" })));\n };\n return ListFilter;\n}(React.Component));\nexport default ListFilter;\n","/**\n * @hidden\n */\nvar isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nvar sameCharsOnly = function (word, character) {\n for (var idx = 0; idx < word.length; idx++) {\n if (word.charAt(idx) !== character) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nvar shuffleData = function (data, splitIndex, defaultItem) {\n var result = data;\n if (defaultItem) {\n result = [defaultItem].concat(result);\n }\n return result.slice(splitIndex).concat(result.slice(0, splitIndex));\n};\n/**\n * @hidden\n */\nvar matchText = function (text, word, ignoreCase) {\n if (!isPresent(text)) {\n return false;\n }\n var temp = String(text);\n if (ignoreCase) {\n temp = temp.toLowerCase();\n }\n return temp.indexOf(word) === 0;\n};\n/**\n * @hidden\n */\nvar scrollToItem = function (scrollElem, list, itemIndex, translate, virtualScroll) {\n var viewportHeight = scrollElem.offsetHeight;\n var li = list.children.item(itemIndex);\n var itemOffsetTop = li.offsetTop + (virtualScroll ? translate - scrollElem.scrollTop : 0);\n var itemHeight = li.offsetHeight;\n if (virtualScroll) {\n var diff = 0;\n if (itemOffsetTop + itemHeight > viewportHeight) {\n diff = itemOffsetTop + itemHeight - viewportHeight;\n }\n else if (itemOffsetTop < 0) {\n diff = itemOffsetTop;\n }\n if (diff !== 0) {\n scrollElem.scrollTop += diff;\n }\n else if (scrollElem.scrollTop === 0 && translate !== 0) {\n scrollElem.scrollTop = translate;\n }\n }\n else {\n if (itemOffsetTop + itemHeight > viewportHeight + scrollElem.scrollTop) {\n scrollElem.scrollTop = (itemOffsetTop + itemHeight - viewportHeight);\n }\n else if (itemOffsetTop < scrollElem.scrollTop) {\n scrollElem.scrollTop -= scrollElem.scrollTop - itemOffsetTop;\n }\n }\n};\n/**\n * @hidden\n */\nvar itemIndexStartsWith = function (items, text, field) {\n var result = -1;\n if (text) {\n text = text.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n var itemText = (getItemValue(items[i], field) || '') + '';\n if (itemText && itemText.toLowerCase().startsWith(text)) {\n result = i;\n break;\n }\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nvar getItemIndexByText = function (data, text, textField, matchCase) {\n if (matchCase === void 0) { matchCase = false; }\n var casing = function (value) { return matchCase ? value : value.toLowerCase(); };\n return data.findIndex(function (item) {\n return textField ? casing(getItemValue(item, textField)) === casing(text) :\n casing(text) === casing(item.toString());\n });\n};\n/**\n * @hidden\n */\nvar getItemValue = function (item, field) {\n if (field && isPresent(item)) {\n var path = field.split('.');\n var data_1 = item;\n path.forEach(function (p) {\n data_1 = data_1 ? data_1[p] : undefined;\n });\n return data_1;\n }\n return item;\n};\n/**\n * @hidden\n */\nvar matchDataCollections = function (data1, data2, key) {\n if (data1 === void 0) { data1 = []; }\n if (data2 === void 0) { data2 = []; }\n if (data1 === data2) {\n return true;\n }\n if (data1.length !== data2.length) {\n return false;\n }\n for (var i = 0; i < data1.length; i++) {\n if (!areSame(data1[i], data2[i], key)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nvar removeDataItems = function (items, toRemove, key) {\n toRemove.forEach(function (item) {\n var itemIndex = items.findIndex(function (i) { return areSame(i, item, key); });\n if (itemIndex !== -1) {\n items.splice(itemIndex, 1);\n }\n });\n};\n/**\n * @hidden\n */\nvar areSame = function (item1, item2, key) {\n return item1 === item2 ||\n (isPresent(item1) === isPresent(item2) && getItemValue(item1, key) === getItemValue(item2, key));\n};\n/**\n * @hidden\n */\nvar getFocusedItem = function (data, value, textField) {\n if (value) {\n var selectedIndex = getItemIndexByText(data, value, textField, true);\n return selectedIndex !== -1 ? data[selectedIndex] : data[itemIndexStartsWith(data, value, textField)];\n }\n return data[0];\n};\n/**\n * @hidden\n */\nvar suggestValue = function (value, data, textField) {\n if (data === void 0) { data = []; }\n var suggested = '';\n if (value) {\n var suggestedItem = data[itemIndexStartsWith(data, value, textField)];\n if (suggestedItem) {\n var suggestedText = getItemValue(suggestedItem, textField);\n if (value.toLowerCase() !== suggestedText.toLowerCase()) {\n suggested = suggestedText.substring(value.length);\n }\n }\n }\n return suggested;\n};\n/**\n * @hidden\n */\nvar preventDefaultNonInputs = function (event) {\n if (event.target.nodeName !== 'INPUT') {\n event.preventDefault();\n }\n};\n/**\n * @hidden\n */\nvar matchTags = function (tag1, tag2, key) {\n if (!!tag1 !== !!tag2 || tag1.text !== tag2.text) {\n return false;\n }\n return tag1 === tag2 || matchDataCollections(tag1.data, tag2.data, key);\n};\nexport { isPresent, sameCharsOnly, shuffleData, matchText, scrollToItem, itemIndexStartsWith, getItemIndexByText, getItemValue, matchDataCollections, removeDataItems, areSame, getFocusedItem, preventDefaultNonInputs, suggestValue, matchTags };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils';\nvar preventDefault = function (e) { return e.preventDefault(); };\n/**\n * @hidden\n */\nvar ListDefaultItem = /** @class */ (function (_super) {\n __extends(ListDefaultItem, _super);\n function ListDefaultItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListDefaultItem.prototype.render = function () {\n var _a = this.props, selected = _a.selected, defaultItem = _a.defaultItem, textField = _a.textField;\n return (React.createElement(\"div\", { onClick: this.props.onClick, onMouseDown: preventDefault, className: classNames('k-list-optionlabel', {\n 'k-state-selected': selected\n }) }, getItemValue(defaultItem, textField) || ''));\n };\n return ListDefaultItem;\n}(React.Component));\nexport default ListDefaultItem;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n */\nvar ListItem = /** @class */ (function (_super) {\n __extends(ListItem, _super);\n function ListItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleClick = function (e) { return _this.props.onClick(_this.props.index, e); };\n return _this;\n }\n ListItem.prototype.render = function () {\n var _a = this.props, selected = _a.selected, group = _a.group, dataItem = _a.dataItem, renderer = _a.render;\n var item = (React.createElement(\"li\", { id: this.props.id, role: \"option\", \"aria-selected\": selected, className: classNames('k-item', {\n 'k-state-selected': selected,\n 'k-state-focused': this.props.focused,\n 'k-first': Boolean(group)\n }), onClick: this.handleClick },\n getItemValue(dataItem, this.props.textField).toString(),\n group !== undefined ? React.createElement(\"div\", { className: \"k-group\" }, group) : null));\n return renderer !== undefined ? renderer.call(undefined, item, this.props) : item;\n };\n return ListItem;\n}(React.Component));\nexport default ListItem;\n","var _a;\n/**\n * @hidden\n */\nexport var nodata = 'dropdowns.nodata';\n/**\n * @hidden\n */\nexport var clear = 'dropdowns.clear';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[clear] = 'clear',\n _a[nodata] = 'NO DATA FOUND.',\n _a);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport ListItem from './ListItem';\nimport { areSame, getItemValue } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, nodata } from '../messages';\n/**\n * @hidden\n */\nvar List = /** @class */ (function (_super) {\n __extends(List, _super);\n function List() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n List.prototype.renderItems = function () {\n var _this = this;\n var _a = this.props, textField = _a.textField, valueField = _a.valueField, groupField = _a.groupField, optionsGuid = _a.optionsGuid, _b = _a.skip, skip = _b === void 0 ? 0 : _b, focusedIndex = _a.focusedIndex, _c = _a.highlightSelected, highlightSelected = _c === void 0 ? true : _c, value = _a.value, data = _a.data, itemRender = _a.itemRender;\n var isArray = Array.isArray(value);\n return data.map(function (item, index) {\n var realIndex = skip + index;\n var selected = highlightSelected &&\n ((!isArray && areSame(item, value, valueField)) ||\n (isArray && value.findIndex(function (i) { return areSame(i, item, valueField); }) !== -1));\n var group = undefined;\n var current, previous;\n if (index > 0 && groupField !== undefined) {\n current = getItemValue(item, groupField);\n previous = getItemValue(data[index - 1], groupField);\n if (current && previous && current !== previous) {\n group = current;\n }\n }\n return (React.createElement(ListItem, { id: \"option-\" + optionsGuid + \"-\" + realIndex, dataItem: item, selected: selected, focused: focusedIndex === index, index: realIndex, key: realIndex, onClick: _this.props.onClick, textField: textField, group: group, render: itemRender }));\n });\n };\n List.prototype.renderNoValueElement = function (localizationService) {\n var noDataRender = this.props.noDataRender;\n var noDataElement = (React.createElement(\"div\", { className: 'k-nodata' },\n React.createElement(\"div\", null, localizationService.toLanguageString(nodata, messages[nodata]))));\n return noDataRender ?\n noDataRender.call(undefined, noDataElement) : noDataElement;\n };\n List.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var _a = this.props, id = _a.id, show = _a.show, wrapperCssClass = _a.wrapperCssClass, wrapperStyle = _a.wrapperStyle, listStyle = _a.listStyle, listRef = _a.listRef, wrapperRef = _a.wrapperRef, _b = _a.listClassName, listClassName = _b === void 0 ? 'k-list' : _b;\n var items = this.renderItems();\n return (items.length ? (React.createElement(\"div\", { className: wrapperCssClass, style: wrapperStyle, ref: wrapperRef, onMouseDown: this.props.onMouseDown, onBlur: this.props.onBlur, onScroll: this.props.onScroll, unselectable: \"on\" },\n React.createElement(\"ul\", { id: id, role: \"listbox\", \"aria-hidden\": !show ? true : undefined, className: listClassName + ' k-reset', ref: listRef, style: listStyle }, items))) : this.renderNoValueElement(localizationService));\n };\n return List;\n}(React.Component));\nexport default List;\nregisterForLocalization(List);\n","var maxHeightIE = 1533915;\n/**\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll() {\n var _this = this;\n this.containerHeight = 0;\n this.skip = 0;\n this.total = 0;\n this.enabled = false;\n this.pageSize = 0;\n this.itemHeight = 0;\n this.prevScrollPos = 0;\n this.listTranslate = 0;\n this.scrollSyncing = false;\n this.scrollerRef = function (element) {\n var vs = _this;\n vs.container = element;\n if (element) {\n element.setAttribute('unselectable', 'on');\n window.setTimeout(vs.calcScrollElementHeight.bind(vs), 0);\n }\n };\n this.calcScrollElementHeight = function () {\n _this.scrollSyncing = true;\n var heightChanged = false;\n _this.itemHeight = _this.list ? _this.list.children[0].offsetHeight : _this.itemHeight;\n _this.containerHeight = Math.min(maxHeightIE, _this.itemHeight * _this.total);\n var newHeight = _this.containerHeight;\n if (_this.scrollElement) {\n heightChanged = _this.scrollElement.style.height !== newHeight + 'px';\n if (heightChanged) {\n _this.scrollElement.style.height = newHeight + 'px';\n }\n }\n _this.scrollSyncing = false;\n return heightChanged;\n };\n this.scrollHandler = this.scrollHandler.bind(this);\n }\n Object.defineProperty(VirtualScroll.prototype, \"translate\", {\n get: function () {\n return this.listTranslate;\n },\n enumerable: true,\n configurable: true\n });\n VirtualScroll.prototype.changePage = function (skip, e) {\n var newSkip = Math.min(Math.max(0, skip), this.total - this.pageSize);\n if (newSkip !== this.skip) {\n this.PageChange({ skip: newSkip, take: this.pageSize }, e);\n }\n };\n VirtualScroll.prototype.translateTo = function (dY) {\n this.listTranslate = dY;\n if (this.list) {\n this.list.style.transform = 'translateY(' + dY + 'px)';\n }\n };\n VirtualScroll.prototype.reset = function () {\n if (this.container) {\n this.calcScrollElementHeight();\n this.container.scrollTop = 0;\n this.translateTo(0);\n }\n };\n VirtualScroll.prototype.scrollToEnd = function () {\n if (this.container && this.list) {\n this.calcScrollElementHeight();\n this.container.scrollTop = this.container.scrollHeight - this.container.offsetHeight;\n this.translateTo(this.container.scrollHeight - this.list.offsetHeight);\n }\n };\n VirtualScroll.prototype.localScrollUp = function (e) {\n var height = this.itemHeight;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.listTranslate;\n var items;\n var additionalOnTop = scrollTop - targetTranslate;\n if (additionalOnTop > height) {\n return;\n }\n for (items = 0; items < this.skip; items++) {\n if (targetTranslate + height + additionalOnTop <= scrollTop) {\n break;\n }\n targetTranslate -= height;\n }\n targetTranslate = this.validateTranslate(targetTranslate);\n if (this.skip - items <= 0 && targetTranslate >= scrollTop) {\n this.translateTo(0);\n this.changePage(0, e);\n this.container.scrollTop = 0;\n return;\n }\n if (targetTranslate !== this.listTranslate) {\n this.translateTo(targetTranslate);\n this.changePage(this.skip - items, e);\n }\n };\n VirtualScroll.prototype.localScrollDown = function (e) {\n var height = this.itemHeight;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.listTranslate;\n var itemsLenght = this.list.children.length;\n var items;\n for (items = 0; items < itemsLenght; items++) {\n if (targetTranslate + height >= scrollTop) {\n break;\n }\n targetTranslate += height;\n }\n targetTranslate = this.validateTranslate(targetTranslate);\n if (items >= itemsLenght && this.skip + items >= this.total) {\n this.translateTo(targetTranslate);\n this.changePage(this.total - 1, e);\n }\n else if (targetTranslate !== this.listTranslate) {\n this.translateTo(targetTranslate);\n this.changePage(this.skip + items, e);\n }\n };\n VirtualScroll.prototype.scrollNonStrict = function (e) {\n var floatItemIndex = this.total * this.prevScrollPos / (this.containerHeight);\n var itemIndex = Math.min(Math.floor(floatItemIndex), this.total - 1);\n var targetTranslate = this.containerHeight * floatItemIndex / this.total;\n targetTranslate = this.validateTranslate(targetTranslate);\n this.translateTo(targetTranslate);\n this.changePage(itemIndex, e);\n };\n VirtualScroll.prototype.scrollHandler = function (e) {\n var scrollTop = this.container ? this.container.scrollTop : 0;\n var prev = this.prevScrollPos;\n this.prevScrollPos = scrollTop;\n if (!this.enabled || !this.list || !this.container || this.scrollSyncing) {\n return;\n }\n if (scrollTop - prev <= 0 && scrollTop > this.listTranslate - this.list.scrollHeight / 10) {\n this.localScrollUp(e);\n }\n else if (scrollTop - prev > 0 && scrollTop < this.listTranslate + this.list.scrollHeight * 2 / 3) {\n this.localScrollDown(e);\n }\n else {\n this.scrollNonStrict(e);\n }\n };\n VirtualScroll.prototype.validateTranslate = function (translate) {\n translate = Math.max(0, translate);\n translate = Math.min(this.containerHeight - this.list.offsetHeight, translate);\n return translate;\n };\n return VirtualScroll;\n}());\nexport default VirtualScroll;\n","import { isPresent } from './utils';\nimport { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar Navigation = /** @class */ (function () {\n function Navigation() {\n }\n Navigation.prototype.navigate = function (args) {\n var keyCode = args.keyCode;\n if (keyCode === Keys.up || keyCode === Keys.left) {\n return this.next({ current: args.current, min: args.min, max: args.max, step: -1 });\n }\n else if (keyCode === Keys.down || keyCode === Keys.right) {\n return this.next({ current: args.current, min: args.min, max: args.max, step: 1 });\n }\n else if (keyCode === Keys.home) {\n return 0;\n }\n else if (keyCode === Keys.end) {\n return args.max;\n }\n };\n Navigation.prototype.next = function (args) {\n if (!isPresent(args.current)) {\n return args.min;\n }\n else {\n return Math.min(args.max, Math.max(args.current + args.step, args.min));\n }\n };\n return Navigation;\n}());\nexport { Navigation };\n","/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nexport var guid = function () {\n var id = '';\n var i;\n var random;\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += '-';\n }\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport VirtualScroll from './VirtualScroll';\nimport { Navigation } from './Navigation';\nimport { scrollToItem, areSame } from './utils';\nimport { guid } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DropDownBase = /** @class */ (function () {\n function DropDownBase(component) {\n var _this = this;\n this.vs = new VirtualScroll();\n this.navigation = new Navigation();\n this.handleItemClick = function (index, event) {\n var state = _this.initState();\n state.syntheticEvent = event;\n _this.component.handleItemSelect(index, state);\n _this.togglePopup(state);\n _this.applyState(state);\n };\n this.handleFocus = function (event) {\n if (!_this.component.state.focused) {\n var state = _this.initState();\n state.data.focused = true;\n state.events.push({ type: 'onFocus' });\n state.syntheticEvent = event;\n _this.applyState(state);\n }\n };\n this.filterChanged = function (text, state) {\n var _a = _this.component.props, textField = _a.textField, filterable = _a.filterable;\n if (filterable) {\n state.events.push({\n type: 'onFilterChange',\n filter: {\n field: textField,\n operator: 'contains',\n ignoreCase: true,\n value: text\n }\n });\n }\n };\n this.togglePopup = function (state) {\n var props = _this.component.props;\n var opened = props.opened !== undefined ? props.opened : _this.component.state.opened;\n if (props.opened === undefined) {\n state.data.opened = !opened;\n }\n if (opened) {\n state.events.push({ type: 'onClose' });\n }\n else {\n state.events.push({ type: 'onOpen' });\n _this.calculatePopupWidth();\n }\n };\n this.pageChange = function (page, syntheticEvent) {\n var state = _this.initState();\n state.syntheticEvent = syntheticEvent;\n _this.triggerOnPageChange(state, page.skip, page.take);\n _this.applyState(state);\n };\n this.scrollToVirtualItem = function (virtual, selectedItemIndex) {\n var vs = _this.vs;\n vs.enabled = false;\n if (virtual.skip === 0) {\n vs.reset();\n }\n else if (virtual.skip + virtual.pageSize === virtual.total) {\n vs.scrollToEnd();\n }\n else {\n var scrollTop = vs.translate;\n if (scrollTop === 0) {\n vs.calcScrollElementHeight();\n scrollTop = (vs.itemHeight * virtual.skip);\n vs.translateTo(scrollTop - vs.itemHeight);\n }\n if (vs.container) {\n vs.container.scrollTop = scrollTop;\n }\n _this.scrollToItem(selectedItemIndex, true);\n }\n window.setTimeout(function () { return vs.enabled = true; }, 10);\n };\n // Common rendering\n this.renderScrollWrapper = function (children, onScroll) {\n var popupSettings = _this.getPopupSettings();\n var vs = _this.vs;\n return vs.enabled ? (React.createElement(\"div\", { onScroll: function (e) {\n vs.scrollHandler(e);\n if (onScroll) {\n onScroll.call(undefined, e);\n }\n }, ref: vs.scrollerRef, style: {\n height: popupSettings.height,\n overflowY: 'scroll'\n } }, children)) :\n (children);\n };\n this.renderScrollElement = function () {\n var vs = _this.vs;\n return vs.enabled && (React.createElement(\"div\", { ref: function (element) { return vs.scrollElement = element; }, key: 'scrollElementKey' }));\n };\n this.listBoxId = guid();\n this.guid = guid();\n this.component = component;\n this.vs.PageChange = this.pageChange;\n }\n DropDownBase.prototype.didMount = function () {\n var props = this.component.props;\n var popupSettings = props.popupSettings || {};\n var style = props.style || {};\n var popupWidth = popupSettings.width;\n var shouldUpdate = props.opened === true;\n if (popupWidth === undefined) {\n this.calculatePopupWidth();\n }\n if (props.dir === undefined && style.direction === undefined) {\n this.calculateDir();\n shouldUpdate = true;\n }\n if (shouldUpdate) {\n this.component.forceUpdate();\n }\n };\n DropDownBase.prototype.calculateDir = function () {\n var element = this.component.element;\n if (element && element.ownerDocument && element.ownerDocument.defaultView) {\n this.dirCalculated = element.ownerDocument.defaultView.getComputedStyle(element).direction || undefined;\n }\n };\n DropDownBase.prototype.calculatePopupWidth = function () {\n if (this.wrapper) {\n this.popupWidth = this.wrapper.offsetWidth + 'px';\n }\n };\n DropDownBase.prototype.scrollToItem = function (itemIndex, vsEnabled) {\n var list = this.list || this.vs.list;\n if (list && itemIndex >= 0) {\n var vs = this.vs;\n var scrollElement = (vs.container || list.parentNode);\n var virtualScroll = vsEnabled !== undefined ? vsEnabled : vs.enabled;\n scrollToItem(scrollElement, list, itemIndex, vs.translate, virtualScroll);\n }\n };\n DropDownBase.prototype.initState = function () {\n var state = {\n data: {},\n events: [],\n syntheticEvent: undefined\n };\n return state;\n };\n DropDownBase.prototype.applyState = function (state) {\n var _this = this;\n if (Object.keys(state.data).length > 0) {\n this.component.setState(state.data);\n }\n var eventArgs = {\n syntheticEvent: state.syntheticEvent,\n nativeEvent: state.syntheticEvent ? state.syntheticEvent.nativeEvent : undefined,\n target: this.component,\n value: this.component.value\n };\n state.events.forEach(function (eventData) {\n var type = eventData.type;\n delete eventData.type;\n var handler = type && _this.component.props[type];\n if (handler) {\n handler.call(undefined, __assign({}, eventArgs, eventData));\n }\n });\n };\n DropDownBase.prototype.triggerOnPageChange = function (state, skip, take) {\n var virtual = this.component.props.virtual;\n if (virtual) {\n var newSkip = Math.min(Math.max(0, skip), Math.max(0, virtual.total - take));\n if (newSkip !== virtual.skip) {\n state.events.push({\n type: 'onPageChange',\n page: { skip: newSkip, take: take }\n });\n }\n }\n };\n DropDownBase.prototype.triggerPageChangeCornerItems = function (item, state) {\n var props = this.component.props;\n var _a = props.data, data = _a === void 0 ? [] : _a, dataItemKey = props.dataItemKey, virtual = props.virtual;\n var opened = props.opened !== undefined ? props.opened : this.component.state.opened;\n if (item && virtual && this.vs.enabled) {\n if (virtual.skip > 0 && areSame(item, data[0], dataItemKey)) {\n this.triggerOnPageChange(state, virtual.skip - 1, virtual.pageSize);\n }\n else if (!opened && virtual.skip + virtual.pageSize < virtual.total &&\n areSame(item, data[data.length - 1], dataItemKey)) {\n this.triggerOnPageChange(state, virtual.skip + 1, virtual.pageSize);\n }\n }\n };\n DropDownBase.prototype.getPopupSettings = function () {\n return Object\n .assign({}, DropDownBase.defaultProps.popupSettings, this.component.props.popupSettings);\n };\n DropDownBase.basicPropTypes = {\n opened: PropTypes.bool,\n disabled: PropTypes.bool,\n dir: PropTypes.string,\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n data: PropTypes.array,\n textField: PropTypes.string,\n className: PropTypes.string,\n label: PropTypes.string,\n loading: PropTypes.bool,\n popupSettings: PropTypes.shape({\n animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })]),\n popupClass: PropTypes.string,\n className: PropTypes.string,\n appendTo: PropTypes.any,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n }),\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n itemRender: PropTypes.func,\n listNoDataRender: PropTypes.func,\n focusedItemIndex: PropTypes.func,\n header: PropTypes.node,\n footer: PropTypes.node\n };\n DropDownBase.propTypes = __assign({}, DropDownBase.basicPropTypes, { value: PropTypes.any, defaultValue: PropTypes.any, filterable: PropTypes.bool, filter: PropTypes.string, virtual: PropTypes.shape({\n pageSize: PropTypes.number.isRequired,\n skip: PropTypes.number.isRequired,\n total: PropTypes.number.isRequired\n }), onFilterChange: PropTypes.func, onPageChange: PropTypes.func });\n DropDownBase.defaultProps = {\n popupSettings: {\n height: '200px'\n },\n required: false,\n validityStyles: true\n };\n return DropDownBase;\n}());\nexport default DropDownBase;\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-dropdowns',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642516308,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, getTabIndex, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport ListContainer from '../common/ListContainer';\nimport ListFilter from '../common/ListFilter';\nimport ListDefaultItem from '../common/ListDefaultItem';\nimport List from '../common/List';\nimport DropDownBase from '../common/DropDownBase';\nimport { isPresent, getItemValue, sameCharsOnly, shuffleData, matchText, areSame, preventDefaultNonInputs, getFocusedItem } from '../common/utils';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nvar VALIDATION_MESSAGE = 'Please select a value from the list!';\n/**\n * @hidden\n */\nvar DropDownListWithoutContext = /** @class */ (function (_super) {\n __extends(DropDownListWithoutContext, _super);\n function DropDownListWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {};\n _this.base = new DropDownBase(_this);\n _this.searchState = { word: '', last: '' };\n _this._skipFocusEvent = false;\n _this._filterInput = null;\n _this._navigated = false;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this.base.wrapper) {\n _this.base.wrapper.focus();\n }\n };\n /**\n * @hidden\n */\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual, dataItemKey = _a.dataItemKey, defaultItem = _a.defaultItem;\n var skip = virtual ? virtual.skip : 0;\n var item = (index === -1 && defaultItem !== undefined) ?\n defaultItem : data[index - skip];\n var newSelected = !areSame(item, _this.value, dataItemKey);\n _this.triggerOnChange(item, state);\n if (newSelected) {\n _this.base.triggerPageChangeCornerItems(item, state);\n }\n };\n _this.renderDropDownWrapper = function () {\n var _a = _this.props, dataItemKey = _a.dataItemKey, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, disabled = _a.disabled, tabIndex = _a.tabIndex, loading = _a.loading, iconClassName = _a.iconClassName, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, valueRender = _a.valueRender;\n var focused = _this.state.focused;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var value = _this.value;\n var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n var text = getItemValue(value, textField);\n var valueDefaultRendering = (React.createElement(\"span\", { className: \"k-input\" }, text));\n var valueElement = valueRender !== undefined ?\n valueRender.call(undefined, valueDefaultRendering, value) : valueDefaultRendering;\n return (React.createElement(\"span\", { ref: function (el) { return _this.base.wrapper = el; }, role: 'listbox', tabIndex: getTabIndex(tabIndex, disabled), accessKey: _this.props.accessKey, className: classNames('k-dropdown-wrap', {\n 'k-state-focused': focused,\n 'k-state-disabled': disabled\n }), onKeyDown: _this.handleKeyDown, onKeyPress: _this.handleKeyPress, onClick: disabled ? undefined : _this.handleWrapperClick, \"aria-disabled\": disabled || undefined, \"aria-haspopup\": true, \"aria-expanded\": opened || false, \"aria-owns\": _this.base.listBoxId, \"aria-activedescendant\": opened ? ('option-' + _this.base.guid + '-' + (selectedIndex + virtual.skip)) : undefined, \"aria-label\": _this.props.label, \"aria-labelledby\": _this.props.ariaLabelledBy, \"aria-describedby\": _this.props.ariaDescribedBy, id: _this.props.id, title: _this.props.title },\n valueElement,\n React.createElement(\"span\", { className: \"k-select\" },\n React.createElement(\"span\", { className: classNames('k-icon', iconClassName, {\n 'k-i-arrow-s': !loading && !iconClassName,\n 'k-i-loading': loading && !iconClassName\n }) })),\n _this.dummySelect(value)));\n };\n _this.dummySelect = function (value) {\n /* Dummy component to support forms */\n return (React.createElement(\"select\", { name: _this.props.name, ref: function (el) { _this._select = el; }, tabIndex: -1, \"aria-hidden\": true, title: _this.props.label, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' } },\n React.createElement(\"option\", { value: _this.props.valueMap ? _this.props.valueMap.call(undefined, value) : value })));\n };\n _this.renderListContainer = function () {\n var _a = _this.props, header = _a.header, footer = _a.footer, dir = _a.dir, _b = _a.data, data = _b === void 0 ? [] : _b;\n var base = _this.base;\n var popupSettings = base.getPopupSettings();\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var virtual = _this.props.virtual !== undefined;\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n var listContainerProps = {\n dir: dir !== undefined ? dir : base.dirCalculated,\n width: popupWidth,\n popupSettings: {\n popupClass: popupSettings.popupClass,\n className: classNames('k-list-container k-reset', popupSettings.className),\n animate: popupSettings.animate,\n anchor: _this.element,\n show: opened,\n onOpen: _this.onPopupOpened,\n onClose: _this.onPopupClosed,\n appendTo: popupSettings.appendTo\n },\n itemsCount: [data.length]\n };\n return (React.createElement(ListContainer, __assign({}, listContainerProps),\n _this.renderListFilter(),\n virtual && _this.renderDefaultItem(),\n virtual && header,\n _this.base.renderScrollWrapper(React.createElement(React.Fragment, null,\n !virtual && _this.renderDefaultItem(),\n !virtual && header,\n _this.renderList(),\n !virtual && footer,\n _this.base.renderScrollElement())),\n virtual && footer));\n };\n _this.renderList = function () {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender;\n var vs = _this.base.vs;\n var skip = virtual.skip;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var popupSettings = _this.base.getPopupSettings();\n var translate = \"translateY(\" + vs.translate + \"px)\";\n return (React.createElement(List, { id: _this.base.listBoxId, show: opened, data: data.slice(), focusedIndex: _this.focusedIndex(), value: _this.value, textField: textField, valueField: dataItemKey, optionsGuid: _this.base.guid, listRef: function (list) { return vs.list = _this.base.list = list; }, wrapperStyle: !vs.enabled ?\n { maxHeight: popupSettings.height } : { float: 'left', width: '100%' }, wrapperCssClass: !vs.enabled ? 'k-list-scroller' : undefined, listStyle: vs.enabled ?\n { transform: translate } : undefined, key: \"listkey\", skip: skip, onClick: _this.handleItemClick, itemRender: itemRender, noDataRender: listNoDataRender }));\n };\n _this.renderListFilter = function () {\n var filterText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n return _this.props.filterable && (React.createElement(ListFilter, { value: filterText, ref: function (filter) { return _this._filterInput = filter && filter.input; }, onChange: _this.handleListFilterChange, onKeyDown: _this.handleKeyDown }));\n };\n _this.renderDefaultItem = function () {\n var _a = _this.props, textField = _a.textField, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey;\n return defaultItem !== undefined && (React.createElement(ListDefaultItem, { defaultItem: defaultItem, textField: textField, selected: areSame(_this.value, defaultItem, dataItemKey), key: \"defaultitemkey\", onClick: _this.handleDefaultItemClick }));\n };\n _this.search = function (event) {\n clearTimeout(_this._typingTimeout);\n if (!_this.props.filterable) {\n _this._typingTimeout = window.setTimeout(function () { return _this.searchState.word = ''; }, _this.props.delay);\n _this.selectNext(event);\n }\n };\n _this.selectNext = function (event) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n var mappedData = data.map(function (item, idx) {\n return { item: item, itemIndex: idx };\n });\n var word = _this.searchState.word;\n var last = _this.searchState.last;\n var isInLoop = sameCharsOnly(word, last);\n var dataLength = mappedData.length;\n var startIndex = Math.max(0, data.findIndex(function (i) { return areSame(i, _this.value, dataItemKey); }));\n var defaultItem;\n if (_this.props.defaultItem) {\n defaultItem = { item: _this.props.defaultItem, itemIndex: -1 };\n dataLength += 1;\n startIndex += 1;\n }\n startIndex += isInLoop ? 1 : 0;\n mappedData = shuffleData(mappedData, startIndex, defaultItem);\n var text, loopMatch, nextMatch, index = 0;\n var _c = _this.props, textField = _c.textField, ignoreCase = _c.ignoreCase;\n for (; index < dataLength; index++) {\n text = getItemValue(mappedData[index].item, textField);\n loopMatch = isInLoop && matchText(text, last, ignoreCase);\n nextMatch = matchText(text, word, ignoreCase);\n if (loopMatch || nextMatch) {\n index = mappedData[index].itemIndex;\n break;\n }\n }\n if (index !== dataLength) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n _this.handleItemSelect(index, state);\n _this.applyState(state);\n _this._valueDuringOnChange = undefined;\n }\n };\n _this.handleKeyDown = function (event) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, filterable = _a.filterable, disabled = _a.disabled, _c = _a.leftRightKeysNavigation, leftRightKeysNavigation = _c === void 0 ? true : _c, _d = _a.virtual, virtual = _d === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _d;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var keyCode = event.keyCode;\n var homeOrEndKeys = keyCode === Keys.home || keyCode === Keys.end;\n var upOrDownKeys = keyCode === Keys.up || keyCode === Keys.down;\n var shouldOpen = !opened &&\n ((event.altKey && keyCode === Keys.down) || keyCode === Keys.enter || keyCode === Keys.space);\n var shouldClose = opened && ((event.altKey && keyCode === Keys.up) || keyCode === Keys.esc);\n var leftOrRightKeys = leftRightKeysNavigation && (keyCode === Keys.left || keyCode === Keys.right);\n var shouldNavigate = upOrDownKeys || (!filterable && (leftOrRightKeys || homeOrEndKeys));\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (disabled) {\n return;\n }\n else if (homeOrEndKeys && _this.base.vs.enabled) {\n if (keyCode === Keys.home) {\n if (virtual.skip !== 0) {\n _this.base.triggerOnPageChange(state, 0, virtual.pageSize);\n _this._navigated = true;\n }\n else {\n _this.triggerOnChange(data[0], state);\n }\n }\n else {\n if (virtual.skip < virtual.total - virtual.pageSize) {\n _this.base.triggerOnPageChange(state, virtual.total - virtual.pageSize, virtual.pageSize);\n _this._navigated = true;\n }\n else {\n _this.triggerOnChange(data[data.length - 1], state);\n }\n }\n }\n else if (opened && keyCode === Keys.enter) {\n var focusedIndex = _this.focusedIndex();\n if (focusedIndex !== undefined) {\n _this.handleItemSelect(focusedIndex, state);\n }\n _this.base.togglePopup(state);\n event.preventDefault();\n }\n else if (shouldOpen || shouldClose) {\n _this.base.togglePopup(state);\n event.preventDefault();\n }\n else if (shouldNavigate) {\n _this.onNavigate(state, keyCode);\n event.preventDefault();\n }\n _this.applyState(state);\n };\n _this.handleItemClick = function (index, event) {\n _this.base.handleItemClick(index, event);\n _this._valueDuringOnChange = undefined;\n };\n _this.handleFocus = function (event) {\n if (_this._skipFocusEvent) {\n return;\n }\n _this.base.handleFocus(event);\n };\n _this.handleBlur = function (event) {\n if (_this._skipFocusEvent || !_this.state.focused) {\n return;\n }\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n state.data.focused = false;\n state.events.push({ type: 'onBlur' });\n if (opened) {\n _this.base.togglePopup(state);\n }\n _this.applyState(state);\n };\n _this.handleDefaultItemClick = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n _this.base.togglePopup(state);\n _this.triggerOnChange(_this.props.defaultItem, state);\n _this.applyState(state);\n };\n _this.handleWrapperClick = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (!_this.state.focused) {\n state.data.focused = true;\n }\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n _this.handleKeyPress = function (event) {\n if (_this.props.filterable || event.which === 0 || event.keyCode === Keys.enter) {\n return;\n }\n var character = String.fromCharCode(event.charCode || event.keyCode);\n if (_this.props.ignoreCase) {\n character = character.toLowerCase();\n }\n if (character === ' ') {\n event.preventDefault();\n }\n _this.searchState = {\n word: _this.searchState.word + character,\n last: _this.searchState.last + character\n };\n _this.search(event);\n };\n _this.handleListFilterChange = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (_this.props.filter === undefined) {\n state.data.text = event.target.value;\n }\n _this.base.filterChanged(event.target.value, state);\n _this.applyState(state);\n };\n _this.onPopupOpened = function () {\n if (_this._filterInput) {\n _this.focusElement(_this._filterInput);\n }\n };\n _this.onPopupClosed = function () {\n if (_this.state.focused) {\n window.setTimeout(function () {\n if (_this.state.focused && _this.base.wrapper) {\n _this.focusElement(_this.base.wrapper);\n }\n });\n }\n };\n _this.setValidity = function () {\n if (_this._select && _this._select.setCustomValidity) {\n _this._select.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(DropDownListWithoutContext.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"actionElement\", {\n /**\n * @hidden\n */\n get: function () {\n return this.base.wrapper;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"value\", {\n /**\n * The value of the DropDownList.\n */\n get: function () {\n var value;\n if (this._valueDuringOnChange !== undefined) {\n value = this._valueDuringOnChange;\n }\n else if (this.props.value !== undefined) {\n value = this.props.value;\n }\n else if (this.state.value !== undefined) {\n value = this.state.value;\n }\n else if (this.props.defaultValue !== undefined) {\n value = this.props.defaultValue;\n }\n if (!isPresent(value) && this.props.defaultItem !== undefined) {\n value = this.props.defaultItem;\n }\n return value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"index\", {\n /**\n * The index of the selected item.\n */\n get: function () {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n var value = this.value;\n // TO DO: deprecate it!\n return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the DropDownList.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DropDownList is set.\n */\n get: function () {\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required\n || (this.value !== null && this.value !== '' && this.value !== undefined));\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"validityStyles\", {\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DropDownListWithoutContext.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DropDownListWithoutContext.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n DropDownListWithoutContext.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n var opening = !prevOpened && opened;\n var closing = prevOpened && !opened;\n if (!this.base.getPopupSettings().animate) {\n if (opening) {\n this.onPopupOpened();\n }\n else if (closing) {\n // this.onPopupClosed();\n }\n }\n if (virtual && virtual.total !== prevTotal) {\n this.base.vs.calcScrollElementHeight();\n this.base.vs.reset();\n }\n else {\n var selectedItem_1 = this.value;\n var prevSelectedItem = prevProps.value !== undefined ? prevProps.value : prevState.value;\n var selectedItemIndex = data.findIndex(function (i) { return areSame(i, selectedItem_1, dataItemKey); });\n var selectedItemChanged = !areSame(prevSelectedItem, selectedItem_1, dataItemKey);\n if (opening && virtual) {\n this.base.scrollToVirtualItem(virtual, selectedItemIndex);\n }\n else if (opening && !virtual) {\n this.base.scrollToItem(selectedItemIndex);\n }\n else if (opened && prevOpened && selectedItem_1 && selectedItemChanged && !this._navigated) {\n this.base.scrollToItem(selectedItemIndex);\n }\n else if (opened && prevOpened && this._navigated) {\n if (this._navigated && virtual && virtual.skip === 0) {\n this.base.vs.reset();\n }\n else if (this._navigated && virtual && virtual.skip === virtual.total - virtual.pageSize) {\n this.base.vs.scrollToEnd();\n }\n }\n }\n this._navigated = false;\n this.setValidity();\n };\n /**\n * @hidden\n */\n DropDownListWithoutContext.prototype.componentDidMount = function () {\n this.base.didMount();\n this.setValidity();\n };\n /**\n * @hidden\n */\n DropDownListWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, style = _a.style, className = _a.className, label = _a.label, dir = _a.dir, virtual = _a.virtual;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var text = getItemValue(this.value, this.props.textField);\n var isValid = !this.validityStyles || this.validity.valid;\n var base = this.base;\n var vs = base.vs;\n vs.enabled = virtual !== undefined;\n if (virtual !== undefined) {\n base.vs.skip = virtual.skip;\n base.vs.total = virtual.total;\n base.vs.pageSize = virtual.pageSize;\n }\n var dropdownlist = (React.createElement(\"span\", { ref: function (dropdown) { return _this._element = dropdown; }, className: classNames('k-widget k-dropdown', {\n 'k-state-invalid': !isValid\n }, className), style: !label\n ? style\n : __assign({}, style, { width: undefined }), dir: dir, onMouseDown: opened ? preventDefaultNonInputs : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur },\n this.renderDropDownWrapper(),\n this.renderListContainer()));\n return label ? (React.createElement(FloatingLabel, { label: label, editorValue: text, editorValid: isValid, editorDisabled: this.props.disabled, style: { width: style ? style.width : undefined }, children: dropdownlist })) : dropdownlist;\n };\n /**\n * @hidden\n */\n DropDownListWithoutContext.prototype.onNavigate = function (state, keyCode) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _c;\n var vs = this.base.vs;\n var value = this.value;\n var index = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n var newIndex = this.base.navigation.navigate({\n current: virtual.skip + index,\n max: (vs.enabled ? virtual.total : data.length) - 1,\n min: defaultItem !== undefined ? -1 : 0,\n keyCode: keyCode\n });\n if (newIndex !== undefined) {\n this.handleItemSelect(newIndex, state);\n }\n this.applyState(state);\n };\n DropDownListWithoutContext.prototype.focusedIndex = function () {\n var filterText = isPresent(this.props.filter) ? this.props.filter : this.state.text;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, dataItemKey = _a.dataItemKey, textField = _a.textField, focusedItemIndex = _a.focusedItemIndex;\n var value = this.value;\n var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n var hasSelected = !(selectedIndex < 0 && !this.props.defaultItem);\n if (!hasSelected && filterText && virtual.skip === 0) {\n return focusedItemIndex ? focusedItemIndex(data, filterText, textField) :\n data.indexOf(getFocusedItem(data, filterText, textField));\n }\n else {\n return !hasSelected && virtual.skip === 0 ? 0 : undefined;\n }\n };\n DropDownListWithoutContext.prototype.focusElement = function (element) {\n var _this = this;\n this._skipFocusEvent = true;\n element.focus();\n window.setTimeout(function () { return _this._skipFocusEvent = false; }, 30);\n };\n DropDownListWithoutContext.prototype.triggerOnChange = function (item, state) {\n if (areSame(this.value, item, this.props.dataItemKey)) {\n return;\n }\n if (this.props.value === undefined) {\n state.data.value = item;\n }\n this._valueDuringOnChange = item;\n state.events.push({ type: 'onChange' });\n };\n DropDownListWithoutContext.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueDuringOnChange = undefined;\n };\n DropDownListWithoutContext.displayName = 'DropDownList';\n /**\n * @hidden\n */\n DropDownListWithoutContext.propTypes = __assign({ delay: PropTypes.number, ignoreCase: PropTypes.bool, iconClassName: PropTypes.string, defaultItem: PropTypes.any, valueRender: PropTypes.func, valueMap: PropTypes.func, validationMessage: PropTypes.string, required: PropTypes.bool, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string, leftRightKeysNavigation: PropTypes.bool, title: PropTypes.string }, DropDownBase.propTypes);\n /**\n * @hidden\n */\n DropDownListWithoutContext.defaultProps = __assign({ delay: 500, tabIndex: 0, ignoreCase: true }, DropDownBase.defaultProps, { required: false });\n return DropDownListWithoutContext;\n}(React.Component));\nexport { DropDownListWithoutContext };\n/**\n * Represents the PropsContext of the `DropDownList` component.\n * Used for global configuration of all `DropDownList` instances.\n *\n * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.\n */\nexport var DropDownListPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact DropDownList component]({% slug overview_dropdownlist %}).\n *\n * Accepts properties of type [DropDownListProps]({% slug api_dropdowns_dropdownlistprops %}).\n * Obtaining the `ref` returns an object of type [DropDownListHandle]({% slug api_dropdowns_dropdownlisthandle %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * dropdownlist = null;\n * render() {\n * return (\n * <div>\n * <DropDownList\n * data={[ \"Albania\", \"Andorra\", \"Austria\", \"Belarus\" ]}\n * ref={component => this.dropdownlist = component}\n * />\n * <button onClick={() => alert(this.dropdownlist.value)}>alert value</button>\n * </div>\n * );\n * }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var DropDownList = withPropsContext(DropDownListPropsContext, DropDownListWithoutContext);\nDropDownList.displayName = 'KendoReactDropDownList';\n","import * as React from 'react';\nimport { GlobalizationContext } from '../globalization/GlobalizationContext';\n/**\n * A custom [React Hook](https://reactjs.org/docs/hooks-intro.html) providing access to an [IntlService]({% slug api_intl_intlservice %}).\n */\nexport var useInternationalization = function () { return React.useContext(GlobalizationContext).intl; };\n","import * as React from 'react';\nimport { GlobalizationContext } from '../globalization/GlobalizationContext';\n/**\n * A custom [React Hook](https://reactjs.org/docs/hooks-intro.html) providing access to an [LocalizationService]({% slug api_intl_localizationservice %}).\n */\nexport var useLocalization = function () { return React.useContext(GlobalizationContext).localization; };\n","/**\n * @hidden\n * Dispatches a new event based on an event that was already internally dispatched to KendoReact users.\n *\n * @param eventHandler - The public event handler that is assigned by the user.\n * When undefined, the method is not an option.\n * @param dispatchedEvent - The event that was already dispatched internally.\n * @param target - The target component of the new event.\n * @param eventData - The additional data that will be passed through the new event.\n * When the new event has no additional data\n * other than the `BaseEvent` arguments, pass `undefined`.\n */\nexport function dispatchEvent(eventHandler, dispatchedEvent, target, eventData) {\n if (eventHandler) {\n var eventBaseData = {\n syntheticEvent: dispatchedEvent,\n nativeEvent: dispatchedEvent.nativeEvent,\n target: target\n };\n eventHandler.call(undefined, Object.assign(eventBaseData, eventData));\n }\n}\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-inputs',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642516355,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var _a;\n/**\n * @hidden\n */\nexport var numericIncreaseValue = 'numerictextbox.increment';\n/**\n * @hidden\n */\nexport var numericDecreaseValue = 'numerictextbox.decrement';\n/**\n * @hidden\n */\nexport var sliderIncreaseValue = 'slider.increment';\n/**\n * @hidden\n */\nexport var sliderDecreaseValue = 'slider.decrement';\n/**\n * @hidden\n */\nexport var sliderDragTitle = 'slider.dragTitle';\n/**\n * @hidden\n */\nexport var colorGradientR = 'colorGradient.r';\n/**\n * @hidden\n */\nexport var colorGradientG = 'colorGradient.g';\n/**\n * @hidden\n */\nexport var colorGradientB = 'colorGradient.b';\n/**\n * @hidden\n */\nexport var colorGradientA = 'colorGradient.a';\n/**\n * @hidden\n */\nexport var colorGradientHex = 'colorGradient.hex';\n/**\n * @hidden\n */\nexport var colorGradientContrastRatio = 'colorGradient.contrastRatio';\n/**\n * @hidden\n */\nexport var colorGradientAALevel = 'colorGradient.colorGradientAALevel';\n/**\n * @hidden\n */\nexport var colorGradientAAALevel = 'colorGradient.colorGradientAAALevel';\n/**\n * @hidden\n */\nexport var colorGradientPass = 'colorGradient.colorGradientPass';\n/**\n * @hidden\n */\nexport var colorGradientFail = 'colorGradient.colorGradientFail';\n/**\n * @hidden\n */\nexport var flatColorPickerCancelBtn = 'flatColorPicker.cancelBtn';\n/**\n * @hidden\n */\nexport var flatColorPickerApplyBtn = 'flatColorPicker.applyBtn';\n/**\n * @hidden\n */\nexport var checkboxValidation = 'checkbox.validation';\n/**\n * @hidden\n */\nexport var checkboxOptionalText = 'checkbox.optionalText';\n/**\n * @hidden\n */\nexport var radioButtonValidation = 'radioButton.validation';\n/**\n * @hidden\n */\nexport var switchValidation = 'switch.validation';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[numericIncreaseValue] = 'Increase value',\n _a[numericDecreaseValue] = 'Decrease value',\n _a[sliderIncreaseValue] = 'Increase',\n _a[sliderDecreaseValue] = 'Decrease',\n _a[sliderDragTitle] = 'Drag',\n _a[colorGradientR] = 'r',\n _a[colorGradientG] = 'g',\n _a[colorGradientB] = 'b',\n _a[colorGradientA] = 'a',\n _a[colorGradientHex] = 'hex',\n _a[colorGradientContrastRatio] = 'Contrast ratio',\n _a[colorGradientAALevel] = 'AA',\n _a[colorGradientAAALevel] = 'AAA',\n _a[colorGradientPass] = 'Pass',\n _a[colorGradientFail] = 'Fail',\n _a[flatColorPickerCancelBtn] = 'Cancel',\n _a[flatColorPickerApplyBtn] = 'Apply',\n _a[checkboxValidation] = 'Please check this box if you want to proceed!',\n _a[checkboxOptionalText] = '(Optional)',\n _a[radioButtonValidation] = 'Please select option if you want to proceed!',\n _a[switchValidation] = 'Please turn on if you want to proceed!',\n _a);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar DEFAULT_NUMBER = 1111111.1111111;\nvar MAX_DECIMAL = 0.31111111111111117;\nvar MIN_DECIMAL = 1;\nvar ONE_NUMBER = 1;\nvar ZERO_NUMBER = 0;\nvar DIGITS_REGEX = /\\d/;\nvar MAX_PRECISION = 15;\n/**\n * @hidden\n */\nexport var getInitialState = function () { return ({\n eventValue: null,\n prevLooseValue: '',\n currentLooseValue: '',\n focused: false,\n selectionStart: undefined,\n selectionEnd: undefined,\n decimalSelect: false,\n valueIsCorrected: false,\n valueIsOutOfRange: false\n}); };\n/**\n * @hidden\n */\nexport var getStateOrPropsValue = function (value, stateValue) {\n return value !== undefined ? value : stateValue;\n};\n/**\n * @hidden\n */\nexport var formatValue = function (value, format, intlService) {\n if (value === null && value === undefined) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n return intlService.formatNumber(value, format);\n};\n/**\n * @hidden\n */\nexport var fractionLength = function (value) {\n return (String(value).split('.')[1] || '').length;\n};\n/**\n * @hidden\n */\nvar maxFractionLength = function (value1, value2) {\n return Math.max(fractionLength(value1), fractionLength(value2));\n};\n/**\n * @hidden\n */\nexport var limitPrecision = function (precision) { return Math.min(precision, MAX_PRECISION); };\n/**\n * @hidden\n */\nexport var toFixedPrecision = function (value, precision) {\n var maxPrecision = limitPrecision(precision);\n return parseFloat(value.toFixed(maxPrecision));\n};\n/**\n * @hidden\n */\nexport var increaseValue = function (value, newState, step, min, max, format, intlService) {\n var maxPrecision = maxFractionLength(value || 0, step || 0);\n var increasedValue = rangeValue(toFixedPrecision((value || 0) + (step || 0), maxPrecision), min, max);\n newState.eventValue = increasedValue;\n newState.currentLooseValue = formatValue(increasedValue, format, intlService);\n newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var decreaseValue = function (value, newState, step, min, max, format, intlService) {\n var maxPrecision = maxFractionLength(value || 0, step || 0);\n var decreasedValue = rangeValue(toFixedPrecision((value || 0) - (step || 0), maxPrecision), min, max);\n newState.eventValue = decreasedValue;\n newState.currentLooseValue = formatValue(decreasedValue, format, intlService);\n newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var rangeValue = function (value, min, max) {\n if (value == null) {\n return value;\n }\n if (!(value > 1 || value < 1 || value === 1)) {\n // null, undefined or NaN\n return null;\n }\n if (max !== undefined && min !== undefined && max < min) {\n return null;\n }\n if (max !== undefined && value > max) {\n value = max;\n }\n if (min !== undefined && value < min) {\n value = min;\n }\n return value;\n};\n/**\n * @hidden\n */\nexport var getMaxCursorPosition = function (nextValue, formatInfo) {\n var formatSuffixIndex = formatInfo.findIndex(function (_a) {\n var _ = _a[0], currSuffix = _a[1];\n return Boolean(currSuffix) && nextValue.indexOf(currSuffix) === nextValue.length - currSuffix.length;\n });\n if (formatSuffixIndex === -1) {\n return -1;\n }\n var suffix = formatInfo[formatSuffixIndex][1];\n return nextValue.length - suffix.length;\n};\n/**\n * @hidden\n */\nexport var getMinCursorPosition = function (nextValue, formatInfo) {\n var formatPrefixIndex = formatInfo.findIndex(function (_a) {\n var currPrefix = _a[0], _ = _a[1];\n return Boolean(currPrefix) && nextValue.indexOf(currPrefix) === 0;\n });\n if (formatPrefixIndex === -1) {\n return -1;\n }\n var prefix = formatInfo[formatPrefixIndex][0];\n return prefix.length;\n};\n/**\n * @hidden\n */\nexport var rangeSelection = function (nextLooseValue, formatInfo, newState) {\n var maxPosition = getMaxCursorPosition(nextLooseValue, formatInfo);\n if (maxPosition !== -1 && newState.selectionStart > maxPosition) {\n newState.selectionStart = newState.selectionEnd = maxPosition;\n return;\n }\n if (newState.selectionStart > nextLooseValue.length) {\n newState.selectionStart = newState.selectionEnd = nextLooseValue.length;\n }\n var minPosition = getMinCursorPosition(nextLooseValue, formatInfo);\n if (minPosition !== -1 && newState.selectionStart < minPosition) {\n newState.selectionStart = newState.selectionEnd = minPosition;\n }\n if (newState.selectionStart === -1) {\n newState.selectionStart = newState.selectionEnd = 0;\n }\n};\n/**\n * @hidden\n */\nexport var setSelection = function (newState, newIndex, nextLooseValue, formatInfo) {\n newState.selectionStart = newState.selectionEnd = newIndex;\n rangeSelection(nextLooseValue, formatInfo, newState);\n};\n/**\n * @hidden\n */\nexport var setInvalid = function (newState, format, formatInfo, intlService) {\n newState.eventValue = intlService.parseNumber(newState.prevLooseValue, format);\n newState.currentLooseValue = newState.prevLooseValue;\n newState.valueIsCorrected = true;\n setSelection(newState, newState.selectionStart, newState.currentLooseValue, formatInfo);\n};\n/**\n * @hidden\n */\nexport var isMinusSymbolAdded = function (newState, symbols) {\n var newText = String(newState.currentLooseValue);\n var oldText = String(newState.prevLooseValue);\n return (newText.split(symbols.minusSign).length !== oldText.split(symbols.minusSign).length &&\n newText.length === oldText.length + symbols.minusSign.length);\n};\n/**\n * @hidden\n */\nexport var isMinusSymbolRemoved = function (newState, symbols) {\n var newText = String(newState.currentLooseValue);\n var oldText = String(newState.prevLooseValue);\n return (newText.indexOf(symbols.minusSign) === -1 && oldText.indexOf(symbols.minusSign) !== -1);\n};\n/**\n * @hidden\n */\nexport var isDecimalDuplicated = function (newState, symbols) {\n var newText = String(newState.currentLooseValue);\n return newText.split(symbols.decimal).length > 2;\n};\n/**\n * @hidden\n */\nexport var getFormatPrefixSufix = function (format, intlService) {\n var positiveResult = intlService.formatNumber(DEFAULT_NUMBER, format);\n var negativeResult = intlService.formatNumber(-DEFAULT_NUMBER, format);\n var zeroResult = intlService.formatNumber(ZERO_NUMBER, format);\n var oneResult = intlService.formatNumber(ONE_NUMBER, format);\n var positivePrefix = getPrefix(positiveResult);\n var negativePrefix = getPrefix(negativeResult);\n var zeroPrefix = getPrefix(zeroResult);\n var onePrefix = getPrefix(oneResult);\n var positiveSuffix = getSuffix(positiveResult);\n var negativeSuffix = getSuffix(negativeResult);\n var zeroSuffix = getSuffix(zeroResult);\n var oneSuffix = getSuffix(oneResult);\n return {\n positiveInfo: [positivePrefix, positiveSuffix],\n negativeInfo: [negativePrefix, negativeSuffix],\n zeroInfo: [zeroPrefix, zeroSuffix],\n oneInfo: [onePrefix, oneSuffix]\n };\n};\n/**\n * @hidden\n */\nexport var getFormatSymbols = function (format, intlService) {\n var positiveResult = intlService.formatNumber(DEFAULT_NUMBER, format);\n var negativeResult = intlService.formatNumber(-DEFAULT_NUMBER, format);\n var zeroResult = intlService.formatNumber(ZERO_NUMBER, format);\n var oneResult = intlService.formatNumber(ONE_NUMBER, format);\n var symbols = intlService.numberSymbols();\n var sanitizeRegex = new RegExp(\"[\\\\d\\\\\" + symbols.decimal + symbols.group + \"]\", 'g');\n var resultWithDuplicates = [positiveResult, negativeResult, zeroResult, oneResult]\n .map(function (result) { return result.replace(sanitizeRegex, ''); })\n .join('');\n return resultWithDuplicates\n .split('')\n .filter(function (x, n, s) { return s.indexOf(x) === n; })\n .join('');\n};\n/**\n * @hidden\n */\nexport var getInitialPosition = function (nextLooseValue, symbols) {\n var decimalIdex = nextLooseValue.indexOf(symbols.decimal);\n if (decimalIdex > -1) {\n return decimalIdex;\n }\n return getLastNumberIndex(nextLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var reverseString = function (str) {\n return str.split('').reverse().join('');\n};\n/**\n * @hidden\n */\nexport var getLastNumberIndex = function (currentLooseValue, inputRegex) {\n return currentLooseValue.length - reverseString(currentLooseValue).search(inputRegex);\n};\n/**\n * @hidden\n */\nexport var getPrefix = function (str) {\n return str.split(str[str.search(DIGITS_REGEX)])[0];\n};\n/**\n * @hidden\n */\nexport var getSuffix = function (str) {\n var reversedString = reverseString(str);\n return reverseString(reversedString.split(reversedString[reversedString.search(DIGITS_REGEX)])[0]);\n};\n/**\n * @hidden\n */\nexport var getFirstNumberIndex = function (prevLooseValue, inputRegex) {\n return prevLooseValue.search(inputRegex);\n};\n/**\n * @hidden\n */\nexport var getDecimalCount = function (value, decimal) {\n var currentDecimalPlace = value.indexOf(decimal);\n return currentDecimalPlace > -1 ? value.length - currentDecimalPlace - 1 : 0;\n};\n/**\n * @hidden\n */\nexport var changeBasedSelection = function (currentValue, nextValue, selectionPosition, isDelete, sanitizeRegex) {\n var isCurrentLeadingZero = currentValue.replace(sanitizeRegex, '')[0] === '0';\n var isNextLeadingZero = nextValue.replace(sanitizeRegex, '')[0] === '0';\n if (isCurrentLeadingZero && !isNextLeadingZero) {\n return selectionPosition - 1;\n }\n if (isNextLeadingZero && isDelete) {\n return selectionPosition + 1;\n }\n var numberCounter = 0;\n for (var idx = 0; idx < selectionPosition; idx++) {\n if (DIGITS_REGEX.test(currentValue.charAt(idx))) {\n numberCounter++;\n }\n }\n var newSelection = 0;\n while (numberCounter > 0 && nextValue.length > newSelection) {\n if (DIGITS_REGEX.test(nextValue.charAt(newSelection))) {\n numberCounter--;\n }\n newSelection++;\n }\n return newSelection;\n};\n/**\n * @hidden\n */\nexport var sanitizeNumber = function (state, format, intlService) {\n var newState = __assign({}, state);\n var prevLooseValue = newState.prevLooseValue;\n var symbols = intlService.numberSymbols();\n var restrictedSymbols = getFormatSymbols(format, intlService);\n var currentLooseValueAsString = String(newState.currentLooseValue);\n var prevLooseValueAsString = String(prevLooseValue);\n var sanitizeRegex = new RegExp(\"[^\\\\d\\\\\" + symbols.decimal + \"]\", 'g');\n var sanitizeGroupRegex = new RegExp(\"[^\\\\d\\\\\" + symbols.decimal + \"\\\\\" + symbols.group + \"]\", 'g');\n var allSymbolsRegex = new RegExp(\"[\\\\d\\\\\" + symbols.decimal + \"\\\\\" + symbols.group + \"]\");\n var sanitizedString = currentLooseValueAsString.replace(sanitizeRegex, '');\n var numberStart = getFirstNumberIndex(currentLooseValueAsString, DIGITS_REGEX);\n var numberEnd = numberStart === -1 ? -1 : getLastNumberIndex(currentLooseValueAsString, DIGITS_REGEX);\n var decimalIndex = currentLooseValueAsString.indexOf(symbols.decimal);\n var sanitizedFormattedString = (currentLooseValueAsString.substring(0, numberStart) +\n currentLooseValueAsString.substring(numberStart, numberEnd).replace(sanitizeGroupRegex, '') +\n currentLooseValueAsString.substring(numberEnd, currentLooseValueAsString.length))\n .split('')\n .filter(function (s) { return restrictedSymbols.indexOf(s) !== -1 || s.search(allSymbolsRegex) !== -1; })\n .join('');\n var formattedMax = intlService.formatNumber(MAX_DECIMAL, format).replace(sanitizeRegex, '');\n var maxDecimalIndex = formattedMax.indexOf(symbols.decimal);\n var maxDecimalCount = maxDecimalIndex > -1 ? formattedMax.length - maxDecimalIndex - 1 : 0;\n var formattedMin = intlService.formatNumber(MIN_DECIMAL, format).replace(sanitizeRegex, '');\n var minDecimalIndex = formattedMin.indexOf(symbols.decimal);\n var minDecimalCount = minDecimalIndex > -1 ? formattedMin.length - minDecimalIndex - 1 : 0;\n var _a = getFormatPrefixSufix(format, intlService), positiveInfo = _a.positiveInfo, negativeInfo = _a.negativeInfo, zeroInfo = _a.zeroInfo, oneInfo = _a.oneInfo;\n var formatInfo = [positiveInfo, negativeInfo, zeroInfo, oneInfo];\n var isFormatContainPrefixSuffix = formatInfo.findIndex(function (info) { return info.findIndex(function (nestedInfo) { return Boolean(nestedInfo); }) !== -1; }) !== 1;\n var isDelete = currentLooseValueAsString.length > 0 && currentLooseValueAsString.length < prevLooseValueAsString.length;\n var isPercentFormat = format &&\n format[0] === 'p' &&\n currentLooseValueAsString &&\n currentLooseValueAsString.indexOf(symbols.percentSign) === -1;\n if (!newState.isPaste) {\n // 1. Empty input\n if (currentLooseValueAsString === '') {\n newState.eventValue = null;\n newState.currentLooseValue = '';\n return newState;\n }\n // 2. Check is minus sign\n if (newState.currentLooseValue === symbols.minusSign && intlService.formatNumber(-0, format) !== prevLooseValueAsString) {\n newState.eventValue = -0;\n newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n setSelection(newState, getInitialPosition(newState.currentLooseValue, symbols), newState.currentLooseValue, formatInfo);\n return newState;\n }\n // 3. Minus sign toggle\n if (isMinusSymbolAdded(newState, symbols)) {\n var nextValue = intlService.parseNumber(prevLooseValue, format);\n newState.eventValue = -(nextValue !== null ? nextValue : 0);\n newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n var currentNumberStart = getFirstNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n var oldNumberStart = getFirstNumberIndex(prevLooseValueAsString, DIGITS_REGEX);\n setSelection(newState, newState.selectionEnd - 1 + (currentNumberStart - oldNumberStart), newState.currentLooseValue, formatInfo);\n return newState;\n }\n if (isMinusSymbolRemoved(newState, symbols)) {\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n setSelection(newState, newState.selectionStart, newState.currentLooseValue, formatInfo);\n return newState;\n }\n // 4. Check is decimal symbol\n if (newState.currentLooseValue === symbols.decimal) {\n newState.eventValue = 0;\n var valueCandidate = formatValue(newState.eventValue, format, intlService);\n if (minDecimalCount === 0 && maxDecimalCount > 0) {\n var currentLastNumberIndex = getLastNumberIndex(valueCandidate, DIGITS_REGEX);\n newState.currentLooseValue = valueCandidate.substring(0, currentLastNumberIndex) +\n symbols.decimal +\n valueCandidate.substring(currentLastNumberIndex);\n }\n else {\n newState.currentLooseValue = valueCandidate;\n }\n setSelection(newState, getInitialPosition(newState.currentLooseValue, symbols) + 1, newState.currentLooseValue, formatInfo);\n return newState;\n }\n // 5. Duplicate decimal - it's possible only as trailing\n if (isDecimalDuplicated(newState, symbols)) {\n setInvalid(newState, format, formatInfo, intlService);\n return newState;\n }\n // 6. Percent format\n if (isPercentFormat) {\n newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format) / 100;\n newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n return newState;\n }\n // 7. More than 15 numeric symbols\n var numericSymbols = String(newState.currentLooseValue).replace(/[^\\d]/g, '');\n if (numericSymbols.length > MAX_PRECISION) {\n setInvalid(newState, format, formatInfo, intlService);\n return newState;\n }\n // 8. Check prefix / suffix for modifications\n if (sanitizedString !== currentLooseValueAsString &&\n currentLooseValueAsString &&\n isFormatContainPrefixSuffix) {\n var formatInfoIndex = formatInfo.findIndex(function (_a) {\n var prefix = _a[0], suffix = _a[1];\n var prefixIndex = currentLooseValueAsString.indexOf(prefix);\n var suffixIndex = currentLooseValueAsString.indexOf(suffix);\n var prefixFound = prefixIndex === 0;\n var suffixFound = suffixIndex === currentLooseValueAsString.length - suffix.length;\n var prefixGap = prefixIndex + prefix.length !== numberStart &&\n numberStart !== -1 &&\n currentLooseValueAsString[prefixIndex + prefix.length] !== symbols.decimal;\n var suffixGap = suffixIndex !== numberEnd &&\n numberEnd !== -1 &&\n currentLooseValueAsString[suffixIndex - 1] !== symbols.decimal;\n if (prefix && suffix) {\n if (prefixGap || suffixGap) {\n return false;\n }\n return prefixFound && suffixFound;\n }\n if (prefix) {\n if (prefixGap) {\n return false;\n }\n return prefixFound;\n }\n if (suffix) {\n if (suffixGap) {\n return false;\n }\n return suffixFound;\n }\n return false;\n });\n if (formatInfoIndex === -1) {\n setInvalid(newState, format, formatInfo, intlService);\n return newState;\n }\n }\n // 9. Value ending on decimal separator (here as decimal might be typed inside format)\n if (sanitizedString[sanitizedString.length - 1] === symbols.decimal && maxDecimalCount > 0) {\n newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format);\n newState.currentLooseValue = sanitizedFormattedString;\n return newState;\n }\n // 10. prevent deleting decimal and group symbols\n if (newState.currentLooseValue && prevLooseValue) {\n var isSpecialSymbolDeleted = (restrictedSymbols + symbols.decimal + symbols.group)\n .split('')\n .findIndex(function (s) {\n if (currentLooseValueAsString.split('').filter(function (x) { return x === s; }).length <\n prevLooseValueAsString.split('').filter(function (x) { return x === s; }).length &&\n currentLooseValueAsString.length + 1 === prevLooseValueAsString.length) {\n if (s === symbols.decimal &&\n getDecimalCount(prevLooseValueAsString.replace(sanitizeRegex, ''), symbols.decimal) === 0) {\n return false;\n }\n return true;\n }\n return false;\n }) > -1;\n if (isSpecialSymbolDeleted) {\n newState.eventValue = intlService.parseNumber(state.prevLooseValue, format);\n newState.currentLooseValue = state.prevLooseValue;\n return newState;\n }\n }\n var currentDecimalCount = getDecimalCount(sanitizedString, symbols.decimal);\n var endsOnDecimal = sanitizedString[sanitizedString.length - 1] === '0';\n // 11. Deleting more decimals than allowed\n if (isDelete && endsOnDecimal && currentDecimalCount < minDecimalCount) {\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n return newState;\n }\n // 12. Ending on zero OR more decimals than allowed\n if (currentDecimalCount > 0) {\n var valueUntillDecimal = currentLooseValueAsString.substring(0, decimalIndex);\n if (endsOnDecimal && (!valueUntillDecimal || prevLooseValueAsString.indexOf(valueUntillDecimal) !== 0)) {\n // ending on zero but typing before decimal separator\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n var nextLooseValue = formatValue(newState.eventValue, format, intlService);\n setSelection(newState, changeBasedSelection(currentLooseValueAsString, nextLooseValue, newState.selectionEnd, isDelete, sanitizeRegex), nextLooseValue, formatInfo);\n newState.currentLooseValue = nextLooseValue;\n return newState;\n }\n if (currentDecimalCount > maxDecimalCount) {\n // typing more symbols than format allows\n var looseDecimalPlace = currentLooseValueAsString.indexOf(symbols.decimal);\n var result = currentLooseValueAsString.substring(0, looseDecimalPlace) +\n currentLooseValueAsString.substring(looseDecimalPlace, looseDecimalPlace + 1 + maxDecimalCount) +\n currentLooseValueAsString.substring(numberEnd, String(newState.currentLooseValue).length);\n newState.eventValue = intlService.parseNumber(result, format);\n newState.currentLooseValue = result;\n setSelection(newState, newState.selectionStart, result, formatInfo);\n return newState;\n }\n if (minDecimalCount !== maxDecimalCount && currentDecimalCount <= maxDecimalCount && endsOnDecimal) {\n // adding trailing zeroes\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n newState.currentLooseValue = sanitizedFormattedString;\n return newState;\n }\n if (currentDecimalCount < minDecimalCount) {\n // deleting more decimals than allowed\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n return newState;\n }\n }\n }\n // X. All other values should be parsed\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n if (isPercentFormat) {\n newState.eventValue = newState.eventValue / 100;\n }\n if (typeof newState.eventValue === 'number') {\n var nextLooseValue = formatValue(newState.eventValue, format, intlService);\n // First digit add\n if (currentLooseValueAsString.length === 1) {\n setSelection(newState, getInitialPosition(nextLooseValue, symbols), nextLooseValue, formatInfo);\n }\n else {\n setSelection(newState, changeBasedSelection(currentLooseValueAsString, nextLooseValue, newState.selectionEnd, isDelete, sanitizeRegex), nextLooseValue, formatInfo);\n }\n newState.currentLooseValue = nextLooseValue;\n }\n else {\n // Case when deleting last number\n newState.currentLooseValue = formatValue(intlService.parseNumber(sanitizedString), format, intlService);\n }\n return newState;\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { useInternationalization, useLocalization } from '@progress/kendo-react-intl';\nimport { classNames, guid, getTabIndex, dispatchEvent, createPropsContext, usePropsContext } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { numericIncreaseValue, messages, numericDecreaseValue } from '../messages';\nimport { formatValue, sanitizeNumber, rangeValue, increaseValue, decreaseValue, getStateOrPropsValue, getInitialState } from './utils';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n/**\n * Represents the PropsContext of the `NumericTextBox` component.\n * Used for global configuration of all `NumericTextBox` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var NumericTextBoxPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact NumericTextBox component]({% slug overview_numerictextbox %}).\n */\nexport var NumericTextBox = React.forwardRef(function (directProps, target) {\n validatePackage(packageMetadata);\n var props = usePropsContext(NumericTextBoxPropsContext, directProps);\n var calculatedId = React.useMemo(function () { return guid(); }, []);\n var inputId = props.id || calculatedId;\n var intlService = useInternationalization();\n var localizationService = useLocalization();\n var elementRef = React.useRef(null);\n var elementWrapperRef = React.useRef(null);\n var valueDuringChangeRef = React.useRef();\n var _a = React.useState(false), forceUpdate = _a[0], setForceUpdate = _a[1];\n var stateRef = React.useRef(getInitialState());\n var isPasteRef = React.useRef(false);\n var prevLooseValueRef = React.useRef();\n var stateValueRef = React.useRef(props.defaultValue);\n var looseValue = formatValue(stateRef.current.focused && !props.disabled ?\n stateRef.current.currentLooseValue :\n getStateOrPropsValue(props.value, stateValueRef.current), props.format, intlService);\n prevLooseValueRef.current = looseValue;\n React.useEffect(function () {\n if (elementRef.current && elementRef.current.setCustomValidity) {\n elementRef.current.setCustomValidity(validityGetter().valid\n ? ''\n : props.validationMessage || VALIDATION_MESSAGE);\n }\n });\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n var valueGetter = React.useCallback(function () {\n if (valueDuringChangeRef.current !== undefined) {\n return valueDuringChangeRef.current;\n }\n else {\n return getStateOrPropsValue(props.value, stateValueRef.current);\n }\n }, [props.value]);\n var nameGetter = React.useCallback(function () {\n return props.name;\n }, [props.name]);\n var requiredGetter = React.useCallback(function () {\n return props.required;\n }, [props.required]);\n var validityGetter = React.useCallback(function () {\n var customError = props.validationMessage !== undefined;\n var currentValue = valueGetter();\n var valid = props.valid !== undefined ?\n props.valid :\n !stateRef.current.valueIsOutOfRange &&\n (!requiredGetter() || (currentValue !== null && currentValue !== undefined));\n return {\n customError: customError,\n valid: valid,\n valueMissing: currentValue === null || currentValue === undefined\n };\n }, [props.validationMessage, props.valid, valueGetter, requiredGetter]);\n var validityStylesGetter = React.useCallback(function () {\n return props.validityStyles;\n }, [props.validityStyles]);\n var propsGetter = React.useCallback(function () {\n return props;\n }, [props]);\n var getImperativeHandle = React.useCallback(function () {\n var options = {\n element: elementRef.current,\n focus: focusElement\n };\n Object.defineProperty(options, 'name', { get: nameGetter });\n Object.defineProperty(options, 'value', { get: valueGetter });\n Object.defineProperty(options, 'validity', { get: validityGetter });\n Object.defineProperty(options, 'validityStyles', { get: validityStylesGetter });\n Object.defineProperty(options, 'required', { get: requiredGetter });\n Object.defineProperty(options, 'props', { get: propsGetter });\n return options;\n }, [nameGetter, valueGetter, validityGetter, validityStylesGetter, requiredGetter, focusElement, propsGetter]);\n React.useImperativeHandle(target, getImperativeHandle);\n var getCurrentState = React.useCallback(function () {\n return {\n eventValue: getStateOrPropsValue(props.value, stateValueRef.current),\n prevLooseValue: prevLooseValueRef.current,\n currentLooseValue: elementRef.current.value,\n selectionStart: elementRef.current.selectionStart,\n selectionEnd: elementRef.current.selectionEnd,\n decimalSelect: false,\n valueIsCorrected: false,\n valueIsOutOfRange: false,\n isPaste: isPasteRef.current,\n focused: stateRef.current.focused\n };\n }, [props.value]);\n var triggerChange = React.useCallback(function (event, newState) {\n if (props.disabled) {\n return;\n }\n valueDuringChangeRef.current = newState.eventValue;\n stateValueRef.current = newState.eventValue;\n var formattedValue = formatValue(rangeValue(newState.eventValue, props.min, props.max), props.format, intlService);\n var rangedValue = rangeValue(intlService.parseNumber(formattedValue, props.format), props.min, props.max);\n if (rangedValue !== newState.eventValue) {\n newState.valueIsOutOfRange = true;\n newState.eventValue = rangedValue;\n stateValueRef.current = rangedValue;\n }\n if (newState.valueIsCorrected) {\n var wrapper_1 = elementWrapperRef.current;\n if (wrapper_1 && wrapper_1.className.indexOf('k-state-invalid') === -1) {\n wrapper_1.className += ' k-state-invalid';\n window.setTimeout(function () { return wrapper_1.className = wrapper_1.className.replace(' k-state-invalid', ''); }, 50);\n }\n }\n var shouldFireEvent = props.value !== newState.eventValue;\n if (shouldFireEvent) {\n dispatchEvent(props.onChange, event, getImperativeHandle(), { value: newState.eventValue });\n }\n valueDuringChangeRef.current = undefined;\n stateRef.current = newState;\n setForceUpdate(function (_x) { return !_x; });\n }, [props.value, props.onChange, props.disabled, setForceUpdate, getImperativeHandle]);\n var onChangeHandler = React.useCallback(function (event) {\n var stateCandidate = getCurrentState();\n isPasteRef.current = false;\n triggerChange(event, sanitizeNumber(stateCandidate, props.format, intlService));\n }, [props.format, props.onChange, intlService, triggerChange, getCurrentState]);\n var onKeyDown = React.useCallback(function (event) {\n var newState = getCurrentState();\n var currentValue = intlService.parseNumber(String(newState.currentLooseValue), props.format);\n // Select All\n if (newState.selectionEnd > newState.selectionStart &&\n newState.selectionEnd - newState.selectionStart === String(newState.currentLooseValue).length) {\n isPasteRef.current = true;\n return;\n }\n switch (event.keyCode) {\n case 38:\n // Arrow up\n increaseValue(currentValue, newState, props.step, props.min, props.max, props.format, intlService);\n break;\n case 40:\n // Arrow down\n decreaseValue(currentValue, newState, props.step, props.min, props.max, props.format, intlService);\n break;\n case 13:\n // Enter - range values\n if (props.rangeOnEnter === false) {\n return;\n }\n var formattedValue = formatValue(rangeValue(currentValue, props.min, props.max), props.format, intlService);\n var rangedValue = rangeValue(intlService.parseNumber(formattedValue, props.format), props.min, props.max);\n newState.eventValue = rangedValue;\n newState.currentLooseValue = formatValue(rangedValue, props.format, intlService);\n newState.selectionStart = newState.selectionEnd = newState.currentLooseValue.length;\n break;\n case 110:\n // Numpad decimal key\n var element = elementRef.current;\n var symbols = intlService.numberSymbols();\n if (element) {\n newState.currentLooseValue = newState.currentLooseValue.slice(0, newState.selectionStart) +\n symbols.decimal +\n newState.currentLooseValue.slice(newState.selectionEnd);\n newState.selectionStart = newState.selectionEnd = newState.selectionStart + 1;\n newState = sanitizeNumber(newState, props.format, intlService);\n }\n break;\n default:\n return;\n }\n event.preventDefault();\n triggerChange(event, newState);\n }, [props.format, props.min, props.max, props.step, props.onChange, props.rangeOnEnter, triggerChange, getCurrentState]);\n var onPasteHandler = React.useCallback(function () {\n isPasteRef.current = true;\n }, []);\n var onIncrease = React.useCallback(function (event) {\n if (props.readOnly ||\n props.disabled) {\n return;\n }\n var newState = getCurrentState();\n increaseValue(intlService.parseNumber(String(newState.currentLooseValue), props.format), newState, props.step, props.min, props.max, props.format, intlService);\n triggerChange(event, newState);\n }, [props.format, props.min, props.max, props.step, props.onChange, props.readOnly, props.disabled, triggerChange, getCurrentState]);\n var onDecrease = React.useCallback(function (event) {\n if (props.readOnly ||\n props.disabled) {\n return;\n }\n var newState = getCurrentState();\n decreaseValue(intlService.parseNumber(String(newState.currentLooseValue), props.format), newState, props.step, props.min, props.max, props.format, intlService);\n triggerChange(event, newState);\n }, [props.format, props.min, props.max, props.step, props.onChange, props.readOnly, props.disabled, triggerChange, getCurrentState]);\n var onWheelHandler = React.useCallback(function (event) {\n if (!document ||\n document.activeElement !== elementRef.current ||\n !elementRef.current ||\n props.readOnly ||\n props.disabled) {\n return;\n }\n if (event.nativeEvent.deltaY < 0) {\n onIncrease(event);\n }\n if (event.nativeEvent.deltaY > 0) {\n onDecrease(event);\n }\n }, [onIncrease, onDecrease, props.disabled, props.readOnly]);\n var onFocus = React.useCallback(function (event) {\n stateRef.current.currentLooseValue = prevLooseValueRef.current;\n stateRef.current.focused = true;\n dispatchEvent(props.onFocus, event, getImperativeHandle(), {});\n setForceUpdate(function (x) { return !x; });\n }, [props.onFocus, setForceUpdate, getImperativeHandle]);\n var onBlur = React.useCallback(function (event) {\n stateRef.current = getInitialState();\n dispatchEvent(props.onBlur, event, getImperativeHandle(), {});\n setForceUpdate(function (x) { return !x; });\n }, [props.onBlur, setForceUpdate, getImperativeHandle]);\n var onMouseDown = React.useCallback(function (e) {\n if (document && elementRef.current) {\n e.preventDefault();\n if (document.activeElement !== elementRef.current) {\n elementRef.current.focus();\n }\n }\n }, []);\n React.useLayoutEffect(function () {\n if (elementRef.current && stateRef.current.selectionStart !== undefined && stateRef.current.selectionEnd !== undefined) {\n elementRef.current.selectionStart = stateRef.current.selectionStart;\n elementRef.current.selectionEnd = stateRef.current.selectionEnd;\n stateRef.current.selectionStart = undefined;\n stateRef.current.selectionEnd = undefined;\n }\n }, [forceUpdate]);\n var isValid = !validityStylesGetter() || validityGetter().valid;\n var numerictextbox = (React.createElement(\"span\", { dir: props.dir, style: !props.label\n ? { width: props.width }\n : undefined, className: 'k-widget k-numerictextbox' + (props.className ? ' ' + props.className : ''), \"aria-disabled\": props.disabled ? 'true' : undefined },\n React.createElement(\"span\", { className: classNames('k-numeric-wrap', {\n 'k-state-disabled': props.disabled,\n 'k-state-invalid': !isValid,\n 'k-state-focused': stateRef.current.focused\n }), ref: elementWrapperRef },\n React.createElement(\"input\", { value: looseValue === null ? '' : looseValue, tabIndex: getTabIndex(props.tabIndex, props.disabled), accessKey: props.accessKey, disabled: props.disabled, title: props.title, \"aria-valuemin\": props.min, \"aria-valuemax\": props.max, \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy, placeholder: props.placeholder, spellCheck: false, autoComplete: 'off', autoCorrect: 'off', type: props.inputType || 'tel', className: 'k-input k-formatted-value', id: inputId, name: props.name, readOnly: props.readOnly, onChange: onChangeHandler, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, onPaste: onPasteHandler, onWheel: onWheelHandler, ref: elementRef }),\n props.children,\n props.spinners &&\n (React.createElement(\"span\", { className: \"k-select\", onMouseDown: onMouseDown },\n React.createElement(\"span\", { className: \"k-link k-link-increase\", \"aria-label\": localizationService\n .toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]), title: localizationService\n .toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]), onClick: onIncrease },\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-n\" })),\n React.createElement(\"span\", { className: \"k-link k-link-decrease\", \"aria-label\": localizationService\n .toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]), title: localizationService\n .toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]), onClick: onDecrease },\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-s\" })))))));\n return props.label\n ? (React.createElement(FloatingLabel, { label: props.label, editorId: inputId, editorValue: looseValue === null ? '' : looseValue, editorValid: isValid, editorDisabled: props.disabled, editorPlaceholder: props.placeholder, children: numerictextbox, style: { width: props.width }, dir: props.dir }))\n : numerictextbox;\n});\nNumericTextBox.propTypes = {\n value: PropTypes.number,\n defaultValue: PropTypes.number,\n step: PropTypes.number,\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n style: PropTypes.oneOf(['decimal', 'currency', 'percent', 'scientific', 'accounting']),\n currency: PropTypes.string,\n currencyDisplay: PropTypes.oneOf(['symbol', 'code', 'name']),\n useGrouping: PropTypes.bool,\n minimumIntegerDigits: PropTypes.number,\n minimumFractionDigits: PropTypes.number,\n maximumFractionDigits: PropTypes.number\n })\n ]),\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n title: PropTypes.string,\n placeholder: PropTypes.string,\n min: PropTypes.number,\n max: PropTypes.number,\n spinners: PropTypes.bool,\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n dir: PropTypes.string,\n name: PropTypes.string,\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n id: PropTypes.string,\n rangeOnEnter: PropTypes.bool,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n};\nNumericTextBox.displayName = 'KendoNumericTextBox';\nNumericTextBox.defaultProps = {\n step: 1,\n spinners: true,\n disabled: false,\n required: false,\n validityStyles: true,\n rangeOnEnter: true,\n onChange: function (_) { return; },\n onFocus: function (_) { return; },\n onBlur: function (_) { return; }\n};\n","/**\n * A function that clones the passed date. The parameter could be `null`.\n *\n * @param date - The initial date value.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * cloneDate(new Date(2016, 0, 1)); // returns new Date(2016, 0, 1);\n * cloneDate(null); // returns null\n * ```\n */\nexport var cloneDate = function (date) { return date ? new Date(date.getTime()) : null; };\n","import { cloneDate } from './clone-date';\n/**\n * @hidden\n */\nexport var adjustDST = function (date, hour) {\n var newDate = cloneDate(date);\n if (hour === 0 && newDate.getHours() === 23) {\n newDate.setHours(newDate.getHours() + 2);\n }\n return newDate;\n};\n","import { adjustDST } from './adjust-dst';\n/**\n * A function which returns a new `Date` instance.\n *\n * @param year - The year value.\n * @param month - The month value.\n * @param day - The day value.\n * @param hours - The hours value.\n * @param minutes - The minutes value.\n * @param seconds - The seconds value.\n * @param milliseconds - milliseconds value.\n * @returns The date instance.\n *\n * @example\n * ```ts-no-run\n * createDate(2016, 0, 15); // 2016-01-15 00:00:00\n * createDate(2016, 0, 15, 22, 22, 20); // 2016-01-15 22:22:20\n * ```\n */\nexport var createDate = function (year, month, day, hours, minutes, seconds, milliseconds) {\n if (hours === void 0) { hours = 0; }\n if (minutes === void 0) { minutes = 0; }\n if (seconds === void 0) { seconds = 0; }\n if (milliseconds === void 0) { milliseconds = 0; }\n var date = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n if (year > -1 && year < 100) {\n date.setFullYear(date.getFullYear() - 1900);\n }\n return adjustDST(date, hours);\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the passed date with a midnight time portion.\n *\n * @param date - The initial date.\n * @returns - The date with a midnight time portion.\n *\n * @example\n * ```ts-no-run\n * getDate(new Date(2016, 0, 15, 14, 30, 30)); // 2016-01-15 00:00:00\n * ```\n */\nexport var getDate = function (date) {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { useAsyncFocusBlur } from '../hooks/useAsyncFocusBlur';\n/**\n * An utility High-order Component for asynchronous focus/blur handling.\n *\n * By default, the `onFocus` and `onBlur` callbacks are called every time a child components receives/loses focus.\n * Use this utility HOC for scenarios where you need to know if the parent has received focus for the first time, or completely lost focus.\n *\n * @returns\n */\nexport var AsyncFocusBlur = function (_a) {\n var children = _a.children, onFocus = _a.onFocus, onBlur = _a.onBlur, onSyncFocus = _a.onSyncFocus, onSyncBlur = _a.onSyncBlur;\n var args = useAsyncFocusBlur({ onFocus: onFocus, onBlur: onBlur, onSyncFocus: onSyncFocus, onSyncBlur: onSyncBlur });\n return children.call(undefined, __assign({}, args));\n};\n","import * as React from 'react';\n/**\n * An utility function for asynchronous focus/blur handling.\n *\n * By default, the `onFocus` and `onBlur` callbacks are called every time a child components receives/loses focus.\n * Use this utility hook for scenarios where you need to know if the parent has received focus for the first time, or completely lost focus.\n *\n * @returns\n */\nexport function useAsyncFocusBlur(_a) {\n var onFocus = _a.onFocus, onBlur = _a.onBlur, onSyncFocus = _a.onSyncFocus, onSyncBlur = _a.onSyncBlur;\n var focused = React.useRef(false);\n var tick = React.useRef(0);\n var nextTick = React.useCallback(function (f) {\n clearTimeout(tick.current);\n tick.current = window.setTimeout(function () { return f(); });\n }, [tick]);\n var handleFocus = React.useCallback(function () {\n var event = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n event[_i] = arguments[_i];\n }\n clearTimeout(tick.current);\n if (onSyncFocus) {\n onSyncFocus.call.apply(onSyncFocus, [undefined].concat(event));\n }\n if (focused.current) {\n return;\n }\n ;\n focused.current = true;\n if (onFocus) {\n onFocus.call.apply(onFocus, [undefined].concat(event));\n }\n }, [focused, onFocus, onSyncFocus]);\n var handleBlur = React.useCallback(function () {\n var event = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n event[_i] = arguments[_i];\n }\n if (onSyncBlur) {\n onSyncBlur.call.apply(onSyncBlur, [undefined].concat(event));\n }\n nextTick(function () {\n if (!focused.current) {\n return;\n }\n if (onBlur) {\n focused.current = false;\n onBlur.call.apply(onBlur, [undefined].concat(event));\n }\n });\n }, [focused, nextTick, onBlur, onSyncBlur]);\n React.useEffect(function () {\n return function () {\n clearTimeout(tick.current);\n };\n }, []);\n return {\n onFocus: handleFocus,\n onBlur: handleBlur\n };\n}\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-dateinputs',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642516221,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","/**\n * A function that compares two dates. The comparison also includes the time portion.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value indicating whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 1)); // true\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 2)); // false\n * isEqual(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // false\n * ```\n */\nexport var isEqual = function (candidate, expected) {\n if (!candidate && !expected) {\n return true;\n }\n return candidate && expected && candidate.getTime() === expected.getTime();\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\n/**\n * A function that adds and subtracts days from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of days to add and subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDays(new Date(2016, 0, 1), 5); // 2016-1-6\n * addDays(new Date(2016, 0, 1), -5); // 2015-12-26\n * ```\n */\nexport var addDays = function (date, offset) {\n var newDate = cloneDate(date);\n newDate.setDate(newDate.getDate() + offset);\n return adjustDST(newDate, date.getHours());\n};\n","import { addDays } from './add-days';\nimport { createDate } from './create-date';\n/**\n * A function which returns the last date of the month.\n *\n * @param date - The initial date.\n * @returns - The last date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * lastDayOfMonth(new Date(2016, 0, 15)); // 2016-01-31\n * ```\n */\nexport var lastDayOfMonth = function (date) {\n var newDate = createDate(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return addDays(newDate, -1);\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\nimport { lastDayOfMonth } from './last-day-of-month';\nvar MONTHS_LENGTH = 12;\nvar normalize = function (date, expectedMonth) { return (date.getMonth() !== expectedMonth ? lastDayOfMonth(addMonths(date, -1)) : date //tslint:disable-line:no-use-before-declare\n); };\n/**\n * A function that adds and subtracts months from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of months to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addMonths(new Date(2016, 5, 1), 5); // 2016-11-1\n * addMonths(new Date(2016, 5, 1), -5); // 2015-1-1\n * ```\n */\nexport var addMonths = function (date, offset) {\n var newDate = cloneDate(date);\n var diff = (newDate.getMonth() + offset) % MONTHS_LENGTH;\n var expectedMonth = (MONTHS_LENGTH + diff) % MONTHS_LENGTH;\n newDate.setMonth(newDate.getMonth() + offset);\n return normalize(adjustDST(newDate, date.getHours()), expectedMonth);\n};\n","/**\n * @hidden\n */\nvar Mask = /** @class */ (function () {\n function Mask() {\n this.symbols = '';\n }\n return Mask;\n}());\nexport { Mask };\n","/**\n * @hidden\n */\nexport var defaultFormat = 'd';\n/**\n * @hidden\n */\nexport var defaultFormatPlaceholder = 'wide';\n/**\n * @hidden\n */\nexport var padZero = function (length) { return new Array(Math.max(length, 0)).fill('0').join(''); };\n/**\n * @hidden\n */\nexport var approximateStringMatching = function (oldTextOrigin, oldFormat, newTextOrigin, selectionStart) {\n /*\n Remove the right part of the cursor.\n oldFormat = oldFormat.substring(0, caret + oldText.length - newText.length);\n */\n var oldTextSeparator = oldTextOrigin[selectionStart + oldTextOrigin.length - newTextOrigin.length];\n var oldText = oldTextOrigin.substring(0, selectionStart + oldTextOrigin.length - newTextOrigin.length);\n var newText = newTextOrigin.substring(0, selectionStart);\n var diff = [];\n /* Handle the typing of a single character over the same selection. */\n if (oldText === newText && selectionStart > 0) {\n diff.push([oldFormat[selectionStart - 1], newText[selectionStart - 1]]);\n return diff;\n }\n if (oldText.indexOf(newText) === 0 &&\n (newText.length === 0 || oldFormat[newText.length - 1] !== oldFormat[newText.length])) {\n /* Handle Delete/Backspace. */\n var deletedSymbol = '';\n /*\n The whole text is replaced by the same character.\n A nasty patch is required to keep the selection in the first segment.\n */\n if (newText.length === 1) {\n diff.push([oldFormat[0], newText[0]]);\n }\n for (var i = newText.length; i < oldText.length; i++) {\n if (oldFormat[i] !== deletedSymbol && oldFormat[i] !== '_') {\n deletedSymbol = oldFormat[i];\n diff.push([deletedSymbol, '']);\n }\n }\n return diff;\n }\n /*\n Handle the insertion of the text (the new text is longer than the previous one).\n Handle the typing over a literal as well.\n */\n if (newText.indexOf(oldText) === 0 || oldFormat[selectionStart - 1] === '_') {\n var symbol = oldFormat[0];\n for (var i = Math.max(0, oldText.length - 1); i < oldFormat.length; i++) {\n if (oldFormat[i] !== '_') {\n symbol = oldFormat[i];\n break;\n }\n }\n return [[symbol, newText[selectionStart - 1]]];\n }\n /* Handle the entering of a space or a separator for navigating to the next item. */\n if (newText[newText.length - 1] === ' ' || newText[newText.length - 1] === oldTextSeparator) {\n return [[oldFormat[selectionStart - 1], '_']];\n }\n /* Handle typing over a correctly selected part. */\n return [[oldFormat[selectionStart - 1], newText[selectionStart - 1]]];\n};\n/**\n * @hidden\n */\nexport var dateSymbolMap = function (map, part) { map[part.pattern[0]] = part.type; return map; };\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) { return (candidate === null || !((min && min > candidate) || (max && max < candidate))); };\n/**\n * @hidden\n */\nexport var invalidClasses = ['k-state-invalid'];\n/** @hidden */\nexport var wrapperClasses = ['k-widget', 'k-dateinput'];\n","import { addMonths, cloneDate, createDate, isEqual, getDate, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Mask } from './mask';\nimport { dateSymbolMap } from './../utils';\n/**\n * @hidden\n */\nvar KendoDate = /** @class */ (function () {\n function KendoDate(intlProvider, formatPlaceholder, format) {\n this.year = true;\n this.month = true;\n this.date = true;\n this.hours = true;\n this.minutes = true;\n this.seconds = true;\n this.milliseconds = true;\n this.leadingZero = null;\n this.typedMonthPart = '';\n this.knownParts = 'adHhmMsEy';\n this.symbols = {\n 'E': 'E',\n 'H': 'H',\n 'M': 'M',\n 'a': 'a',\n 'd': 'd',\n 'h': 'h',\n 'm': 'm',\n 's': 's',\n 'y': 'y'\n };\n this._value = getDate(new Date());\n this.intlProvider = intlProvider;\n this.formatPlaceholder = formatPlaceholder;\n this.format = format;\n this.monthNames = this.allFormatedMonths();\n }\n Object.defineProperty(KendoDate.prototype, \"intl\", {\n get: function () {\n return this.intlProvider();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(KendoDate.prototype, \"value\", {\n get: function () {\n return this._value;\n },\n enumerable: true,\n configurable: true\n });\n KendoDate.prototype.setValue = function (value) {\n if (!value) {\n this._value = getDate(new Date());\n this.modifyExisting(false);\n }\n else if (!isEqual(value, this._value)) {\n this._value = cloneDate(value);\n this.modifyExisting(true);\n }\n };\n KendoDate.prototype.hasValue = function () {\n var _this = this;\n var pred = function (a, p) { return a || p.type !== 'literal' && p.type !== 'dayperiod' && _this.getExisting(p.pattern[0]); };\n return this.intl.splitDateFormat(this.format).reduce(pred, false);\n };\n KendoDate.prototype.getDateObject = function () {\n for (var i = 0; i < this.knownParts.length; i++) {\n if (!this.getExisting(this.knownParts[i])) {\n return null;\n }\n }\n return cloneDate(this.value);\n };\n KendoDate.prototype.getTextAndFormat = function () {\n return this.merge(this.intl.formatDate(this.value, this.format), this.dateFormatString(this.value, this.format));\n };\n KendoDate.prototype.modifyExisting = function (value) {\n var sampleFormat = this.dateFormatString(this.value, this.format).symbols;\n for (var i = 0; i < sampleFormat.length; i++) {\n this.setExisting(sampleFormat[i], value);\n }\n };\n KendoDate.prototype.getExisting = function (symbol) {\n switch (symbol) {\n case 'y': return this.year;\n case 'M':\n case 'L': return this.month;\n case 'd': return this.date;\n case 'E': return this.date && this.month && this.year;\n case 'h':\n case 'H': return this.hours;\n case 'm': return this.minutes;\n case 's': return this.seconds;\n default: return true;\n }\n };\n KendoDate.prototype.setExisting = function (symbol, value) {\n switch (symbol) {\n case 'y':\n // allow 2/29 dates\n this.year = value;\n if (value === false) {\n this._value.setFullYear(2000);\n }\n break;\n case 'M':\n // make sure you can type 31 in the day part\n this.month = value;\n if (value === false) {\n this._value.setMonth(0);\n }\n break;\n case 'd':\n this.date = value;\n break;\n case 'h':\n case 'H':\n this.hours = value;\n break;\n case 'm':\n this.minutes = value;\n break;\n case 's':\n this.seconds = value;\n break;\n default: return;\n }\n };\n KendoDate.prototype.modifyPart = function (symbol, offset) {\n var newValue = cloneDate(this.value);\n switch (symbol) {\n case 'y':\n newValue.setFullYear(newValue.getFullYear() + offset);\n break;\n case 'M':\n newValue = addMonths(this.value, offset);\n break;\n case 'd':\n case 'E':\n newValue.setDate(newValue.getDate() + offset);\n break;\n case 'h':\n case 'H':\n newValue.setHours(newValue.getHours() + offset);\n break;\n case 'm':\n newValue.setMinutes(newValue.getMinutes() + offset);\n break;\n case 's':\n newValue.setSeconds(newValue.getSeconds() + offset);\n break;\n case 'a':\n newValue.setHours(newValue.getHours() + (12 * offset));\n break;\n default: break;\n }\n this.setExisting(symbol, true);\n this._value = newValue;\n };\n KendoDate.prototype.parsePart = function (symbol, currentChar) {\n var _a;\n this.resetLeadingZero();\n if (!currentChar) {\n this.setExisting(symbol, false);\n return { value: null };\n }\n var baseDate = this.intl.formatDate(this.value, this.format);\n var dateParts = this.dateFormatString(this.value, this.format);\n var baseFormat = dateParts.symbols;\n var replaced = false;\n var prefix = '';\n var current = '';\n var suffix = '';\n for (var i = 0; i < baseDate.length; i++) {\n if (baseFormat[i] === symbol) {\n current += this.getExisting(symbol) ? baseDate[i] : '0';\n replaced = true;\n }\n else if (!replaced) {\n prefix += baseDate[i];\n }\n else {\n suffix += baseDate[i];\n }\n }\n var parsedDate = null;\n var month = this.matchMonth(currentChar);\n while (current.length > 0 && current.charAt(0) === '0') {\n current = current.slice(1);\n }\n if (current.length >= 4) {\n current = '';\n }\n for (var i = 0; i < 2; i++) {\n var middle = current + currentChar;\n var middleNumber = parseInt(middle, 10);\n parsedDate = this.intl.parseDate(prefix + middle + suffix, this.format);\n if (!parsedDate && !isNaN(middleNumber) && !isNaN(parseInt(currentChar, 10))) {\n if (symbol === 'M' && !month) {\n var monthNumber = middleNumber - 1;\n if (monthNumber > -1 && monthNumber < 12) {\n parsedDate = cloneDate(this.value);\n parsedDate.setMonth(monthNumber);\n if (parsedDate.getMonth() !== monthNumber) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (symbol === 'y') {\n parsedDate = createDate(parseInt(middle, 10), this.month ? this.value.getMonth() : 0, this.date ? this.value.getDate() : 1, this.hours ? this.value.getHours() : 0, this.minutes ? this.value.getMinutes() : 0, this.seconds ? this.value.getSeconds() : 0, this.milliseconds ? this.value.getMilliseconds() : 0);\n if (this.date && parsedDate.getDate() !== this.value.getDate()) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (parsedDate) {\n this._value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value };\n }\n current = '';\n }\n if (month) {\n parsedDate = this.intl.parseDate(prefix + month + suffix, this.format);\n if (parsedDate) {\n this._value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value };\n }\n }\n if (currentChar === '0') {\n this.leadingZero = !this.isAbbrMonth(dateParts.partMap, symbol) ? (_a = {}, _a[symbol] = true, _a) : null;\n this.setExisting(symbol, false);\n }\n return { value: null };\n };\n KendoDate.prototype.symbolMap = function (symbol) {\n return this.intl.splitDateFormat(this.format).reduce(dateSymbolMap, {})[symbol];\n };\n KendoDate.prototype.resetLeadingZero = function () {\n var hasLeadingZero = this.leadingZero !== null;\n this.leadingZero = null;\n return hasLeadingZero;\n };\n KendoDate.prototype.isAbbrMonth = function (parts, symbol) {\n var pattern = this.partPattern(parts, symbol);\n return pattern.type === 'month' && pattern.names;\n };\n KendoDate.prototype.partPattern = function (parts, symbol) {\n return parts.filter(function (part) { return part.pattern.indexOf(symbol) !== -1; })[0];\n };\n KendoDate.prototype.matchMonth = function (typedChar) {\n this.typedMonthPart += typedChar.toLowerCase();\n if (this.monthNames.length === 0) {\n return '';\n }\n while (this.typedMonthPart.length > 0) {\n for (var i = 0; i < this.monthNames.length; i++) {\n if (this.monthNames[i].toLowerCase().indexOf(this.typedMonthPart) === 0) {\n return this.monthNames[i];\n }\n }\n var monthAsNum = parseInt(this.typedMonthPart, 10);\n /* ensure they exact match */\n if (monthAsNum >= 1 && monthAsNum <= 12 && monthAsNum.toString() === this.typedMonthPart) {\n return this.monthNames[monthAsNum - 1];\n }\n this.typedMonthPart = this.typedMonthPart.substring(1, this.typedMonthPart.length);\n }\n return '';\n };\n KendoDate.prototype.allFormatedMonths = function () {\n var dateFormatParts = this.intl.splitDateFormat(this.format);\n for (var i = 0; i < dateFormatParts.length; i++) {\n if (dateFormatParts[i].type === 'month' && dateFormatParts[i].names) {\n return this.intl.dateFormatNames(dateFormatParts[i].names);\n }\n }\n return [];\n };\n KendoDate.prototype.dateFormatString = function (date, format) {\n var dateFormatParts = this.intl.splitDateFormat(format);\n var parts = [];\n var partMap = [];\n for (var i = 0; i < dateFormatParts.length; i++) {\n var partLength = this.intl.formatDate(date, { pattern: dateFormatParts[i].pattern }).length;\n while (partLength > 0) {\n parts.push(this.symbols[dateFormatParts[i].pattern[0]] || '_');\n partMap.push(dateFormatParts[i]);\n partLength--;\n }\n }\n var returnValue = new Mask();\n returnValue.symbols = parts.join('');\n returnValue.partMap = partMap;\n return returnValue;\n };\n KendoDate.prototype.merge = function (text, mask) {\n // Important: right to left.\n var resultText = '';\n var resultFormat = '';\n var format = mask.symbols;\n for (var r = format.length - 1; r >= 0; r--) {\n if (this.knownParts.indexOf(format[r]) === -1 || this.getExisting(format[r])) {\n resultText = text[r] + resultText;\n resultFormat = format[r] + resultFormat;\n }\n else {\n var currentSymbol = format[r];\n while (r >= 0 && currentSymbol === format[r]) {\n r--;\n }\n r++;\n if (this.leadingZero && this.leadingZero[currentSymbol]) {\n resultText = '0' + resultText;\n }\n else {\n resultText = this.dateFieldName(mask.partMap[r]) + resultText;\n }\n while (resultFormat.length < resultText.length) {\n resultFormat = format[r] + resultFormat;\n }\n }\n }\n return { text: resultText, format: resultFormat };\n };\n KendoDate.prototype.dateFieldName = function (part) {\n var formatPlaceholder = this.formatPlaceholder || 'wide';\n if (formatPlaceholder[part.type]) {\n return formatPlaceholder[part.type];\n }\n if (formatPlaceholder === 'formatPattern') {\n return part.pattern;\n }\n return this.intl.dateFieldName(Object.assign(part, { nameType: formatPlaceholder }));\n };\n return KendoDate;\n}());\nexport { KendoDate };\n","/**\n * @hidden\n */\nexport var EMPTY_SELECTIONRANGE = { start: null, end: null };\n","import { cloneDate, isEqual } from '@progress/kendo-date-math';\nimport { getDate } from '@progress/kendo-date-math';\nimport { EMPTY_SELECTIONRANGE } from './calendar/models/SelectionRange';\n/**\n * @hidden\n */\nexport var isEqualRange = function (initial, updated) {\n var _a = initial || EMPTY_SELECTIONRANGE, initialStart = _a.start, initialEnd = _a.end;\n var _b = updated || EMPTY_SELECTIONRANGE, updatedStart = _b.start, updatedEnd = _b.end;\n if (initialStart === null || initialEnd === null || updatedStart === null || updatedEnd === null) {\n return false;\n }\n return isEqual(initialStart, updatedStart) && isEqual(initialEnd, updatedEnd);\n};\n// Polyfill for PropTypes.null\n/**\n * @hidden\n */\nexport function nullable(subRequirement) {\n var check = function (required, props, key) {\n var rest = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n rest[_i - 3] = arguments[_i];\n }\n if (props[key] === null) {\n return null;\n }\n var sub = required ? subRequirement.isRequired : subRequirement;\n return sub.apply(void 0, [props, key].concat(rest));\n };\n var fn = check.bind(null, false);\n fn.isRequired = check.bind(null, true);\n return fn;\n}\n/**\n * @hidden\n */\nexport var viewInRange = function (candidate, min, max) {\n if (min === undefined || max === undefined) {\n return candidate;\n }\n return min <= candidate && candidate <= max\n ? candidate\n : candidate < min\n ? min\n : max;\n};\n/**\n * @hidden\n */\nexport var MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nexport var MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\nvar isSet = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isValidRange = function (min, max) { return (!isSet(min) || !isSet(max) || min <= max); };\n/**\n * @hidden\n */\nexport var setTime = function (origin, candidate) {\n var date = cloneDate(origin);\n date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());\n return date;\n};\n/**\n * @hidden\n */\nexport var getToday = function () { return getDate(new Date()); };\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) { return (!candidate || !((min && min > candidate) || (max && max < candidate))); };\n/**\n * @hidden\n */\nexport var isInDateRange = function (candidate, min, max) { return (candidate === null\n || !((min && getDate(min) > getDate(candidate))\n || (max && getDate(max) < getDate(candidate)))); };\n/**\n * @hidden\n */\nexport var isInSelectionRange = function (value, selectionRange) {\n var _a = selectionRange || EMPTY_SELECTIONRANGE, start = _a.start, end = _a.end;\n if (!start || !end) {\n return false;\n }\n return start < value && value < end;\n};\n/**\n * @hidden\n */\nexport var range = function (start, end, step) {\n if (step === void 0) { step = 1; }\n var result = [];\n for (var i = start; i < end; i = i + step) {\n result.push(i);\n }\n return result;\n};\n/**\n * @hidden\n */\nexport var intersects = function (date, min, max) {\n return min.getTime() <= date.getTime() && date.getTime() <= max.getTime();\n};\n/**\n * @hidden\n */\nexport var shiftWeekNames = function (names, offset) { return (names.slice(offset).concat(names.slice(0, offset))); };\n/**\n * @hidden\n */\nexport var dateInRange = function (candidate, min, max) {\n if (!candidate) {\n return candidate;\n }\n if (min && candidate < min) {\n return cloneDate(min);\n }\n if (max && candidate > max) {\n return cloneDate(max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nexport var domContainerFactory = function (type) { return function (children, classes, styles) {\n if (classes === void 0) { classes = ''; }\n if (styles === void 0) { styles = {}; }\n var container = document.createElement(type);\n container.className = classes;\n Object.keys(styles).map(function (key) { return container.style[key] = styles[key]; });\n if (typeof children === 'string') {\n container.innerHTML = children || '';\n }\n else {\n (children || []).forEach(function (child) { return child && container.appendChild(child); });\n }\n return container;\n}; };\n","var _a;\n/**\n * @hidden\n */\nexport var prevView = 'multiviewcalendar.prevView';\n/**\n * @hidden\n */\nexport var nextView = 'multiviewcalendar.nextView';\n/**\n * @hidden\n */\nexport var increaseValue = 'dateinput.increment';\n/**\n * @hidden\n */\nexport var decreaseValue = 'dateinput.decrement';\n/**\n * @hidden\n */\nexport var today = 'calendar.today';\n/**\n * @hidden\n */\nexport var toggleCalendar = 'datepicker.toggleCalendar';\n/**\n * @hidden\n */\nexport var swapStartEnd = 'daterangepicker.swapStartEnd';\n/**\n * @hidden\n */\nexport var start = 'daterangepicker.start';\n/**\n * @hidden\n */\nexport var end = 'daterangepicker.end';\n/**\n * @hidden\n */\nexport var separator = 'daterangepicker.separator';\n/**\n * @hidden\n */\nexport var toggleDateTimeSelector = 'datetimepicker.toggleDateTimeSelector';\n/**\n * @hidden\n */\nexport var now = 'timepicker.now';\n/**\n * @hidden\n */\nexport var selectNow = 'timepicker.selectNow';\n/**\n * @hidden\n */\nexport var timePickerCancel = 'timepicker.cancel';\n/**\n * @hidden\n */\nexport var timePickerSet = 'timepicker.set';\n/**\n * @hidden\n */\nexport var toggleTimeSelector = 'timepicker.toggleTimeSelector';\n/**\n * @hidden\n */\nexport var toggleClock = 'timepicker.toggleClock';\n/**\n * @hidden\n */\nexport var date = 'datetimepicker.date';\n/**\n * @hidden\n */\nexport var time = 'datetimepicker.time';\n/**\n * @hidden\n */\nexport var dateTimePickerCancel = 'datetimepicker.cancel';\n/**\n * @hidden\n */\nexport var dateTimePickerSet = 'datetimepicker.set';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[today] = 'TODAY',\n _a[now] = 'NOW',\n _a[timePickerSet] = 'Set',\n _a[timePickerCancel] = 'Cancel',\n _a[date] = 'Date',\n _a[time] = 'Time',\n _a[dateTimePickerCancel] = 'Cancel',\n _a[dateTimePickerSet] = 'Set',\n _a[start] = 'Start',\n _a[end] = 'End',\n _a[separator] = ' ',\n _a[selectNow] = 'Select Now',\n _a[toggleTimeSelector] = 'Toggle TimeSelector',\n _a[toggleClock] = 'Toggle Clock',\n _a[increaseValue] = 'Increase value',\n _a[decreaseValue] = 'Decrease value',\n _a[toggleCalendar] = 'Toggle calendar',\n _a[prevView] = 'Navigate to previous view',\n _a[nextView] = 'Navigate to next view',\n _a[swapStartEnd] = 'Swap start and end values',\n _a[toggleDateTimeSelector] = 'Toggle date-time selector',\n _a);\n","import { cloneDate, addDays } from '@progress/kendo-date-math';\nimport { TIME_PART } from './models/TimePart';\nimport { MIDNIGHT_DATE, setTime } from '../utils';\nvar setter = function (method) { return function (date, value) {\n var clone = cloneDate(date);\n clone[method](value);\n return clone;\n}; };\nvar defaultGetters = [\n { type: TIME_PART.hour, getter: function (value) { return value.getHours(); } },\n { type: TIME_PART.minute, getter: function (value) { return value.getMinutes(); } },\n { type: TIME_PART.second, getter: function (value) { return value.getSeconds(); } },\n { type: TIME_PART.millisecond, getter: function (value) { return value.getMilliseconds(); } }\n];\nvar left = function (getter) { return function (origin, _) { return getter(origin); }; };\nvar right = function (getter) { return function (_, candidate) { return getter(candidate); }; };\nvar convertToObject = function (parts) { return parts.reduce(function (obj, p) { obj[p.type] = p.type; return obj; }, {}); };\nvar getterByPart = function (parts) { return function (g) { return parts[g.type] ? right(g.getter) : left(g.getter); }; };\nvar gettersFactory = function (getters) { return function (parts) { return (getters.map(getterByPart(convertToObject(parts)))); }; };\nvar snapValue = function (getter, step, min, type) { return function (date) {\n var value = getter(date);\n var minValue = getter(min);\n if (type === 'hour') {\n return value - ((value - minValue) % step);\n }\n if (date.getTime() <= min.getTime()\n && value !== 0\n && value <= minValue) {\n return (Math.ceil(value / step)) * step;\n }\n return value - (value % step);\n}; };\nvar snappersFactory = function (getters) { return function (steps, min) { return (getters.map(function (g) {\n var step = Math.floor(steps[g.type]);\n return step ? snapValue(g.getter, step, min, g.type) : g.getter;\n})); }; };\n/**\n * @hidden\n */\nexport var generateGetters = gettersFactory(defaultGetters);\n/**\n * @hidden\n */\nexport var generateSnappers = snappersFactory(defaultGetters);\n/**\n * @hidden\n */\nexport var valueMerger = function (getters) { return function (origin, candidate) {\n origin.setHours.apply(origin, getters.map(function (g) { return g(origin, candidate); }));\n return origin;\n}; };\n/**\n * @hidden\n */\nexport var snapTime = function (snappers) { return function (candidate) {\n var date = cloneDate(candidate);\n date.setHours.apply(date, snappers.map(function (s) { return s(date); }));\n return date;\n}; };\n/**\n * @hidden\n */\nexport var setHours = setter('setHours');\n/**\n * @hidden\n */\nexport var setMinutes = setter('setMinutes');\n/**\n * @hidden\n */\nexport var setSeconds = setter('setSeconds');\n/**\n * @hidden\n */\nexport var getNow = function () { return new Date(); };\n/**\n * @hidden\n */\nexport var range = function (start, end, step) {\n if (step === void 0) { step = 1; }\n var result = [];\n for (var i = start; i < end; i = i + step) {\n result.push(i);\n }\n return result;\n};\nvar normalizeTimes = function (candidate, min, max) { return ({\n candidateValue: setTime(MIDNIGHT_DATE, candidate),\n maxValue: addDays(setTime(MIDNIGHT_DATE, max), min.getHours() < max.getHours() ? 0 : 1),\n minValue: setTime(MIDNIGHT_DATE, min)\n}); };\n/**\n * @hidden\n */\nexport var timeInRange = function (candidate, min, max) {\n if (!candidate || !min || !max) {\n return candidate;\n }\n var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n if (candidateValue < minValue) {\n return setTime(candidate, min);\n }\n if (candidateValue > maxValue) {\n return setTime(candidate, max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nexport var isInTimeRange = function (candidate, min, max) {\n if (!candidate || !min || !max) {\n return true;\n }\n var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) {\n if (candidate === null) {\n return true;\n }\n var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nexport var isSmallerThanMin = function (val, min) {\n if (val === null || min === null) {\n return false;\n }\n var normalizedValue = setTime(MIDNIGHT_DATE, val);\n var normalizedMin = setTime(MIDNIGHT_DATE, min);\n return normalizedValue.getTime() < normalizedMin.getHours();\n};\n/**\n * @hidden\n */\nexport var isBiggerThanMax = function (val, max) {\n if (val === null || max === null) {\n return false;\n }\n var normalizedValue = setTime(MIDNIGHT_DATE, val);\n var normalizedMax = setTime(MIDNIGHT_DATE, max);\n return normalizedMax.getTime() < normalizedValue.getHours();\n};\n","/**\n * @hidden\n */\nexport var TIME_PART = {\n dayperiod: 'dayperiod',\n hour: 'hour',\n millisecond: 'millisecond',\n minute: 'minute',\n second: 'second'\n};\n","/**\n * @hidden\n */\nexport var MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nexport var MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { isEqual, cloneDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { KendoDate } from './models';\nimport { guid, AsyncFocusBlur, noop, classNames, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { approximateStringMatching, defaultFormat, defaultFormatPlaceholder, isInRange, wrapperClasses } from './utils';\nimport { MAX_DATE, MIN_DATE } from './../utils';\nimport { messages, increaseValue, decreaseValue } from './../messages';\nimport { isInTimeRange } from '../timepicker/utils';\nimport { MIN_TIME, MAX_TIME } from '../defaults';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n// tslint:enable:max-line-length\n/** @hidden */\nvar DateInputWithoutContext = /** @class */ (function (_super) {\n __extends(DateInputWithoutContext, _super);\n function DateInputWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this.kendoDate = null;\n _this.paste = false;\n _this._element = null;\n _this._wrapper = null;\n _this._inputId = guid();\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._element) {\n _this._element.focus();\n }\n };\n /**\n * @hidden\n */\n _this.setValidity = function () {\n if (_this.element && _this.element.setCustomValidity) {\n _this.element.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || DateInputWithoutContext.defaultProps.validationMessage);\n }\n };\n _this.updateOnPaste = function (event) {\n if (!_this.element || !_this.kendoDate) {\n return;\n }\n var value = provideIntlService(_this).parseDate(_this.element.value, _this.props.format) || _this.value;\n var oldValue = _this.value;\n _this.kendoDate.setValue(value);\n _this.triggerChange(event, oldValue);\n };\n /* Handlers */\n _this.spinnersMouseDown = function (event) {\n /* do not steal focus from input when changing value with spinners */\n event.preventDefault();\n /* manually focus the input in case the user clicks the spinners first */\n if (_this.element && document.activeElement !== _this.element) {\n _this.element.focus({ preventScroll: true });\n }\n };\n _this.handlePaste = function () {\n _this.paste = true;\n };\n _this.elementChange = function (event) {\n if (!_this.element || !_this.kendoDate) {\n return;\n }\n if (_this.paste) {\n _this.updateOnPaste(event);\n _this.paste = false;\n return;\n }\n var _a = _this.kendoDate.getTextAndFormat(), text = _a.text, currentFormat = _a.format;\n _this.currentFormat = currentFormat;\n var dateBeforeChange = _this.value;\n var diff = approximateStringMatching(text, _this.currentFormat, _this.element.value, _this.selection.start);\n var navigationOnly = (diff.length === 1 && diff[0][1] === '_');\n if (!navigationOnly) {\n for (var i = 0; i < diff.length; i++) {\n _this.kendoDate.parsePart(diff[i][0], diff[i][1]);\n }\n }\n if (diff.length && diff[0][0] !== '_') {\n _this.setSelection(_this.selectionBySymbol(diff[0][0]));\n }\n if (navigationOnly) {\n _this.switchDateSegment(1);\n }\n _this.triggerChange(event, dateBeforeChange);\n };\n _this.elementClick = function (_) {\n _this.setSelection(_this.selectionByIndex(_this.selection.start));\n };\n _this.nativeWheel = function (event) {\n event.preventDefault();\n };\n _this.wheel = function (event) {\n if (document.activeElement !== _this.element) {\n return;\n }\n if (event.nativeEvent.deltaY < 0) {\n _this.increasePart(event);\n }\n if (event.nativeEvent.deltaY > 0) {\n _this.decreasePart(event);\n }\n };\n _this.increasePart = function (event) {\n _this.modifyDateSegmentValue(1, event);\n };\n _this.decreasePart = function (event) {\n _this.modifyDateSegmentValue(-1, event);\n };\n _this.elementKeyDown = function (event) {\n if (event.altKey) {\n return;\n }\n switch (event.keyCode) {\n case 37:\n /*\n * Key: `Left Arrow`\n * Action: Switches to previous logical* segment.\n * (*) https://www.w3.org/International/articles/inline-bidi-markup/uba-basics\n */\n _this.switchDateSegment(-1);\n break;\n case (38):\n /*\n * Key: `Up Arrow`\n * Action: Increases the currently selected segment value.\n */\n _this.modifyDateSegmentValue(1, event);\n break;\n case 39:\n /*\n * Key: `Right Arrow`\n * Action: Switches to the next logical segment.\n */\n _this.switchDateSegment(1);\n break;\n case 40:\n /*\n * Key: `Down Arrow`\n * Action: Decreases the currently selected segment value.\n */\n _this.modifyDateSegmentValue(-1, event);\n break;\n default:\n /*\n * Key: any\n * Action: Does not prevent the default behavior.\n */\n return;\n }\n event.preventDefault();\n };\n _this.elementOnFocus = function (_) {\n if (_this.wrapper) {\n _this.wrapper.classList.add('k-state-focused');\n }\n _this.setState({ focused: true });\n };\n _this.elementOnBlur = function (_) {\n if (_this.wrapper) {\n _this.wrapper.classList.remove('k-state-focused');\n }\n _this.setState({ focused: false });\n };\n validatePackage(packageMetadata);\n _this.state = {\n focused: false\n };\n return _this;\n }\n /**\n * @hidden\n */\n DateInputWithoutContext.prototype.componentDidMount = function () {\n this.setValidity();\n if (this.wrapper) {\n this.wrapper.addEventListener('wheel', this.nativeWheel, { passive: false });\n }\n };\n /**\n * @hidden\n */\n DateInputWithoutContext.prototype.componentDidUpdate = function (_, prevState) {\n if (this._lastSelectedSymbol && prevState.focused === this.state.focused) {\n this.setSelection(this.selectionBySymbol(this._lastSelectedSymbol));\n }\n else if (this.selection.start === this.selection.end) {\n this.setSelection({ start: 0, end: this.currentFormat.length });\n }\n this.setValidity();\n };\n /**\n * @hidden\n */\n DateInputWithoutContext.prototype.componentWillUnmount = function () {\n if (this.wrapper) {\n this.wrapper.removeEventListener('wheel', this.nativeWheel);\n }\n };\n /**\n * @hidden\n */\n DateInputWithoutContext.prototype.render = function () {\n var _this = this;\n if (this.props._ref) {\n this.props._ref.current = this;\n }\n var localizationService = provideLocalizationService(this);\n var props = __assign({}, DateInputWithoutContext.defaultProps, this.props);\n var min = props.min, max = props.max, name = props.name, label = props.label, id = props.id;\n var currentText = this.text;\n var text = currentText === this.props.placeholder ? '' : currentText;\n var placeholder = currentText === this.props.placeholder ? currentText : undefined;\n var inputId = id || this._inputId;\n var isValid = !this.validityStyles || this.validity.valid;\n var ariaProps = {\n 'aria-valuemin': min === null ? undefined : min.getTime(),\n 'aria-valuemax': max === null ? undefined : max.getTime(),\n 'aria-valuetext': text\n };\n if (this.value !== null) {\n ariaProps['aria-valuenow'] = this.value.getTime();\n }\n var wrapperClassesInstance = wrapperClasses.slice();\n if (this.props.className) {\n wrapperClassesInstance.push(this.props.className);\n }\n var dateinput = (React.createElement(AsyncFocusBlur, { onFocus: this.elementOnFocus, onBlur: this.elementOnBlur }, function (_a) {\n var onFocus = _a.onFocus, onBlur = _a.onBlur;\n return (React.createElement(\"span\", { style: !label\n ? { width: _this.props.width }\n : undefined, dir: _this.props.dir, className: wrapperClassesInstance.join(' '), onFocus: onFocus, onBlur: onBlur },\n React.createElement(\"span\", { className: classNames('k-dateinput-wrap', {\n 'k-state-disabled': _this.props.disabled,\n 'k-state-invalid': !isValid\n }), ref: function (span) { _this._wrapper = span; } },\n React.createElement(\"input\", __assign({ role: \"spinbutton\", tabIndex: _this.props.tabIndex, disabled: _this.props.disabled, title: _this.props.title !== undefined ? _this.props.title : currentText, type: \"text\", spellCheck: false, autoComplete: \"off\", autoCorrect: \"off\", className: \"k-input\", id: inputId, \"aria-labelledby\": _this.props.ariaLabelledBy, \"aria-describedby\": _this.props.ariaDescribedBy, \"aria-expanded\": _this.props.ariaExpanded, \"aria-haspopup\": _this.props.ariaHasPopup, onWheel: _this.wheel, onClick: _this.elementClick, onInput: _this.elementChange, onPaste: _this.handlePaste, onKeyDown: _this.elementKeyDown, onChange: noop, value: text, placeholder: placeholder, name: name }, ariaProps, { ref: function (input) { return _this._element = input; } })),\n _this.props.children,\n _this.props.spinners &&\n React.createElement(\"span\", { className: \"k-select\", onMouseDown: _this.spinnersMouseDown },\n React.createElement(\"span\", { className: \"k-link k-link-increase\", \"aria-label\": localizationService\n .toLanguageString(increaseValue, messages[increaseValue]), title: localizationService\n .toLanguageString(increaseValue, messages[increaseValue]), onClick: _this.increasePart },\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-n\" })),\n React.createElement(\"span\", { className: \"k-link k-link-decrease\", \"aria-label\": localizationService\n .toLanguageString(decreaseValue, messages[decreaseValue]), title: localizationService\n .toLanguageString(decreaseValue, messages[decreaseValue]), onClick: _this.decreasePart },\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-s\" }))))));\n }));\n return label\n ? (React.createElement(FloatingLabel, { label: label, editorId: inputId, editorValue: currentText, editorValid: isValid, editorDisabled: this.props.disabled, children: dateinput, style: { width: this.props.width } }))\n : dateinput;\n };\n Object.defineProperty(DateInputWithoutContext.prototype, \"value\", {\n /* Public Getters */\n /**\n * Gets the value of the DateInput.\n */\n get: function () {\n if (this.valueDuringOnChange !== undefined) {\n return this.valueDuringOnChange;\n }\n return this.kendoDate && this.kendoDate.getDateObject();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the DateInput.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : DateInputWithoutContext.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : DateInputWithoutContext.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"text\", {\n /**\n * @hidden\n */\n get: function () {\n var props = __assign({}, DateInput.defaultProps, this.props);\n var _a = props.formatPlaceholder, formatPlaceholder = _a === void 0 ? DateInputWithoutContext.defaultProps.formatPlaceholder : _a, _b = props.format, format = _b === void 0 ? DateInputWithoutContext.defaultProps.format : _b, value = props.value, defaultValue = props.defaultValue;\n if (this.kendoDate === null) {\n this.kendoDate = new KendoDate(this.intl.bind(this), formatPlaceholder, format);\n this.kendoDate.setValue(value || defaultValue || null);\n }\n else {\n this.kendoDate.format = format;\n this.kendoDate.formatPlaceholder = formatPlaceholder;\n }\n if (value !== undefined && this.value !== value) {\n this.kendoDate.setValue(value);\n }\n var _c = this.kendoDate.getTextAndFormat(), currentText = _c.text, currentFormat = _c.format;\n this.currentFormat = currentFormat;\n return props.placeholder !== null && props.placeholder !== undefined\n && !this.state.focused\n && !this.kendoDate.hasValue()\n ? props.placeholder\n : currentText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DateInput is set.\n */\n get: function () {\n var inRange = isInRange(this.value, this.min, this.max)\n && isInTimeRange(this.value, this.props.minTime, this.props.maxTime);\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== null) && inRange;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"element\", {\n /**\n * Gets the element of the DateInput.\n *\n * @return - An `HTMLInputElement`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * }\n * element = null;\n * render() {\n * return (\n * <div>\n * <DateInput\n * ref={(dateInput) =>\n * this.element = dateInput ? dateInput.element : null}\n * />\n * <button onClick={() => console.log(this.element)}>console.log the element</button>\n * </div>\n * );\n * }\n * }\n *\n * ReactDOM.render(\n * <App />,\n * document.getElementsByTagName('my-app')[0]\n * );\n * ```\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DateInputWithoutContext.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DateInputWithoutContext.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"wrapper\", {\n /**\n * @hidden\n */\n get: function () {\n return this._wrapper;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n DateInputWithoutContext.prototype.intl = function () {\n return provideIntlService(this);\n };\n Object.defineProperty(DateInputWithoutContext.prototype, \"selection\", {\n /* end handlers */\n get: function () {\n var returnValue = { start: 0, end: 0 };\n if (this.element !== null && this.element.selectionStart !== undefined) {\n returnValue = { start: this.element.selectionStart, end: this.element.selectionEnd };\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n DateInputWithoutContext.prototype.setSelection = function (selection) {\n var _this = this;\n this._lastSelectedSymbol = this.currentFormat[selection.start];\n window.requestAnimationFrame(function () {\n if (_this.element && document.activeElement === _this.element) {\n _this.element.setSelectionRange(selection.start, selection.end);\n }\n });\n };\n DateInputWithoutContext.prototype.triggerChange = function (event, oldValue) {\n this.valueDuringOnChange = this.value;\n this.forceUpdate();\n if (this.props.onChange\n && !isEqual(oldValue, this.value)) {\n // isEqual works with null\n this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: this.value,\n target: this\n // inRange: this.props.min && this.props.max ? isInRange(value, this.props.min, this.props.max) : true\n });\n }\n this.valueDuringOnChange = undefined;\n };\n DateInputWithoutContext.prototype.selectionBySymbol = function (symbol) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.currentFormat.length; i++) {\n if (this.currentFormat[i] === symbol) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n return { start: start, end: end };\n };\n DateInputWithoutContext.prototype.selectionByIndex = function (index) {\n var selection = { start: index, end: index };\n for (var i = index, j = index - 1; i < this.currentFormat.length || j >= 0; i++, j--) {\n if (i < this.currentFormat.length && this.currentFormat[i] !== '_') {\n selection = this.selectionBySymbol(this.currentFormat[i]);\n break;\n }\n if (j >= 0 && this.currentFormat[j] !== '_') {\n selection = this.selectionBySymbol(this.currentFormat[j]);\n break;\n }\n }\n return selection;\n };\n DateInputWithoutContext.prototype.switchDateSegment = function (offset) {\n var _a = this.selection, selectionStart = _a.start, selectionEnd = _a.end;\n if (selectionStart < selectionEnd &&\n this.currentFormat[selectionStart] !== this.currentFormat[selectionEnd - 1]) {\n this.setSelection(this.selectionByIndex(offset > 0 ? selectionStart : selectionEnd - 1));\n return;\n }\n var previousFormatSymbol = this.currentFormat[selectionStart];\n var a = selectionStart + offset;\n while (a > 0 && a < this.currentFormat.length) {\n if (this.currentFormat[a] !== previousFormatSymbol &&\n this.currentFormat[a] !== '_') {\n break;\n }\n a += offset;\n }\n if (this.currentFormat[a] === '_') {\n // no known symbol is found\n return;\n }\n var b = a;\n while (b >= 0 && b < this.currentFormat.length) {\n if (this.currentFormat[b] !== this.currentFormat[a]) {\n break;\n }\n b += offset;\n }\n if (a > b && (b + 1 !== selectionStart || a + 1 !== selectionEnd)) {\n this.setSelection({ start: b + 1, end: a + 1 });\n }\n else if (a < b && (a !== selectionStart || b !== selectionEnd)) {\n this.setSelection({ start: a, end: b });\n }\n };\n DateInputWithoutContext.prototype.modifyDateSegmentValue = function (offset, event) {\n if (!this.kendoDate) {\n return;\n }\n var oldValue = this.value;\n var symbol = this.currentFormat[this.selection.start];\n var currentStepSymbol = this.kendoDate.symbolMap(symbol);\n var step = ((this.props.steps || {})[currentStepSymbol] || 1) * offset;\n this.kendoDate.modifyPart(symbol, step);\n this.triggerChange(event, oldValue);\n };\n /**\n * @hidden\n */\n DateInputWithoutContext.displayName = 'DateInput';\n /**\n * @hidden\n */\n DateInputWithoutContext.propTypes = {\n value: PropTypes.instanceOf(Date),\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n skeleton: PropTypes.string,\n pattern: PropTypes.string,\n date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n era: PropTypes.oneOf(['narrow', 'short', 'long']),\n year: PropTypes.oneOf(['numeric', '2-digit']),\n month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: PropTypes.oneOf(['numeric', '2-digit']),\n weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n hour: PropTypes.oneOf(['numeric', '2-digit']),\n hour12: PropTypes.bool,\n minute: PropTypes.oneOf(['numeric', '2-digit']),\n second: PropTypes.oneOf(['numeric', '2-digit']),\n timeZoneName: PropTypes.oneOf(['short', 'long'])\n })\n ]),\n formatPlaceholder: PropTypes.oneOfType([\n PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n PropTypes.shape({\n year: PropTypes.string,\n month: PropTypes.string,\n day: PropTypes.string,\n hour: PropTypes.string,\n minute: PropTypes.string,\n second: PropTypes.string\n })\n ]),\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n steps: PropTypes.shape({\n year: PropTypes.number,\n month: PropTypes.number,\n day: PropTypes.number,\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n spinners: PropTypes.bool,\n name: PropTypes.string,\n dir: PropTypes.string,\n label: PropTypes.string,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n ariaExpanded: PropTypes.oneOfType([\n PropTypes.bool\n ]),\n onChange: PropTypes.func,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool\n };\n /**\n * @hidden\n */\n DateInputWithoutContext.defaultProps = {\n format: defaultFormat,\n formatPlaceholder: defaultFormatPlaceholder,\n // defaultValue: null as Date | null,\n spinners: false,\n disabled: false,\n max: cloneDate(MAX_DATE),\n min: cloneDate(MIN_DATE),\n minTime: cloneDate(MIN_TIME),\n maxTime: cloneDate(MAX_TIME),\n required: false,\n validityStyles: true,\n validationMessage: VALIDATION_MESSAGE,\n placeholder: null\n // the rest of the properties are undefined by default\n };\n return DateInputWithoutContext;\n}(React.Component));\nexport { DateInputWithoutContext };\n/**\n * Represents the PropsContext of the `DateInput` component.\n * Used for global configuration of all `DateInput` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var DateInputPropsContext = createPropsContext();\n;\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the KendoReact DateInput Component.\n *\n * Accepts properties of type [DateInputProps]({% slug api_dateinputs_dateinputprops %}).\n * Obtaining the `ref` returns an object of type [DateInputHandle]({% slug api_dateinputs_dateinputhandle %}).\n */\nexport var DateInput = withPropsContext(DateInputPropsContext, DateInputWithoutContext);\nDateInput.displayName = 'KendoReactDateInput';\nregisterForIntl(DateInputWithoutContext);\nregisterForLocalization(DateInputWithoutContext);\n","import { getDate } from './get-date';\nimport { isEqual } from './is-equal';\n/**\n * A function that compares the date portions of 2 dates.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // true\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 2, 10)); // false\n * ```\n */\nexport var isEqualDate = function (candidate, expected) {\n if (!candidate && !expected) {\n return true;\n }\n return candidate && expected && isEqual(getDate(candidate), getDate(expected));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _a, _b, _c;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { RowHeightService, ScrollerService } from './services';\n/**\n * @hidden\n */\nexport var ScrollDirection;\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Backward\"] = 0] = \"Backward\";\n ScrollDirection[ScrollDirection[\"Forward\"] = 1] = \"Forward\";\n})(ScrollDirection || (ScrollDirection = {}));\nvar differenceToScroll = function (scrollTop, staticOffset, maxScrollDifference) {\n return Math.min(Math.abs(staticOffset - scrollTop), maxScrollDifference);\n};\nvar FRAME_DURATION = 17;\nvar scrollModifiers = (_a = {},\n _a[ScrollDirection.Forward] = function (step) { return function (value) { return value + step; }; },\n _a[ScrollDirection.Backward] = function (step) { return function (value) { return value - step; }; },\n _a);\nvar scrollNormalizers = (_b = {},\n _b[ScrollDirection.Forward] = function (end) { return function (value) { return Math.min(value, end); }; },\n _b[ScrollDirection.Backward] = function (end) { return function (value) { return Math.max(value, end); }; },\n _b);\nvar scrollValidators = (_c = {},\n _c[ScrollDirection.Forward] = function (end) { return function (start) { return start < end; }; },\n _c[ScrollDirection.Backward] = function (end) { return function (start) { return start > end; }; },\n _c);\n/**\n * @hidden\n */\nvar Virtualization = /** @class */ (function (_super) {\n __extends(Virtualization, _super);\n function Virtualization(props) {\n var _this = _super.call(this, props) || this;\n _this.animationInProgress = false;\n _this.scrollTo = function (value) {\n var scrollProperty = _this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n if (!_this.scrollContainer) {\n return;\n }\n _this.scrollContainer[scrollProperty] = value;\n };\n _this.scrollToIndex = function (index) {\n if (_this.scrollToIndexTimeout !== undefined) {\n window.cancelAnimationFrame(_this.scrollToIndexTimeout);\n }\n if (!_this.rowHeightService) {\n return;\n }\n _this.scrollToIndexTimeout = window.requestAnimationFrame(function () {\n _this.animationInProgress = false;\n _this.scrollTo(_this.rowHeightService.offset(index));\n });\n };\n _this.animateToIndex = function (index) {\n if (!_this.rowHeightService || !window) {\n return;\n }\n window.cancelAnimationFrame(_this.cancelAnimation);\n var indexOffset = _this.rowHeightService.offset(index);\n var direction = _this.getContainerScrollDirection(indexOffset);\n var _a = _this.scrollRange(indexOffset, direction), start = _a.start, end = _a.end;\n if (start === end) {\n return;\n }\n var step = _this.scrollStep(start, end);\n var modifyScroll = scrollModifiers[direction](step);\n var normalizeScroll = scrollNormalizers[direction](end);\n var isScrollValid = scrollValidators[direction](modifyScroll(end));\n var animate = function (progress) {\n _this.animationInProgress = true;\n var next = modifyScroll(progress);\n _this.scrollTo(normalizeScroll(next));\n isScrollValid(next)\n ? _this.cancelAnimation = window.requestAnimationFrame(function () { animate(next); })\n : _this.animationInProgress = false;\n };\n _this.cancelAnimation = window.requestAnimationFrame(function () { animate(start); });\n };\n _this.scrollToBottom = function () {\n if (!_this.rowHeightService) {\n return;\n }\n _this.scrollTo(_this.rowHeightService.totalHeight() + _this.props.bottomOffset);\n };\n _this.scrollStep = function (start, end) {\n var duration = _this.props.scrollDuration || Virtualization.defaultProps.scrollDuration;\n return Math.abs(end - start) / (duration / FRAME_DURATION);\n };\n _this.scrollRange = function (indexOffset, direction) {\n var containerScroll = _this.containerScrollPosition;\n if (parseInt(\"\" + indexOffset, 10) === parseInt(\"\" + containerScroll, 10)) {\n return { start: indexOffset, end: indexOffset };\n }\n var maxScroll = _this.containerMaxScroll();\n var sign = direction === ScrollDirection.Backward ? 1 : -1;\n var difference = differenceToScroll(containerScroll, indexOffset, _this.props.maxScrollDifference);\n var end = Math.min(indexOffset, maxScroll);\n var start = Math.min(Math.max(end + (sign * difference), 0), maxScroll);\n return { start: start, end: end };\n };\n _this.containerMaxScroll = function () {\n return _this.containerScrollSize - _this.containerOffsetSize;\n };\n _this.getContainerScrollDirection = function (indexOffset) {\n return indexOffset < _this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;\n };\n _this.initServices = function (props) {\n if (props === void 0) { props = _this.props; }\n var dimension = _this.direction === 'vertical' ? props.itemHeight : props.itemWidth;\n if (dimension === undefined) {\n return;\n }\n _this.rowHeightService = new RowHeightService(props.total, dimension, 0);\n _this.scrollerService.create(_this.rowHeightService, props.skip, props.take, props.total, props.topOffset, _this.scrollOffsetSize, _this.direction);\n };\n _this.getContainerProperty = function (propertyName) {\n if (!_this.scrollContainer) {\n return 0;\n }\n return _this.scrollContainer[propertyName];\n };\n _this.handleScroll = function (event) {\n if (!_this.scrollContainer || !_this.rowHeightService) {\n return;\n }\n var target = event.target;\n _this.scrollerService.onScroll({\n scrollLeft: target.scrollLeft,\n scrollTop: target.scrollTop,\n offsetHeight: target.offsetHeight,\n offsetWidth: target.offsetWidth\n });\n var index = _this.rowHeightService.index(_this.containerScrollPosition - _this.props.topOffset);\n var onScrollAction = _this.props.onScrollAction;\n var args = {\n index: index,\n target: target,\n scrollAction: _this.scrollAction,\n pageAction: _this.pageAction,\n animationInProgress: _this.animationInProgress\n };\n if (_this.props.onScroll) {\n _this.props.onScroll.call(undefined, event);\n }\n if (onScrollAction) {\n onScrollAction.call(undefined, args);\n }\n _this.scrollAction = undefined;\n _this.pageAction = undefined;\n };\n _this.handleScrollAction = function (action) {\n _this.scrollAction = action;\n };\n _this.handlePageAction = function (action) {\n _this.pageAction = action;\n };\n _this.scrollerService = new ScrollerService(_this.handleScrollAction, _this.handlePageAction);\n return _this;\n }\n Object.defineProperty(Virtualization.prototype, \"element\", {\n get: function () {\n return this.scrollContainer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"containerOffsetSize\", {\n get: function () {\n return this.getContainerProperty(this.direction === 'vertical' ? 'offsetHeight' : 'offsetWidth');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"containerScrollSize\", {\n get: function () {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"containerScrollPosition\", {\n get: function () {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"direction\", {\n get: function () {\n return this.props.direction !== undefined ? this.props.direction : Virtualization.defaultProps.direction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"scrollOffsetSize\", {\n get: function () {\n return this.props.scrollOffsetSize !== undefined\n ? this.props.scrollOffsetSize : Virtualization.defaultProps.scrollOffsetSize;\n },\n enumerable: true,\n configurable: true\n });\n Virtualization.prototype.activeIndex = function () {\n return this.itemIndex(Math.ceil(this.containerScrollPosition));\n };\n Virtualization.prototype.itemIndex = function (offset) {\n if (!this.rowHeightService) {\n return 0;\n }\n return this.rowHeightService.index(offset);\n };\n Virtualization.prototype.itemOffset = function (index) {\n if (!this.rowHeightService) {\n return 0;\n }\n return this.rowHeightService.offset(index);\n };\n Virtualization.prototype.isIndexVisible = function (index) {\n if (!this.rowHeightService) {\n return false;\n }\n var containerTop = this.containerScrollPosition;\n var containerBottom = containerTop + this.containerOffsetSize;\n var top = this.rowHeightService.offset(index);\n var bottom = top + this.rowHeightService.height(index);\n return top >= containerTop && bottom <= containerBottom;\n };\n Virtualization.prototype.isListScrolled = function (index) {\n if (!this.rowHeightService) {\n return false;\n }\n return this.containerScrollPosition !== this.rowHeightService.offset(index);\n };\n Virtualization.prototype.componentDidMount = function () {\n var onMount = this.props.onMount;\n if (onMount) {\n onMount.call(undefined, this);\n }\n };\n Virtualization.prototype.render = function () {\n var _this = this;\n if (this.lastTotal !== this.props.total\n || this.lastDirection !== this.direction\n || this.lastTake !== this.props.take) {\n this.initServices();\n this.lastTotal = this.props.total;\n this.lastDirection = this.direction;\n this.lastTake = this.props.take;\n }\n var vertexLength = \"\" + ((this.rowHeightService ? this.rowHeightService.totalHeight() : 0) + this.props.bottomOffset);\n var placeholderStyle = this.direction === 'vertical'\n ? { height: vertexLength + \"px\" }\n : { width: vertexLength + \"px\" };\n var rootClassNames = classNames('k-content k-calendar-content k-scrollable', {\n 'k-scrollable-horizontal': this.direction === 'horizontal'\n }, this.props.className);\n var scrollableClassNames = classNames('k-scrollable-placeholder', {\n 'k-scrollable-horizontal-placeholder': this.direction === 'horizontal'\n });\n return (React.createElement(\"div\", { ref: function (el) { _this.scrollContainer = el; }, onScroll: this.handleScroll, className: rootClassNames, tabIndex: this.props.tabIndex, role: this.props.role },\n this.props.children,\n React.createElement(\"div\", { style: placeholderStyle, className: scrollableClassNames })));\n };\n Virtualization.propTypes = {\n bottomOffset: PropTypes.number.isRequired,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n forceScroll: PropTypes.bool,\n itemHeight: PropTypes.number,\n itemWidth: PropTypes.number,\n maxScrollDifference: PropTypes.number,\n onScroll: PropTypes.func,\n onScrollAction: PropTypes.func,\n scrollDuration: PropTypes.number,\n scrollOffsetSize: PropTypes.number,\n skip: PropTypes.number.isRequired,\n tabIndex: PropTypes.number,\n take: PropTypes.number.isRequired,\n topOffset: PropTypes.number.isRequired,\n total: PropTypes.number.isRequired,\n role: PropTypes.string\n };\n Virtualization.defaultProps = {\n direction: 'vertical',\n forceScroll: false,\n scrollOffsetSize: 0,\n maxScrollDifference: 100,\n scrollDuration: 100\n };\n return Virtualization;\n}(React.Component));\nexport { Virtualization };\n","/**\n * @hidden\n */\nvar update = function (arr, idx, value) { return (arr.slice(0, idx + 1).concat((arr.slice(idx + 1).map(function (x) { return x + value; })))); };\n/**\n * @hidden\n */\nvar RowHeightService = /** @class */ (function () {\n function RowHeightService(total, rowHeight, detailRowHeight) {\n if (total === void 0) { total = 0; }\n this.total = total;\n this.rowHeight = rowHeight;\n this.detailRowHeight = detailRowHeight;\n this.offsets = [];\n this.heights = [];\n var agg = 0;\n for (var idx = 0; idx < total; idx++) {\n this.offsets.push(agg);\n agg += rowHeight;\n this.heights.push(rowHeight);\n }\n }\n RowHeightService.prototype.height = function (rowIndex) {\n return this.heights[rowIndex];\n };\n RowHeightService.prototype.expandDetail = function (rowIndex) {\n if (this.height(rowIndex) === this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight);\n }\n };\n RowHeightService.prototype.collapseDetail = function (rowIndex) {\n if (this.height(rowIndex) > this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight * -1);\n }\n };\n RowHeightService.prototype.index = function (position) {\n for (var i = 0; i < this.offsets.length; i++) {\n if (position === this.offsets[i]) {\n return i;\n }\n if (position < this.offsets[i]) {\n return i - 1;\n }\n }\n return this.total - 1;\n };\n RowHeightService.prototype.offset = function (rowIndex) {\n return this.offsets[rowIndex];\n };\n RowHeightService.prototype.totalHeight = function () {\n return this.heights.reduce(function (prev, curr) { return prev + curr; }, 0);\n };\n RowHeightService.prototype.updateRowHeight = function (rowIndex, value) {\n this.heights[rowIndex] += value;\n this.offsets = update(this.offsets, rowIndex, value);\n };\n return RowHeightService;\n}());\nexport { RowHeightService };\n","var normalize = function (x) { return Math.max(x, 0); };\n/**\n * @hidden\n */\nvar ScrollAction = /** @class */ (function () {\n function ScrollAction(offset) {\n this.offset = offset;\n }\n return ScrollAction;\n}());\nexport { ScrollAction };\n/**\n * @hidden\n */\nvar PageAction = /** @class */ (function () {\n function PageAction(skip) {\n this.skip = skip;\n }\n return PageAction;\n}());\nexport { PageAction };\n/**\n * @hidden\n */\nvar ScrollerService = /** @class */ (function () {\n function ScrollerService(onScrollAction, onPageAction) {\n this.onScrollAction = onScrollAction;\n this.onPageAction = onPageAction;\n this.firstLoaded = 0;\n this.bottomOffset = 0;\n this.topOffset = 0;\n }\n ScrollerService.prototype.create = function (rowHeightService, skip, take, total, topOffset, bottomOffset, direction) {\n if (topOffset === void 0) { topOffset = 0; }\n if (bottomOffset === void 0) { bottomOffset = 0; }\n if (direction === void 0) { direction = 'vertical'; }\n this.rowHeightService = rowHeightService;\n this.firstLoaded = skip;\n this.lastLoaded = skip + take;\n this.take = take;\n this.total = total;\n this.lastScrollTop = 0;\n this.topOffset = topOffset;\n this.bottomOffset = bottomOffset;\n this.direction = direction;\n var offsetBufferRows = this.rowsForHeight(topOffset);\n var skipWithOffset = normalize(skip - offsetBufferRows);\n this.onScrollAction(new ScrollAction(this.rowOffset(skipWithOffset)));\n this.onPageAction(new PageAction(skipWithOffset));\n };\n ScrollerService.prototype.onScroll = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollTop = _a.scrollTop, offsetHeight = _a.offsetHeight, offsetWidth = _a.offsetWidth;\n var scrollPosition = this.direction === 'vertical' ? scrollTop : scrollLeft;\n var offsetSize = this.direction === 'vertical' ? offsetHeight : offsetWidth;\n if (this.lastScrollTop === scrollPosition) {\n return;\n }\n var up = this.lastScrollTop >= scrollPosition;\n this.lastScrollTop = scrollPosition;\n var firstItemIndex = this.rowHeightService.index(normalize(scrollPosition - this.topOffset));\n var lastItemIndex = this.rowHeightService.index(normalize(scrollPosition + offsetSize - this.bottomOffset));\n if (!up && lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n this.firstLoaded = firstItemIndex;\n this.onScrollAction(new ScrollAction(this.rowOffset(firstItemIndex)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n this.onPageAction(new PageAction(this.firstLoaded));\n }\n if (up && firstItemIndex <= this.firstLoaded) {\n var nonVisibleBuffer = Math.floor(this.take * 0.3);\n this.firstLoaded = normalize(firstItemIndex - nonVisibleBuffer);\n this.onScrollAction(new ScrollAction(this.rowOffset(this.firstLoaded)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n this.onPageAction(new PageAction(this.firstLoaded));\n }\n };\n ScrollerService.prototype.rowOffset = function (index) {\n return this.rowHeightService.offset(index) + this.topOffset;\n };\n ScrollerService.prototype.rowsForHeight = function (height) {\n return Math.ceil(height / this.rowHeightService.height(0));\n };\n return ScrollerService;\n}());\nexport { ScrollerService };\n","/**\n * Enumeration which represents the week days.\n */\nexport var Day;\n(function (Day) {\n /**\n * The Sunday value with an underlying `0` number value.\n */\n Day[Day[\"Sunday\"] = 0] = \"Sunday\";\n /**\n * The Monday value with an underlying `1` number value.\n */\n Day[Day[\"Monday\"] = 1] = \"Monday\";\n /**\n * The Tuesday value with an underlying `2` number value.\n */\n Day[Day[\"Tuesday\"] = 2] = \"Tuesday\";\n /**\n * The Wednesday value with an underlying `3` number value.\n */\n Day[Day[\"Wednesday\"] = 3] = \"Wednesday\";\n /**\n * The Thursday value with an underlying `4` number value.\n */\n Day[Day[\"Thursday\"] = 4] = \"Thursday\";\n /**\n * The Friday value with an underlying `5` number value.\n */\n Day[Day[\"Friday\"] = 5] = \"Friday\";\n /**\n * The Saturday value with an underlying `6` number value.\n */\n Day[Day[\"Saturday\"] = 6] = \"Saturday\";\n})(Day || (Day = {}));\n","// tslint:disable:max-line-length\n/**\n * An enumeration which represents the horizontal direction. The `Forward` option moves forward. The `Backward` option moves backward.\n */\nexport var Direction;\n(function (Direction) {\n /**\n * The `Forward` value with an underlying `1` number value.\n */\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n /**\n * The `Backward` value with an underlying `-1` (minus one) number value.\n */\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n// tslint:enable:max-line-length\n","import { Direction } from \"./direction.enum\";\nimport { adjustDST } from \"./adjust-dst\";\nimport { cloneDate } from './clone-date';\n/**\n * @hidden\n *\n * A function which returns the next or previous date for a specific week day. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @param direction - The `Direction` enum specifying the calculation direction.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Forward); // 2016-01-06, Wednesday\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Backward); // 2015-12-30, Wednesday\n * ```\n */\nexport var dayOfWeek = function (date, weekDay, direction) {\n if (direction === void 0) { direction = Direction.Forward; }\n var newDate = cloneDate(date);\n var newDay = ((weekDay - newDate.getDay()) + (7 * direction)) % 7;\n newDate.setDate(newDate.getDate() + newDay);\n return adjustDST(newDate, date.getHours());\n};\n","/**\n * The Enum which defines all possible Calendar view types.\n */\nexport var CalendarViewEnum;\n(function (CalendarViewEnum) {\n CalendarViewEnum[CalendarViewEnum[\"month\"] = 0] = \"month\";\n CalendarViewEnum[CalendarViewEnum[\"year\"] = 1] = \"year\";\n CalendarViewEnum[CalendarViewEnum[\"decade\"] = 2] = \"decade\";\n CalendarViewEnum[CalendarViewEnum[\"century\"] = 3] = \"century\";\n})(CalendarViewEnum || (CalendarViewEnum = {}));\n","import { Day } from './day.enum';\nimport { addDays } from './add-days';\nimport { createDate } from './create-date';\nimport { prevDayOfWeek } from './prev-day-of-week';\nimport { MS_PER_DAY } from './constants';\nimport { getDate } from './get-date';\nvar moveDateToWeekStart = function (date, weekStartDay) {\n if (weekStartDay !== Day.Monday) {\n return addDays(prevDayOfWeek(date, weekStartDay), 4);\n }\n return addDays(date, (4 - (date.getDay() || 7)));\n};\nvar calcWeekInYear = function (date, weekStartDay) {\n var firstWeekInYear = createDate(date.getFullYear(), 0, 1, -6);\n var newDate = moveDateToWeekStart(date, weekStartDay);\n var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n var days = Math.floor(diffInMS / MS_PER_DAY);\n return 1 + Math.floor(days / 7);\n};\n/**\n * A function that returns the number of the week within a year, which is calculated in relation to the date.\n *\n * For more information, refer to the [**ISO week date**](https://en.wikipedia.org/wiki/ISO_week_date) article.\n *\n * @param date - The date used for the week number calculation.\n * @param weekStartDay - The first day of the week. By default, the first week day is Monday.\n * @returns - The number of the week within the year.\n *\n * @example\n * ```ts-no-run\n * weekInYear(new Date(2016, 0, 1)); // Week 53, 2015\n * weekInYear(new Date(2016, 0, 5)); // Week 1, 2016\n * weekInYear(new Date(2017, 0, 1)); // Week 52, 2016\n * weekInYear(new Date(2017, 0, 2)); // Week 1, 2017\n * ```\n */\nexport var weekInYear = function (date, weekStartDay) {\n if (weekStartDay === void 0) { weekStartDay = Day.Monday; }\n date = getDate(date);\n var prevWeekDate = addDays(date, -7);\n var nextWeekDate = addDays(date, 7);\n var weekNumber = calcWeekInYear(date, weekStartDay);\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n return weekNumber;\n};\n","import { Direction } from \"./direction.enum\";\nimport { dayOfWeek } from './day-of-week';\n/**\n * A function which returns a date by a specific week name. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * prevDayOfWeek(new Date(2016, 0, 1), Day.Wednesday); // 2015-12-30, Wednesday\n * ```\n */\nexport var prevDayOfWeek = function (date, weekDay) {\n return dayOfWeek(date, weekDay, Direction.Backward);\n};\n","/**\n * The number of milliseconds in one minute.\n */\nexport var MS_PER_MINUTE = 60000;\n/**\n * The number of milliseconds in one hour.\n */\nexport var MS_PER_HOUR = 3600000;\n/**\n * The number of milliseconds in one standard day.\n */\nexport var MS_PER_DAY = 86400000;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar compareProps = function (x, y) {\n var xProps = Object.getOwnPropertyNames(x);\n var yProps = Object.getOwnPropertyNames(y);\n if (xProps.length !== yProps.length) {\n return false;\n }\n for (var i = 0; i < xProps.length; i++) {\n var propName = xProps[i];\n if (x[propName] !== y[propName]) {\n return false;\n }\n }\n return true;\n};\n/**\n * The `CalendarCell` component is internally used for rendering the items in the current view. Also be used as a custom `cell` of the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-cell) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-cell).\n *\n * * [Customizing the cells inside the Calendar view]({% slug custom_rendering_calendar %}#toc-cells-inside-the-view)\n * * [Customizing the cells inside the MultiViewCalendar view]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-view)\n */\nvar CalendarCell = /** @class */ (function (_super) {\n __extends(CalendarCell, _super);\n function CalendarCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // tslint:enable:max-line-length\n _this.handleClick = function (event) {\n var _a = _this.props, onClick = _a.onClick, value = _a.value;\n if (onClick) {\n onClick.call(undefined, value, event);\n }\n };\n _this.handleMouseEnter = function () {\n var _a = _this.props, onMouseEnter = _a.onMouseEnter, value = _a.value;\n if (onMouseEnter) {\n onMouseEnter.call(undefined, value);\n }\n };\n _this.handleMouseLeave = function () {\n var _a = _this.props, onMouseLeave = _a.onMouseLeave, value = _a.value;\n if (onMouseLeave) {\n onMouseLeave.call(undefined, value);\n }\n };\n return _this;\n }\n // Manually checking if the component needs an update\n // due to date object being compared by instance\n // and new Date object is created\n // every time and fails the shallow compare of the React.PureComponent.\n /**\n * @hidden\n */\n CalendarCell.prototype.shouldComponentUpdate = function (nextProps) {\n var _a = this.props, value = _a.value, props = __rest(_a, [\"value\"]);\n var newValue = nextProps.value, newProps = __rest(nextProps, [\"value\"]);\n var valueEqual = !(value && newValue) || value.getTime() === newValue.getTime();\n return !(valueEqual && compareProps(props, newProps));\n };\n /* eslint-disable max-len */\n /**\n * @return\n * Returns a `<td />` element with a `<span className=\"k-link\" />` inside to apply the styles. The text inside is the [`formattedValue`]({% slug api_dateinputs_calendarcellprops %}#toc-formattedvalue) of the `cell`.\n */\n CalendarCell.prototype.render = function () {\n var _a = this.props, className = _a.className, formattedValue = _a.formattedValue, isWeekend = _a.isWeekend, isFocused = _a.isFocused, isInRange = _a.isInRange, isSelected = _a.isSelected, isRangeStart = _a.isRangeStart, isRangeMid = _a.isRangeMid, isRangeEnd = _a.isRangeEnd, isRangeSplitStart = _a.isRangeSplitStart, isRangeSplitEnd = _a.isRangeSplitEnd, isToday = _a.isToday, isDisabled = _a.isDisabled, view = _a.view, value = _a.value, other = __rest(_a, [\"className\", \"formattedValue\", \"isWeekend\", \"isFocused\", \"isInRange\", \"isSelected\", \"isRangeStart\", \"isRangeMid\", \"isRangeEnd\", \"isRangeSplitStart\", \"isRangeSplitEnd\", \"isToday\", \"isDisabled\", \"view\", \"value\"]);\n var isEndActive = this.props.activeRangeEnd === 'end' && isRangeEnd;\n var isStartActive = this.props.activeRangeEnd === 'start' && isRangeStart;\n var rootClassName = classNames('k-calendar-td', {\n 'k-range-end': isRangeEnd,\n 'k-range-mid': isRangeMid,\n 'k-range-split-end': isRangeSplitEnd,\n 'k-range-split-start': isRangeSplitStart,\n 'k-range-start': isRangeStart,\n 'k-state-active': isStartActive || isEndActive,\n 'k-state-pending-focus': isFocused,\n 'k-state-selected': isSelected || isRangeStart || isRangeEnd,\n 'k-today': isToday,\n 'k-weekend': isWeekend,\n 'k-state-disabled': isDisabled\n }, className);\n return (React.createElement(\"td\", __assign({}, other, { className: rootClassName, onClick: this.handleClick, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }),\n React.createElement(\"span\", { className: \"k-link\" }, this.props.children)));\n };\n return CalendarCell;\n}(React.Component));\nexport { CalendarCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * The `CalendarWeekCell` component is internally used for rendering the week cells inside the `month` view of the Calendar. Also used as a [custom week cell for the Calendar]({% slug api_dateinputs_calendarprops %}#toc-weekcell) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-weekcell) components.\n *\n * * [Customizing week-column cells in the Calendar]({% slug custom_rendering_calendar %}#toc-cells-inside-the-week-column)\n * * [Customizing week-column cells in the MultiViewCalendar]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-week-column)\n */\nvar CalendarWeekCell = /** @class */ (function (_super) {\n __extends(CalendarWeekCell, _super);\n function CalendarWeekCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return\n * Returns a `<td />` element with the [`value`]({% slug api_dateinputs_calendarweekcellprops %}#toc-value) as a child.\n */\n CalendarWeekCell.prototype.render = function () {\n var _a = this.props, className = _a.className, firstDate = _a.firstDate, other = __rest(_a, [\"className\", \"firstDate\"]);\n return (React.createElement(\"td\", __assign({ className: classNames('k-calendar-td', className) }, other), this.props.children));\n };\n return CalendarWeekCell;\n}(React.Component));\nexport { CalendarWeekCell };\n","import { shiftWeekNames } from '../../utils';\n/**\n * @hidden\n */\nvar WeekNamesService = /** @class */ (function () {\n function WeekNamesService(intl) {\n this.intl = intl;\n }\n WeekNamesService.prototype.getWeekNames = function (includeWeekNumber) {\n if (includeWeekNumber === void 0) { includeWeekNumber = false; }\n var weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return includeWeekNumber ? [''].concat(weekNames) : weekNames;\n };\n return WeekNamesService;\n}());\nexport { WeekNamesService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { weekInYear, cloneDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { CalendarCell } from './CalendarCell';\nimport { CalendarWeekCell } from './CalendarWeekCell';\nimport { CalendarViewEnum } from '../models';\nimport { setTime, getToday } from '../../utils';\nimport { WeekNamesService } from '../services';\n// In case we decide to render content for the next month in the empty cells,\n// add k-other-month class to all cells and k-weekend for weekend cells.\n// tslint:disable-next-line jsx-use-translation-function\nvar emptyCell = function (idx) { return (React.createElement(\"td\", { key: idx, className: 'k-calendar-td' }, \"\\u00A0\")); };\n/**\n * @hidden\n */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n function View() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buildWeekNumber = function (row, idx) {\n var firstDayOfWeek = _this.firstDate(row);\n if (!firstDayOfWeek) {\n return emptyCell(\"week-cell-\" + idx);\n }\n var firstDate = _this.firstDate(row);\n var weekCellValue = _this.getWeekNumber(firstDate);\n var uniqueID = \"kendo-react-calendar-week-cell-\" + weekCellValue;\n var cellProps = {\n className: 'k-alt',\n value: weekCellValue,\n firstDate: firstDate\n };\n return _this.props.weekCell\n ? React.createElement(_this.props.weekCell, __assign({}, cellProps, { key: uniqueID }), weekCellValue)\n : React.createElement(CalendarWeekCell, __assign({}, cellProps, { key: uniqueID }), weekCellValue);\n };\n _this.buildRow = function (row) {\n return row.map(function (cell, idx) {\n if (!cell) {\n return emptyCell(idx);\n }\n var aria = { 'aria-selected': cell.isSelected };\n var uniqueID = \"kendo-react-calendar-cell-\" + cell.value.getTime();\n var cellProps = __assign({}, aria, cell, { isDisabled: !cell.isInRange, view: _this.props.activeView, onClick: _this.handleClick, onMouseEnter: _this.handleMouseEnter, onMouseLeave: _this.handleMouseLeave });\n return _this.props.cell\n ? (React.createElement(_this.props.cell, __assign({}, cellProps, { key: uniqueID }), cell.formattedValue))\n : (React.createElement(CalendarCell, __assign({}, cellProps, { key: uniqueID }), cell.formattedValue));\n });\n };\n _this.firstDate = function (row) {\n var cell = _this.firstWeekDateContext(row);\n return cell ? cell.value : null;\n };\n _this.firstWeekDateContext = function (rowCtx) {\n if (!_this.weekNumber) {\n return null;\n }\n var idx = 0;\n var ctx = rowCtx[idx];\n while (!ctx && idx < rowCtx.length) {\n ctx = rowCtx[++idx];\n }\n return ctx;\n };\n _this.handleClick = function (value, event) {\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n value: cloneDate(value),\n target: _this,\n nativeEvent: event && event.nativeEvent,\n syntheticEvent: event\n };\n onChange.call(undefined, args);\n }\n };\n _this.handleMouseEnter = function (value) {\n var onCellEnter = _this.props.onCellEnter;\n if (onCellEnter) {\n onCellEnter.call(undefined, cloneDate(value));\n }\n };\n _this.handleMouseLeave = function (value) {\n var onCellLeave = _this.props.onCellLeave;\n if (onCellLeave) {\n onCellLeave.call(undefined, cloneDate(value));\n }\n };\n return _this;\n }\n Object.defineProperty(View.prototype, \"min\", {\n get: function () {\n return this.props.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"max\", {\n get: function () {\n return this.props.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"isHorizontal\", {\n get: function () {\n return this.props.direction === 'horizontal';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"isMonthView\", {\n get: function () {\n return this.props.activeView === CalendarViewEnum.month;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"weekNumber\", {\n get: function () {\n return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"selectedDate\", {\n get: function () {\n return this.props.selectedDate !== undefined ? this.props.selectedDate : View.defaultProps.selectedDate;\n },\n enumerable: true,\n configurable: true\n });\n View.prototype.render = function () {\n var _this = this;\n this.intl = provideIntlService(this);\n this.weekService = new WeekNamesService(this.intl);\n var weekNames = this.weekService.getWeekNames(this.weekNumber);\n var colSpan = this.props.service.rowLength(this.weekNumber);\n var title = this.props.service.title(this.props.viewDate);\n var time = getToday();\n var viewDate = setTime(this.props.viewDate, time);\n var data = this.props.service.data({\n cellUID: this.props.cellUID,\n min: this.min,\n max: this.max,\n focusedDate: this.props.focusedDate,\n isActiveView: !this.props.bus.canMoveDown(this.props.activeView),\n selectedDate: this.selectedDate,\n selectionRange: this.props.selectionRange,\n viewDate: viewDate\n });\n return (React.createElement(React.Fragment, null,\n (this.isMonthView && this.isHorizontal) && (React.createElement(\"thead\", { role: \"rowgroup\", className: \"k-calendar-thead\" },\n React.createElement(\"tr\", { role: \"row\", className: \"k-calendar-tr\" }, weekNames.map(function (name, idx) { return (React.createElement(\"th\", { key: idx, className: \"k-calendar-th\" }, name)); })))),\n React.createElement(\"tbody\", { role: \"rowgroup\", className: \"k-calendar-tbody\" },\n !this.isHorizontal && (React.createElement(\"tr\", { role: \"presentation\", className: \"k-calendar-tr\" },\n React.createElement(\"th\", { scope: \"col\", colSpan: colSpan, className: \"k-calendar-th\" }, title))),\n data.map(function (row, idx) {\n return (React.createElement(\"tr\", { role: \"row\", className: \"k-calendar-tr\", key: idx },\n _this.weekNumber && _this.buildWeekNumber(row, idx),\n _this.buildRow(row)));\n }))));\n };\n View.prototype.getWeekNumber = function (date) {\n if (!this.weekNumber) {\n return null;\n }\n return weekInYear(date, this.intl.firstDay());\n };\n View.propTypes = {\n activeRangeEnd: PropTypes.oneOf(['start', 'end', null]),\n activeView: PropTypes.number.isRequired,\n cellUID: PropTypes.string.isRequired,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n focusedDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onChange: PropTypes.func,\n selectedDate: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.arrayOf(PropTypes.instanceOf(Date))]),\n showWeekNumbers: PropTypes.bool,\n viewDate: PropTypes.instanceOf(Date).isRequired\n };\n View.defaultProps = {\n direction: 'vertical',\n selectedDate: getToday(),\n showWeekNumbers: false\n };\n return View;\n}(React.Component));\nexport { View };\nregisterForIntl(View);\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-buttons',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642516028,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","/**\n * @hidden\n */\nvar styles = {\n button: 'k-button',\n 'flat': 'k-flat',\n 'outline': 'k-outline',\n 'clear': 'k-button-clear',\n 'primary': 'k-primary',\n 'state-selected': 'k-state-selected',\n 'button-icon': 'k-button-icon',\n 'button-icontext': 'k-button-icontext',\n 'state-disabled': 'k-state-disabled',\n 'group-start': 'k-group-start',\n 'group-end': 'k-group-end',\n 'button-group': 'k-button-group',\n 'button-group-stretched': 'k-button-group-stretched',\n 'ltr': 'k-ltr',\n 'rtl': 'k-rtl'\n};\nvar notDisabled = ':not(.k-state-disabled):not([disabled]):not([disabled=\"true\"])';\n/**\n * @hidden\n */\nexport var toolbarButtons = [\n 'button' + notDisabled,\n '.k-button-group > button' + notDisabled,\n '.k-dropdown > .k-dropdown-wrap' + notDisabled,\n '.k-colorpicker > .k-picker-wrap' + notDisabled\n];\n/**\n * @hidden\n */\nexport default {\n styles: styles\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport util from './util';\nvar styles = util.styles;\n/**\n * @hidden\n */\nfunction iconElement(_a) {\n var imageUrl = _a.imageUrl, icon = _a.icon, iconClass = _a.iconClass, imageAlt = _a.imageAlt;\n if (imageUrl) {\n return (React.createElement(\"img\", { role: \"presentation\", className: 'k-image', alt: imageAlt, src: imageUrl }));\n }\n else if (icon) {\n var iconClasses = classNames('k-icon', 'k-i-' + icon);\n return (React.createElement(\"span\", { role: \"presentation\", className: iconClasses }));\n }\n else if (iconClass) {\n return (React.createElement(\"span\", { role: \"presentation\", className: iconClass }));\n }\n return null;\n}\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n function Button(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this.handleClick = function (event) {\n _this.toggleIfApplicable();\n if (_this.props.onClick) {\n _this.props.onClick.call(undefined, event);\n }\n };\n validatePackage(packageMetadata);\n _this.state = { selected: _this.props.togglable === true && _this.props.selected === true };\n return _this;\n }\n Object.defineProperty(Button.prototype, \"element\", {\n /**\n * Gets the DOM element of the Button component.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Button.prototype, \"selected\", {\n /**\n * Returns `true` when the component is togglable and selected ([see example]({% slug toggleable_button %})).\n * Otherwise, returns `false`.\n */\n get: function () {\n return this._selectedTemp !== undefined ? this._selectedTemp : this.state.selected;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Button.getDerivedStateFromProps = function (props, state) {\n if (props.togglable && props.selected !== undefined && props.selected !== state.selected) {\n return { selected: props.selected };\n }\n return null;\n };\n /**\n * @hidden\n */\n Button.prototype.render = function () {\n var _this = this;\n var _a;\n var _b = this.props, children = _b.children, look = _b.look, primary = _b.primary, togglable = _b.togglable, icon = _b.icon, iconClass = _b.iconClass, imageUrl = _b.imageUrl, imageAlt = _b.imageAlt, className = _b.className, onClick = _b.onClick, htmlAttributes = __rest(_b, [\"children\", \"look\", \"primary\", \"togglable\", \"icon\", \"iconClass\", \"imageUrl\", \"imageAlt\", \"className\", \"onClick\"]);\n var hasIcon = (icon !== undefined || iconClass !== undefined || imageUrl !== undefined);\n var hasChildren = children !== undefined;\n var buttonClasses = classNames([styles.button], (_a = {},\n _a[styles[\"\" + look]] = look !== 'default',\n _a[styles.primary] = primary,\n _a[styles['state-disabled']] = this.props.disabled,\n _a[styles['state-selected']] = this.state.selected,\n _a[styles['button-icon']] = !hasChildren && hasIcon,\n _a[styles['button-icontext']] = hasChildren && hasIcon,\n _a), [styles[\"\" + this.props.dir]], className);\n var buttonProps = {\n className: buttonClasses,\n onClick: this.handleClick,\n // Accessibility properties\n role: togglable ? 'checkbox' : undefined,\n 'aria-disabled': this.props.disabled || undefined,\n 'aria-checked': togglable ? this.state.selected : undefined\n };\n var iconEl = iconElement({\n icon: icon,\n iconClass: iconClass,\n imageUrl: imageUrl,\n imageAlt: imageAlt\n });\n return (React.createElement(\"button\", __assign({}, buttonProps, htmlAttributes, { ref: function (button) { return _this._element = button; } }),\n iconEl,\n children));\n };\n Button.prototype.toggleIfApplicable = function () {\n var _this = this;\n if (this.props.togglable && this.props.selected === undefined) {\n var selected = !this.state.selected;\n this._selectedTemp = selected;\n this.setState({ selected: selected }, function () { return _this._selectedTemp = undefined; });\n }\n };\n /**\n * @hidden\n */\n Button.propTypes = {\n children: PropTypes.node,\n look: PropTypes.oneOf(['default', 'flat', 'outline', 'clear']),\n primary: PropTypes.bool,\n selected: PropTypes.bool,\n togglable: PropTypes.bool,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n imageAlt: PropTypes.string\n };\n /**\n * @hidden\n */\n Button.defaultProps = {\n look: 'default',\n primary: false,\n togglable: false\n };\n return Button;\n}(React.Component));\nexport default Button;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport { Button } from '@progress/kendo-react-buttons';\nimport * as React from 'react';\n/**\n * The `CalendarHeaderTitle` component is internally used for rendering the title of the current calendar view. Also used as a custom `headerTitle` for the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-headertitle) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-headertitle) components.\n *\n * * [Customizing the title for the current Calendar view]({% slug custom_rendering_calendar %}#toc-cells-inside-the-view)\n * * [Customizing the title for the current MultiViewCalendar view]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-view)\n */\nvar CalendarHeaderTitle = /** @class */ (function (_super) {\n __extends(CalendarHeaderTitle, _super);\n function CalendarHeaderTitle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return\n * Returns a `<span />` element with the [`value`]({% slug api_dateinputs_calendarheadertitleprops %}#toc-value) of the title as a child.\n */\n CalendarHeaderTitle.prototype.render = function () {\n var _a = this.props, view = _a.view, props = __rest(_a, [\"view\"]);\n return (React.createElement(Button, __assign({ type: \"button\", look: \"flat\" }, props), this.props.children));\n };\n return CalendarHeaderTitle;\n}(React.PureComponent));\nexport { CalendarHeaderTitle };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForLocalization } from '@progress/kendo-react-intl';\nimport { classNames } from '@progress/kendo-react-common';\nimport { CalendarHeaderTitle } from './CalendarHeaderTitle';\nimport { MIN_DATE, MAX_DATE } from '../../defaults';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.getTitle = function () {\n if (!_this.props.currentDate) {\n return '';\n }\n var take = _this.rangeLength - 1;\n var title = _this.props.service.title(_this.props.currentDate);\n var nextDate = _this.props.service.addToDate(_this.props.currentDate, take);\n if (take < 1 || !_this.props.service.isInRange(nextDate, _this.min, _this.max)) {\n return title;\n }\n return title + \" - \" + _this.props.service.title(nextDate);\n };\n _this.handleTitleClick = function (event) {\n if (!_this.canMoveUp) {\n return;\n }\n _this.props.bus.moveUp(_this.props.activeView, event);\n };\n return _this;\n }\n Object.defineProperty(Header.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : Header.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : Header.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"rangeLength\", {\n get: function () {\n return this.props.rangeLength !== undefined ? this.props.rangeLength : Header.defaultProps.rangeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"canMoveUp\", {\n get: function () {\n return this.props.bus.canMoveUp(this.props.activeView);\n },\n enumerable: true,\n configurable: true\n });\n Header.prototype.render = function () {\n var title = this.getTitle();\n var titleClassNames = classNames('k-calendar-title');\n var headerTitleProps = {\n children: title,\n value: title,\n view: this.props.activeView,\n className: titleClassNames,\n onClick: this.handleTitleClick,\n disabled: !this.canMoveUp\n };\n var headerTitle = this.props.headerTitle\n ? React.createElement(this.props.headerTitle, __assign({}, headerTitleProps), title)\n : React.createElement(CalendarHeaderTitle, __assign({}, headerTitleProps), title);\n return (React.createElement(\"div\", { className: \"k-calendar-header k-hstack\" },\n headerTitle,\n React.createElement(\"span\", { className: \"k-spacer\" }),\n React.createElement(\"span\", { className: \"k-calendar-nav k-hstack\" }, this.props.commands)));\n };\n Header.propTypes = {\n activeView: PropTypes.number.isRequired,\n currentDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n rangeLength: PropTypes.number\n };\n Header.defaultProps = {\n rangeLength: 1,\n min: MIN_DATE,\n max: MAX_DATE\n };\n return Header;\n}(React.Component));\nexport { Header };\nregisterForLocalization(Header);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getDate } from '@progress/kendo-date-math';\nimport { messages, today } from '../../messages';\nimport { dateInRange, getToday, isInRange } from '../../utils';\nimport { MIN_DATE, MAX_DATE } from '../../defaults';\nvar TodayCommand = /** @class */ (function (_super) {\n __extends(TodayCommand, _super);\n function TodayCommand() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleClick = function (syntheticEvent) {\n if (!_this.todayIsInRange) {\n return;\n }\n if (_this.props.onClick) {\n _this.props.onClick.call(undefined, {\n syntheticEvent: syntheticEvent,\n nativeEvent: syntheticEvent.nativeEvent,\n value: dateInRange(getToday(), _this.min, _this.max),\n target: _this,\n isTodayClick: true\n });\n }\n };\n return _this;\n }\n Object.defineProperty(TodayCommand.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : TodayCommand.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TodayCommand.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : TodayCommand.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TodayCommand.prototype, \"todayIsInRange\", {\n get: function () {\n return isInRange(getToday(), getDate(this.min), getDate(this.max));\n },\n enumerable: true,\n configurable: true\n });\n TodayCommand.prototype.render = function () {\n this.localization = provideLocalizationService(this);\n var todayMessage = this.localization.toLanguageString(today, messages[today]);\n var todayClassNames = classNames('k-nav-today', {\n 'k-state-disabled': this.props.disabled\n });\n return (React.createElement(\"span\", { className: todayClassNames, onClick: this.handleClick }, todayMessage));\n };\n TodayCommand.propTypes = {\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onClick: PropTypes.func,\n disabled: PropTypes.bool\n };\n TodayCommand.defaultProps = {\n min: MIN_DATE,\n max: MAX_DATE\n };\n return TodayCommand;\n}(React.Component));\nexport { TodayCommand };\nregisterForLocalization(TodayCommand);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cloneDate, getDate, isEqualDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { Virtualization } from '../../virtualization/Virtualization';\nimport { View } from './View';\nimport { Header } from './Header';\nimport { dateInRange, getToday, isInRange, shiftWeekNames } from '../../utils';\nimport { CalendarViewEnum } from '../models';\nimport { TodayCommand } from './TodayCommand';\nvar VIEWS_COUNT = 5;\n/**\n * @hidden\n */\nvar ViewList = /** @class */ (function (_super) {\n __extends(ViewList, _super);\n function ViewList(props) {\n var _this = _super.call(this, props) || this;\n _this.isActive = false;\n _this.animateToIndex = true;\n _this.shouldScroll = false;\n _this.focusActiveDate = function () {\n if (!_this._element) {\n return;\n }\n var focusedCell = _this._element.querySelector('td.k-state-focused');\n var nextActiveCell = _this._element.querySelector('.k-state-pending-focus');\n if (focusedCell && focusedCell[0]) {\n focusedCell[0].classList.remove('k-state-focused');\n }\n if (nextActiveCell) {\n nextActiveCell.classList.add('k-state-focused');\n }\n _this.isActive = true;\n };\n _this.blurActiveDate = function () {\n if (!_this._element) {\n return;\n }\n var focusedCell = _this._element.querySelector('td.k-state-focused');\n if (focusedCell) {\n focusedCell.classList.remove('k-state-focused');\n }\n _this.isActive = false;\n };\n _this.handleVirtualizationMount = function (virtualization) {\n _this.virtualization = virtualization;\n if (_this.virtualization && _this.table) {\n _this.table.style.transform = \"translateY(\" + _this.viewOffset + \"px)\";\n var viewDate = dateInRange(_this.props.focusedDate, _this.props.min, _this.props.max);\n var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n _this.virtualization.scrollToIndex(indexToScroll);\n }\n };\n _this.buildMonthView = function (cols, weekNames) {\n return (React.createElement(\"table\", { key: \"calendar-view-list-weekdays\", className: \"k-calendar-table k-calendar-weekdays\" },\n React.createElement(\"colgroup\", null, cols.map(function (_, idx) { return (React.createElement(\"col\", { key: idx })); })),\n React.createElement(\"thead\", { className: \"k-calendar-thead\" },\n React.createElement(\"tr\", { className: \"k-calendar-tr\" }, weekNames.map(function (name, idx) { return (React.createElement(\"th\", { key: idx, className: \"k-calendar-th\" }, name)); })))));\n };\n _this.buildDates = function (cols, dates) {\n var cellUID = _this.props.cellUID;\n return (React.createElement(\"table\", { className: \"k-calendar-table\", ref: function (table) { return _this.table = table; } },\n React.createElement(\"colgroup\", null, cols.map(function (_, idx) { return (React.createElement(\"col\", { key: idx })); })),\n dates.map(function (date) { return (React.createElement(View, { ref: function (el) { if (!_this.calendarView) {\n _this.calendarView = el;\n } }, key: date.getTime(), activeView: _this.props.activeView, viewDate: date, min: _this.props.min, max: _this.props.max, cellUID: cellUID, focusedDate: _this.props.focusedDate, cell: _this.props.cell, selectedDate: _this.props.value, showWeekNumbers: _this.weekNumber, onChange: _this.handleDateChange, bus: _this.props.bus, service: _this.props.service, weekCell: _this.props.weekCell })); })));\n };\n _this.calculateHeights = function () {\n if (!_this.props.dom) {\n return;\n }\n var scrollableHeight = _this.props.activeView === CalendarViewEnum.month ?\n _this.props.dom.scrollableContentHeight :\n _this.props.dom.scrollableYearContentHeight;\n _this.bottomOffset = scrollableHeight - _this.props.dom.viewHeight(_this.props.activeView);\n _this.viewOffset = -1 * _this.props.dom.headerHeight;\n _this.viewHeight = _this.props.dom.viewHeight(_this.props.activeView) || 1;\n };\n _this.getTake = function (skip, total) {\n return Math.min(total - skip, _this.take);\n };\n _this.handleScrollAction = function (_a) {\n var index = _a.index, scrollAction = _a.scrollAction, pageAction = _a.pageAction;\n var skip = pageAction ? pageAction.skip : _this.state.skip;\n if (_this.state.index !== index || _this.state.skip !== skip) {\n _this.setState({ index: index, skip: skip });\n }\n if (_this.table && scrollAction) {\n var translate = \"translateY(\" + scrollAction.offset + \"px)\";\n _this.table.style.transform = translate;\n }\n };\n _this.handleTodayClick = function (event) {\n _this.shouldScroll = true;\n _this.handleDateChange.call(undefined, event, true);\n };\n _this.handleDateChange = function (event, isTodayClick) {\n if (isTodayClick === void 0) { isTodayClick = false; }\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: cloneDate(event.value),\n target: _this,\n isTodayClick: isTodayClick\n };\n onChange.call(undefined, args);\n }\n };\n _this.lastView = _this.props.activeView;\n _this.lastFocus = _this.props.focusedDate;\n _this.state = {\n skip: _this.props.service.skip(_this.props.focusedDate, _this.props.min),\n index: _this.props.service.skip(_this.props.focusedDate, _this.props.min)\n };\n return _this;\n }\n Object.defineProperty(ViewList.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"weekNames\", {\n get: function () {\n this.intl = provideIntlService(this);\n var weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return this.weekNumber ? [''].concat(weekNames) : weekNames;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"weekNumber\", {\n get: function () {\n return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"take\", {\n get: function () {\n return this.props.take !== undefined ? this.props.take : ViewList.defaultProps.take;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"animate\", {\n get: function () {\n return Boolean(this.props.smoothScroll && this.animateToIndex);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"todayIsInRange\", {\n get: function () {\n return isInRange(getToday(), getDate(this.props.min), getDate(this.props.max));\n },\n enumerable: true,\n configurable: true\n });\n ViewList.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n this.shouldScroll = false;\n if (this.indexToScroll !== undefined && this.virtualization) {\n this.virtualization[this.animate ? 'animateToIndex' : 'scrollToIndex'](this.indexToScroll);\n }\n if (this.isActive) {\n this.focusActiveDate();\n }\n this.lastView = this.props.activeView;\n // this.lastFocus = this.props.focusedDate;\n this.indexToScroll = undefined;\n };\n ViewList.prototype.render = function () {\n var _this = this;\n this.calculateHeights();\n var didViewChange = this.lastView !== this.props.activeView;\n var focusedDate = dateInRange(this.props.focusedDate, this.props.min, this.props.max);\n var skip = !didViewChange ? this.state.skip : this.props.service.skip(focusedDate, this.props.min);\n var total = this.props.service.total(this.props.min, this.props.max);\n var take = this.getTake(skip, total);\n var viewDate = this.props.service.addToDate(this.props.min, skip);\n var activeDate = this.props.service.addToDate(this.props.min, this.state.index);\n var cols = new Array(this.props.service.rowLength(this.weekNumber)).fill('');\n var didViewChanged = this.props.activeView !== this.lastView;\n this.animateToIndex = !didViewChanged;\n if (didViewChanged\n || !isEqualDate(this.lastFocus, focusedDate)\n || this.shouldScroll\n || (!this.props.shouldScroll || this.props.shouldScroll())) {\n this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n }\n this.lastFocus = focusedDate;\n var rootClassNames = classNames('k-calendar-view k-vstack', {\n 'k-calendar-monthview': this.props.activeView === CalendarViewEnum.month,\n 'k-calendar-yearview': this.props.activeView === CalendarViewEnum.year,\n 'k-calendar-decadeview': this.props.activeView === CalendarViewEnum.decade,\n 'k-calendar-centuryview': this.props.activeView === CalendarViewEnum.century\n });\n var dates = this.buildDates(cols, this.props.service.datesList(viewDate, take));\n var viewListBody = (React.createElement(React.Fragment, null,\n React.createElement(Header, { key: \"calendar-view-list-header\", currentDate: activeDate, min: this.props.min, max: this.props.max, activeView: this.props.activeView, bus: this.props.bus, service: this.props.service, headerTitle: this.props.headerTitle, commands: (React.createElement(React.Fragment, null,\n React.createElement(TodayCommand, { min: this.props.min, max: this.props.max, onClick: this.handleTodayClick, disabled: !this.todayIsInRange }))) }),\n this.props.activeView === CalendarViewEnum.month && this.buildMonthView(cols, this.weekNames),\n React.createElement(Virtualization, { key: \"calendar-view-list-content\", skip: skip, take: this.take, total: total, itemHeight: this.viewHeight, topOffset: this.viewOffset, bottomOffset: this.bottomOffset, scrollOffsetSize: this.viewOffset, maxScrollDifference: this.viewHeight, onScroll: this.props.onScroll, onScrollAction: this.handleScrollAction, onMount: this.handleVirtualizationMount, children: dates })));\n return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, className: rootClassNames }, this.props.dom.didCalculate ? viewListBody : null));\n };\n ViewList.propTypes = {\n activeView: PropTypes.number.isRequired,\n bottomOffset: PropTypes.number,\n cellUID: PropTypes.string.isRequired,\n focusedDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onChange: PropTypes.func,\n showWeekNumbers: PropTypes.bool,\n smoothScroll: PropTypes.bool,\n take: PropTypes.number,\n value: PropTypes.instanceOf(Date),\n viewHeight: PropTypes.number,\n viewOffset: PropTypes.number\n };\n ViewList.defaultProps = {\n take: VIEWS_COUNT,\n showWeekNumbers: false,\n smoothScroll: true\n };\n return ViewList;\n}(React.Component));\nexport { ViewList };\nregisterForIntl(ViewList);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * The `CalendarNavigationItem` component is internally used for rendering the items in the side navigation of the Calendar. Also used as a custom navigation item for the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-navigationitem) ([see example]({% slug custom_rendering_calendar %}#toc-items-in-the-side-navigation)).\n */\nvar CalendarNavigationItem = /** @class */ (function (_super) {\n __extends(CalendarNavigationItem, _super);\n function CalendarNavigationItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleClick = function (event) {\n var _a = _this.props, onClick = _a.onClick, value = _a.value;\n if (onClick) {\n onClick.call(undefined, value, event);\n }\n };\n return _this;\n }\n /**\n * @return\n * Returns a `<li />` element with a `<span />` inside. The text inside represents the [`value`]({% slug api_dateinputs_calendarnavigationitemprops %}#toc-value) of the `navigationItem`.\n */\n CalendarNavigationItem.prototype.render = function () {\n var _a = this.props, isRangeStart = _a.isRangeStart, value = _a.value, text = _a.text, other = __rest(_a, [\"isRangeStart\", \"value\", \"text\"]);\n return (React.createElement(\"li\", __assign({}, other, { onClick: this.handleClick }),\n React.createElement(\"span\", { className: classNames({ 'k-calendar-navigation-marker': isRangeStart }) }, this.props.children)));\n };\n return CalendarNavigationItem;\n}(React.Component));\nexport { CalendarNavigationItem };\n","/**\n * @hidden\n */\nexport var Action;\n(function (Action) {\n Action[Action[\"Left\"] = 0] = \"Left\";\n Action[Action[\"Right\"] = 1] = \"Right\";\n Action[Action[\"Up\"] = 2] = \"Up\";\n Action[Action[\"Down\"] = 3] = \"Down\";\n Action[Action[\"PrevView\"] = 4] = \"PrevView\";\n Action[Action[\"NextView\"] = 5] = \"NextView\";\n Action[Action[\"FirstInView\"] = 6] = \"FirstInView\";\n Action[Action[\"LastInView\"] = 7] = \"LastInView\";\n Action[Action[\"LowerView\"] = 8] = \"LowerView\";\n Action[Action[\"UpperView\"] = 9] = \"UpperView\";\n})(Action || (Action = {}));\n","var _a;\n/* tslint:disable:object-literal-sort-keys */\nimport { addDecades, addCenturies, cloneDate, durationInCenturies, firstYearOfDecade, firstDecadeOfCentury, lastDecadeOfCentury } from '@progress/kendo-date-math';\nimport { Action, EMPTY_SELECTIONRANGE } from '../models';\nimport { getToday, isInRange, isInSelectionRange, range, intersects } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 4;\nvar ROWS_LENGTH = 3;\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addDecades(date, -1); },\n _a[Action.Up] = function (date) { return addDecades(date, -5); },\n _a[Action.Right] = function (date) { return addDecades(date, 1); },\n _a[Action.Down] = function (date) { return addDecades(date, 5); },\n _a[Action.PrevView] = function (date) { return addCenturies(date, -1); },\n _a[Action.NextView] = function (date) { return addCenturies(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstDecadeOfCentury(date); },\n _a[Action.LastInView] = function (date) { return lastDecadeOfCentury(date); },\n _a);\n/**\n * @hidden\n */\nvar CenturyViewService = /** @class */ (function () {\n function CenturyViewService() {\n }\n CenturyViewService.prototype.addToDate = function (min, skip) {\n return addCenturies(min, skip);\n };\n CenturyViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addCenturies(start, i); });\n };\n CenturyViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var cells = range(0, CELLS_LENGTH);\n var firstDate = firstDecadeOfCentury(viewDate);\n var lastDate = lastDecadeOfCentury(viewDate);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addDecades(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addDecades(baseDate, cellOffset), min, max);\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return intersects(cellDate, firstDate, lastDate) ? ({\n formattedValue: _this.value(cellDate),\n id: \"\" + cellUID + cellDate.getTime(),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isWeekend: false,\n isInRange: isInRange(cellDate, min, max),\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n }) : null;\n });\n });\n };\n CenturyViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n CenturyViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n // TODO: double-check this!\n return firstYearOfDecade(candidate).getFullYear() === firstYearOfDecade(expected).getFullYear();\n };\n CenturyViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 99);\n };\n CenturyViewService.prototype.isInRange = function (candidate, min, max) {\n var year = firstYearOfDecade(candidate).getFullYear();\n var aboveMin = !min || firstYearOfDecade(min).getFullYear() <= year;\n var belowMax = !max || year <= firstYearOfDecade(max).getFullYear();\n return aboveMin && belowMax;\n };\n CenturyViewService.prototype.isInSameView = function (candidate, value) {\n return durationInCenturies(candidate, value) === 0;\n };\n CenturyViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 1000 === 0;\n };\n CenturyViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n CenturyViewService.prototype.cellTitle = function (value) {\n return firstYearOfDecade(value).getFullYear().toString();\n };\n CenturyViewService.prototype.navigationTitle = function (value) {\n return value ? firstDecadeOfCentury(value).getFullYear().toString() : '';\n };\n CenturyViewService.prototype.title = function (value) {\n if (!value) {\n return '';\n }\n return firstDecadeOfCentury(value).getFullYear() + \" - \" + lastDecadeOfCentury(value).getFullYear();\n };\n CenturyViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n CenturyViewService.prototype.skip = function (value, min) {\n return durationInCenturies(min, value);\n };\n CenturyViewService.prototype.total = function (min, max) {\n return durationInCenturies(min, max) + 1;\n };\n CenturyViewService.prototype.value = function (current) {\n return current ? firstYearOfDecade(current).getFullYear().toString() : '';\n };\n CenturyViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInCenturies(date, max) < border;\n return renderTwoViews ? addCenturies(date, -1) : date;\n };\n CenturyViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n };\n return CenturyViewService;\n}());\nexport { CenturyViewService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate, isEqual } from '@progress/kendo-date-math';\nimport { CalendarNavigationItem } from './CalendarNavigationItem';\nimport { dateInRange } from '../../utils';\nimport { Virtualization } from '../../virtualization/Virtualization';\nvar ITEMS_COUNT = 30;\n/**\n * @hidden\n */\nvar Navigation = /** @class */ (function (_super) {\n __extends(Navigation, _super);\n function Navigation(props) {\n var _this = _super.call(this, props) || this;\n _this.topOffset = 0;\n _this.handleVirtualizationMount = function (virtualization) {\n _this.virtualization = virtualization;\n if (_this.virtualization && _this.list) {\n _this.list.style.transform = \"translateY(\" + _this.topOffset + \"px)\";\n var viewDate = dateInRange(_this.props.focusedDate, _this.props.min, _this.props.max);\n var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n _this.virtualization.scrollToIndex(indexToScroll);\n }\n };\n _this.buildNavigationItem = function (date) {\n var text = _this.props.service.navigationTitle(date);\n var isRangeStart = _this.props.service.isRangeStart(date);\n var uniqueID = \"kendo-react-calendar-nav-item-\" + date.getTime();\n var navigationItemProps = {\n text: text,\n value: date,\n isRangeStart: isRangeStart,\n view: _this.props.activeView,\n onClick: _this.handleDateChange\n };\n return _this.props.navigationItem\n ? (React.createElement(_this.props.navigationItem, __assign({}, navigationItemProps, { key: uniqueID }), text))\n : (React.createElement(CalendarNavigationItem, __assign({}, navigationItemProps, { key: uniqueID }), text));\n };\n _this.calculateHeights = function () {\n var calendarHeight = _this.props.dom.calendarHeight;\n _this.itemHeight = _this.props.dom.navigationItemHeight || 1;\n _this.maxViewHeight = _this.props.dom.monthViewHeight;\n _this.topOffset = (calendarHeight - _this.itemHeight) / 2;\n _this.bottomOffset = calendarHeight - _this.itemHeight;\n };\n _this.handleDateChange = function (value, event) {\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n value: cloneDate(value),\n target: _this,\n nativeEvent: event && event.nativeEvent,\n syntheticEvent: event\n };\n onChange.call(undefined, args);\n }\n };\n _this.handleScrollAction = function (_a) {\n var scrollAction = _a.scrollAction, pageAction = _a.pageAction;\n var skip = pageAction ? pageAction.skip : _this.state.skip;\n if (_this.state.skip !== skip) {\n _this.setState({ skip: skip });\n }\n if (_this.list && scrollAction) {\n var translate = \"translateY(\" + scrollAction.offset + \"px)\";\n _this.list.style.transform = translate;\n }\n };\n _this.lastView = _this.props.activeView;\n _this.lastFocus = _this.props.focusedDate;\n var skip = _this.props.service.skip(_this.props.focusedDate, _this.props.min);\n var total = _this.props.service.total(_this.props.min, _this.props.max);\n _this.state = {\n skip: (skip - _this.getTake(skip, total) > 0) ? skip : 0\n };\n return _this;\n }\n Object.defineProperty(Navigation.prototype, \"take\", {\n get: function () {\n return this.props.take !== undefined\n ? this.props.take\n : Navigation.defaultProps.take;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Navigation.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n if (this.indexToScroll !== undefined && this.virtualization) {\n this.virtualization.scrollToIndex(this.indexToScroll);\n }\n this.lastView = this.props.activeView;\n this.lastFocus = this.props.focusedDate;\n this.indexToScroll = undefined;\n };\n Navigation.prototype.render = function () {\n var _this = this;\n this.calculateHeights();\n var didViewChange = this.lastView !== this.props.activeView;\n var focusedDate = dateInRange(this.props.focusedDate, this.props.min, this.props.max);\n var skip = !didViewChange ? this.state.skip : this.props.service.skip(focusedDate, this.props.min);\n var total = this.props.service.total(this.props.min, this.props.max);\n var take = this.getTake(skip, total);\n var viewDate = this.props.service.addToDate(this.props.min, skip);\n var dates = this.props.service.datesList(viewDate, take);\n if (this.props.activeView !== this.lastView\n || !isEqual(focusedDate, this.lastFocus)) {\n this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n }\n var navigationBody = (React.createElement(Virtualization, { skip: skip, take: this.take, total: total, itemHeight: this.itemHeight, topOffset: this.topOffset, bottomOffset: this.bottomOffset, onScroll: this.props.onScroll, maxScrollDifference: this.maxViewHeight, onScrollAction: this.handleScrollAction, onMount: this.handleVirtualizationMount },\n React.createElement(\"ul\", { ref: function (el) { _this.list = el; }, className: \"k-reset\" }, dates.map(function (date) { return (_this.buildNavigationItem(date)); }))));\n return (React.createElement(\"div\", { className: \"k-calendar-navigation\" },\n React.createElement(\"span\", { className: \"k-calendar-navigation-highlight\" }),\n this.props.dom.didCalculate ? navigationBody : null));\n };\n Navigation.prototype.getTake = function (skip, total) {\n return Math.min(total - skip, this.take);\n };\n Navigation.propTypes = {\n activeView: PropTypes.number.isRequired,\n focusedDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onChange: PropTypes.func,\n take: PropTypes.number\n };\n Navigation.defaultProps = {\n take: ITEMS_COUNT\n };\n return Navigation;\n}(React.Component));\nexport { Navigation };\n","import { CalendarViewEnum } from '../models/CalendarViewEnum';\nimport { domContainerFactory as containerFactory } from '../../utils';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DOMService = /** @class */ (function () {\n function DOMService() {\n this.didCalculate = false;\n }\n DOMService.prototype.ensureHeights = function () {\n if (this.calendarHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n };\n DOMService.prototype.calculateHeights = function (container) {\n var _this = this;\n if (!canUseDOM) {\n return;\n }\n var div = containerFactory('div');\n var ul = containerFactory('ul');\n var li = containerFactory('li');\n var td = containerFactory('td');\n var th = containerFactory('th');\n var tr = containerFactory('tr');\n var tbody = containerFactory('tbody');\n var thead = containerFactory('thead');\n var table = containerFactory('table');\n var monthHeader = function () { return (div(\"\\n <span class=\\\"k-button k-flat k-calendar-title\\\">\\n <span className=\\\"k-button-text\\\">March 2017</span>\\n </span>\\n <span class=\\\"k-spacer\\\"></span>\\n <span class=\\\"k-calendar-nav k-hstack\\\"><span class=\\\"k-nav-today\\\">TODAY</span></span>\\n \", 'k-calendar-header k-hstack')); };\n var monthWeekHeader = function () { return (table([\n thead([\n tr([th('MO', 'k-calendar-th')], 'k-calendar-tr')\n ], 'k-calendar-thead')\n ], 'k-calendar-table k-calendar-weekdays')); };\n var repeat = function (count, mapper) { return new Array(count).fill('1').map(mapper); };\n var content = function (rows, cells) {\n if (cells === void 0) { cells = 1; }\n return (table([\n tbody([tr([td('1', 'k-calendar-td k-alt')])].concat(repeat(rows, function () { return tr(repeat(cells, function (c) { return td(\"<span class=\\\"k-link\\\">\" + c + \"</span>\", 'k-calendar-td'); }), 'k-calendar-tr'); })), 'k-calendar-tbody')\n ], 'k-calendar-table'));\n };\n var scrollable = function (children) { return div(children, 'k-content k-calendar-content k-scrollable'); };\n var view = function (contentElement, className, renderWeekHeader) { return (div(renderWeekHeader\n ? [\n monthHeader(),\n monthWeekHeader(),\n scrollable([contentElement, contentElement])\n ]\n : [\n monthHeader(),\n scrollable([contentElement, contentElement])\n ], className, { left: '-10000px', position: 'absolute' })); };\n var navigationList = (function () {\n var navElement;\n return function () {\n if (!canUseDOM) {\n return null;\n }\n if (!navElement) {\n navElement = div([scrollable([ul([li('<span>FEB</span>')])])], 'k-calendar-navigation', { left: '0px', position: 'absolute' });\n }\n return navElement;\n };\n })();\n var viewFactory = function (_a, className, renderWeekHeader) {\n var cells = _a.cells, rows = _a.rows;\n var viewElement;\n return function () {\n if (!canUseDOM) {\n return null;\n }\n if (!viewElement) {\n viewElement = view(content(rows, cells), className, renderWeekHeader);\n }\n return viewElement;\n };\n };\n var getScrollable = function (element) { return element.querySelector('.k-scrollable'); };\n var horizontal = function (element) {\n var scrollableElement = getScrollable(element);\n scrollableElement.className = scrollableElement.className + \" k-scrollable-horizontal\";\n return element;\n };\n var monthView = viewFactory({ cells: 7, rows: 6 }, 'k-calendar-view k-calendar-monthview k-vstack', true);\n var yearView = viewFactory({ cells: 5, rows: 3 }, 'k-calendar-view k-calendar-yearview', false);\n var decadeView = viewFactory({ cells: 5, rows: 2 }, 'k-calendar-view k-calendar-decadeview', false);\n var horzMonthView = function () { return horizontal(monthView()); };\n var horzYearView = function () { return horizontal(yearView()); };\n var horzDecadeView = function () { return horizontal(decadeView()); };\n var height = function (element) { return (parseFloat(window.getComputedStyle(element).height) || element.offsetHeight); };\n var width = function (element) {\n var styles = window.getComputedStyle(element);\n var computed = parseFloat(styles.width)\n + parseFloat(styles.paddingLeft)\n + parseFloat(styles.paddingRight);\n return computed || element.offsetWidth;\n };\n var getBody = function (element) { return element.querySelector('tbody'); };\n this.didCalculate = true;\n if (container) {\n this.hostContainer = container;\n }\n this.batch(monthView(), function (contentElement) {\n var viewElement = getBody(contentElement);\n _this.calendarHeight = height(contentElement);\n _this.monthViewHeight = height(viewElement);\n _this.headerHeight = height(viewElement.children[0]);\n _this.scrollableContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzMonthView(), function (contentElement) {\n var viewElement = getBody(contentElement);\n _this.calendarWidth = width(contentElement);\n _this.monthViewWidth = width(viewElement);\n _this.scrollableContentWidth = width(getScrollable(contentElement));\n });\n this.batch(yearView(), function (contentElement) {\n _this.yearViewHeight = height(getBody(contentElement));\n _this.scrollableYearContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzYearView(), function (contentElement) {\n _this.yearViewWidth = width(getBody(contentElement));\n });\n this.batch(decadeView(), function (contentElement) {\n _this.decadeViewHeight = height(getBody(contentElement));\n _this.centuryViewHeight = _this.decadeViewHeight;\n });\n this.batch(horzDecadeView(), function (contentElement) {\n _this.decadeViewWidth = width(getBody(contentElement));\n _this.centuryViewWidth = _this.decadeViewWidth;\n });\n this.batch(navigationList(), function (contentElement) {\n _this.navigationItemHeight = height(contentElement.querySelector('li'));\n });\n };\n DOMService.prototype.viewHeight = function (viewType) {\n return this.viewDimension(viewType, 'height');\n };\n DOMService.prototype.viewWidth = function (viewType) {\n return this.viewDimension(viewType, 'width');\n };\n DOMService.prototype.viewDimension = function (viewType, dimension) {\n var viewProp = dimension === 'height' ? 'ViewHeight' : 'ViewWidth';\n switch (viewType) {\n case CalendarViewEnum.month:\n return this[\"month\" + viewProp];\n case CalendarViewEnum.year:\n return this[\"year\" + viewProp];\n case CalendarViewEnum.decade:\n return this[\"decade\" + viewProp];\n case CalendarViewEnum.century:\n return this[\"century\" + viewProp];\n default:\n return 1;\n }\n };\n DOMService.prototype.batch = function (contentElement, action) {\n var hostContainer = this.hostContainer || document.body;\n var appendedContent = hostContainer.appendChild(contentElement);\n action(appendedContent);\n hostContainer.removeChild(appendedContent);\n };\n return DOMService;\n}());\nexport { DOMService };\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport var setYear = function (value, year) {\n var month = value.getMonth();\n var candidate = createDate(year, month, value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getMonth() === month ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { adjustDST } from './adjust-dst';\nimport { setYear } from './set-year';\n/**\n * A function that adds and subtracts years from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of years to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addYears(new Date(2016, 5, 1), 5); // 2011-6-1\n * addYears(new Date(2016, 5, 1), -5); // 2021-6-1\n * ```\n */\nexport var addYears = function (value, offset) {\n return adjustDST(setYear(value, value.getFullYear() + offset), value.getHours());\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts decades from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of decades to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDecades(new Date(2016, 5, 1), 5); // 2066-6-1\n * addDecades(new Date(2016, 5, 1), -5); // 1966-6-1\n * ```\n */\nexport var addDecades = function (value, offset) {\n return addYears(value, 10 * offset);\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts centuries from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of centuries to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addCenturies(new Date(2016, 5, 1), 5); // 2516-6-1\n * addCenturies(new Date(2016, 5, 1), -5); // 1516-6-1\n * ```\n */\nexport var addCenturies = function (value, offset) {\n return addYears(value, 100 * offset);\n};\n","import { setYear } from './set-year';\n/**\n * @hidden\n */\nexport var normalizeYear = function (value, year) { return (setYear(value, year(value.getFullYear()))); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first decade in a century.\n *\n * @param date - The start date value.\n * @returns - The first year in a century.\n *\n * @example\n * ```ts-no-run\n * firstDecadeOfCentury(new Date(2017, 0, 1)); // 2000-1-1\n * firstDecadeOfCentury(new Date(2007, 10, 22)); // 2000-11-22\n * firstDecadeOfCentury(new Date(2126, 0, 1)); // 2100-1-1\n * ```\n */\nexport var firstDecadeOfCentury = function (value) { return (normalizeYear(value, function (y) { return y - (y % 100); })); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last decade in a century.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastDecadeOfCentury(new Date(2017, 0, 1)); // 2090-1-1\n * lastDecadeOfCentury(new Date(2007, 10, 22)); // 2090-11-22\n * lastDecadeOfCentury(new Date(2126, 0, 1)); // 2190-1-1\n * ```\n */\nexport var lastDecadeOfCentury = function (value) { return (normalizeYear(value, function (y) { return y - (y % 100) + 90; })); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first year in a decade.\n *\n * @param date - The start date value.\n * @returns - The first year in a decade.\n *\n * @example\n * ```ts-no-run\n * firstYearOfDecade(new Date(2017, 0, 1)); // 2010-1-1\n * firstYearOfDecade(new Date(2007, 10, 22)); // 2000-11-22\n * firstYearOfDecade(new Date(2026, 0, 1)); // 2020-1-1\n * ```\n */\nexport var firstYearOfDecade = function (value) { return (normalizeYear(value, function (y) { return y - (y % 10); })); };\n","import { firstDecadeOfCentury } from './first-decade-of-century';\n/**\n * A function that calculates duration in centuries between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInCenturies(new Date(2016, 0, 1), new Date(3216, 0, 1)); // 12\n * durationInCenturies(new Date(2016, 6, 1), new Date(2617, 0, 1)); // 6\n * durationInCenturies(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInCenturies = function (start, end) { return ((firstDecadeOfCentury(end).getFullYear() - firstDecadeOfCentury(start).getFullYear()) / 100); };\n","var _a;\nimport { addDecades, addYears, cloneDate, durationInDecades, firstYearOfDecade, lastYearOfDecade } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { getToday, isInRange, isInSelectionRange, range, intersects } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 4;\nvar ROWS_LENGTH = 3;\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addYears(date, -1); },\n _a[Action.Up] = function (date) { return addYears(date, -5); },\n _a[Action.Right] = function (date) { return addYears(date, 1); },\n _a[Action.Down] = function (date) { return addYears(date, 5); },\n _a[Action.PrevView] = function (date) { return addDecades(date, -1); },\n _a[Action.NextView] = function (date) { return addDecades(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstYearOfDecade(date); },\n _a[Action.LastInView] = function (date) { return lastYearOfDecade(date); },\n _a);\n/**\n * @hidden\n */\nvar DecadeViewService = /** @class */ (function () {\n function DecadeViewService() {\n }\n DecadeViewService.prototype.addToDate = function (min, skip) {\n return addDecades(min, skip);\n };\n DecadeViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addDecades(start, i); });\n };\n DecadeViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var cells = range(0, CELLS_LENGTH);\n var firstDate = firstYearOfDecade(viewDate);\n var lastDate = lastYearOfDecade(viewDate);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addYears(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addYears(baseDate, cellOffset), min, max);\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return intersects(cellDate, firstDate, lastDate) ? ({\n formattedValue: _this.value(cellDate),\n id: \"\" + cellUID + cellDate.getTime(),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isWeekend: false,\n isInRange: isInRange(cellDate, min, max),\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n }) : null;\n });\n });\n };\n DecadeViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n DecadeViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear();\n };\n DecadeViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 9);\n };\n DecadeViewService.prototype.isInRange = function (candidate, min, max) {\n var year = candidate.getFullYear();\n var aboveMin = !min || min.getFullYear() <= year;\n var belowMax = !max || year <= max.getFullYear();\n return aboveMin && belowMax;\n };\n DecadeViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 100 === 0;\n };\n DecadeViewService.prototype.isInSameView = function (candidate, value) {\n return durationInDecades(candidate, value) === 0;\n };\n DecadeViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n DecadeViewService.prototype.cellTitle = function (value) {\n return value.getFullYear().toString();\n };\n DecadeViewService.prototype.navigationTitle = function (value) {\n return value ? firstYearOfDecade(value).getFullYear().toString() : '';\n };\n DecadeViewService.prototype.title = function (value) {\n if (!value) {\n return '';\n }\n return firstYearOfDecade(value).getFullYear() + \" - \" + lastYearOfDecade(value).getFullYear();\n };\n DecadeViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n DecadeViewService.prototype.skip = function (value, min) {\n return durationInDecades(min, value);\n };\n DecadeViewService.prototype.total = function (min, max) {\n return durationInDecades(min, max) + 1;\n };\n DecadeViewService.prototype.value = function (current) {\n return current ? current.getFullYear().toString() : '';\n };\n DecadeViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInDecades(date, max) < border;\n return renderTwoViews ? addDecades(date, -1) : date;\n };\n DecadeViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n };\n return DecadeViewService;\n}());\nexport { DecadeViewService };\n","var _a;\nimport { addDays, addWeeks, addMonths, dayOfWeek, durationInMonths, getDate, firstDayOfMonth, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 7;\nvar ROWS_LENGTH = 6;\nvar SATURDAY = 6;\nvar SUNDAY = 0;\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addDays(date, -1); },\n _a[Action.Up] = function (date) { return addWeeks(date, -1); },\n _a[Action.Right] = function (date) { return addDays(date, 1); },\n _a[Action.Down] = function (date) { return addWeeks(date, 1); },\n _a[Action.PrevView] = function (date) { return addMonths(date, -1); },\n _a[Action.NextView] = function (date) { return addMonths(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstDayOfMonth(date); },\n _a[Action.LastInView] = function (date) { return lastDayOfMonth(date); },\n _a);\n/**\n * @hidden\n */\nvar MonthViewService = /** @class */ (function () {\n function MonthViewService(intl) {\n this.intl = intl;\n }\n MonthViewService.prototype.addToDate = function (min, skip) {\n return addMonths(min, skip);\n };\n MonthViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addMonths(start, i); });\n };\n MonthViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var firstMonthDate = firstDayOfMonth(viewDate);\n var lastMonthDate = lastDayOfMonth(viewDate);\n var backward = -1;\n var date = dayOfWeek(firstMonthDate, this.intl.firstDay(), backward);\n var cells = range(0, CELLS_LENGTH);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addDays(date, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addDays(baseDate, cellOffset), min, max);\n var otherMonth = cellDate < firstMonthDate || cellDate > lastMonthDate;\n if (otherMonth) {\n return null;\n }\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n var cell = {\n formattedValue: _this.value(cellDate),\n id: \"\" + cellUID + cellDate.getTime(),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isInRange: isInRange(cellDate, min, max),\n isWeekend: _this.isWeekend(cellDate),\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstMonthDate),\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastMonthDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n };\n return cell;\n });\n });\n };\n MonthViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return getDate(candidate).getTime() === getDate(expected).getTime();\n };\n MonthViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n MonthViewService.prototype.isInArray = function (date, dates) {\n return !!dates.length && firstDayOfMonth(dates[0]) <= date && date <= lastDayOfMonth(dates[dates.length - 1]);\n };\n MonthViewService.prototype.isInRange = function (candidate, min, max) {\n var value = getDate(candidate);\n var aboveMin = !min || getDate(min) <= value;\n var belowMax = !max || value <= getDate(max);\n return aboveMin && belowMax;\n };\n MonthViewService.prototype.isInSameView = function (candidate, value) {\n return durationInMonths(candidate, value) === 0;\n };\n MonthViewService.prototype.isRangeStart = function (value) {\n return !value.getMonth();\n };\n MonthViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n MonthViewService.prototype.cellTitle = function (value) {\n return this.intl.formatDate(value, 'D');\n };\n MonthViewService.prototype.navigationTitle = function (value) {\n if (!value) {\n return '';\n }\n return this.isRangeStart(value) ? value.getFullYear().toString() : this.abbrMonthNames()[value.getMonth()];\n };\n MonthViewService.prototype.title = function (current) {\n return this.wideMonthNames()[current.getMonth()] + \" \" + current.getFullYear();\n };\n MonthViewService.prototype.rowLength = function (prependCell) {\n return CELLS_LENGTH + (prependCell ? 1 : 0);\n };\n MonthViewService.prototype.skip = function (value, min) {\n return durationInMonths(min, value);\n };\n MonthViewService.prototype.total = function (min, max) {\n return durationInMonths(min, max) + 1;\n };\n MonthViewService.prototype.value = function (current) {\n return current ? current.getDate().toString() : '';\n };\n MonthViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInMonths(date, max) < border;\n return renderTwoViews ? addMonths(date, -1) : date;\n };\n MonthViewService.prototype.isWeekend = function (date) {\n var day = date.getDay();\n return day === SATURDAY || day === SUNDAY;\n };\n MonthViewService.prototype.abbrMonthNames = function () {\n return this.intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n };\n MonthViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return getDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return getDate(max);\n }\n return cellDate;\n };\n MonthViewService.prototype.wideMonthNames = function () {\n return this.intl.dateFormatNames({ nameType: 'wide', type: 'months' });\n };\n return MonthViewService;\n}());\nexport { MonthViewService };\n","var _a;\nimport { addMonths, addYears, createDate, durationInYears, firstMonthOfYear, lastMonthOfYear } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { cloneDate } from '@progress/kendo-date-math';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 4;\nvar ROWS_LENGTH = 3;\nvar upStep = function (month) {\n if (month > 4) {\n return -5;\n }\n if (month < 2) {\n return -2;\n }\n return -7;\n};\nvar downStep = function (month) {\n if (month < 7) {\n return 5;\n }\n if (month < 10) {\n return 7;\n }\n return 2;\n};\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addMonths(date, -1); },\n _a[Action.Up] = function (date) { return addMonths(date, upStep(date.getMonth())); },\n _a[Action.Right] = function (date) { return addMonths(date, 1); },\n _a[Action.Down] = function (date) { return addMonths(date, downStep(date.getMonth())); },\n _a[Action.PrevView] = function (date) { return addYears(date, -1); },\n _a[Action.NextView] = function (date) { return addYears(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstMonthOfYear(date); },\n _a[Action.LastInView] = function (date) { return lastMonthOfYear(date); },\n _a);\n/**\n * @hidden\n */\nvar YearViewService = /** @class */ (function () {\n function YearViewService(intl) {\n this._intl = intl;\n }\n YearViewService.prototype.addToDate = function (min, skip) {\n return addYears(min, skip);\n };\n YearViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addYears(start, i); });\n };\n YearViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var months = this.abbrMonthNames();\n var firstDate = firstMonthOfYear(viewDate);\n var lastDate = lastMonthOfYear(viewDate);\n var currentYear = firstDate.getFullYear();\n var cells = range(0, CELLS_LENGTH);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addMonths(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addMonths(baseDate, cellOffset), min, max);\n var changedYear = currentYear < cellDate.getFullYear();\n if (changedYear) {\n return null;\n }\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return {\n formattedValue: months[cellDate.getMonth()],\n id: \"\" + cellUID + cellDate.getTime(),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isInRange: isInRange(cellDate, min, max),\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n };\n YearViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n YearViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear() &&\n candidate.getMonth() === expected.getMonth();\n };\n YearViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear();\n };\n YearViewService.prototype.isInRange = function (candidate, min, max) {\n var candidateValue = createDate(candidate.getFullYear(), candidate.getMonth(), 1);\n var aboveMin = !min || createDate(min.getFullYear(), min.getMonth(), 1) <= candidateValue;\n var belowMax = !max || candidateValue <= createDate(max.getFullYear(), max.getMonth(), 1);\n return aboveMin && belowMax;\n };\n YearViewService.prototype.isInSameView = function (candidate, value) {\n return durationInYears(candidate, value) === 0;\n };\n YearViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 10 === 0;\n };\n YearViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n YearViewService.prototype.cellTitle = function (value) {\n return value.getFullYear() + \" \" + this.value(value);\n };\n YearViewService.prototype.navigationTitle = function (value) {\n return this.title(value);\n };\n YearViewService.prototype.title = function (current) {\n return current ? current.getFullYear().toString() : '';\n };\n YearViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n YearViewService.prototype.skip = function (value, min) {\n return durationInYears(min, value);\n };\n YearViewService.prototype.total = function (min, max) {\n return durationInYears(min, max) + 1;\n };\n YearViewService.prototype.value = function (current) {\n return current ? this.abbrMonthNames()[current.getMonth()] : '';\n };\n YearViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInYears(date, max) < border;\n return renderTwoViews ? addYears(date, -1) : date;\n };\n YearViewService.prototype.abbrMonthNames = function () {\n return this._intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n };\n YearViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n };\n return YearViewService;\n}());\nexport { YearViewService };\n","var _a;\nimport { CenturyViewService } from './CenturyViewService';\nimport { DecadeViewService } from './DecadeViewService';\nimport { MonthViewService } from './MonthViewService';\nimport { YearViewService } from './YearViewService';\nimport { CalendarViewEnum } from '../models/CalendarViewEnum';\nvar services = (_a = {},\n _a[CalendarViewEnum.month] = MonthViewService,\n _a[CalendarViewEnum.year] = YearViewService,\n _a[CalendarViewEnum.decade] = DecadeViewService,\n _a[CalendarViewEnum.century] = CenturyViewService,\n _a);\nvar viewOffset = function (view, offset) {\n var candidate = CalendarViewEnum[CalendarViewEnum[view + offset]];\n return candidate !== undefined ? candidate : view;\n};\n/**\n * @hidden\n */\nvar BusViewService = /** @class */ (function () {\n function BusViewService(onViewChanged) {\n this.bottom = CalendarViewEnum.month;\n this.top = CalendarViewEnum.century;\n this.onViewChanged = onViewChanged;\n }\n BusViewService.prototype.configure = function (bottom, top) {\n this.bottom = bottom;\n this.top = top;\n };\n BusViewService.prototype.service = function (view, intl) {\n return new services[\"\" + view](intl);\n };\n BusViewService.prototype.moveDown = function (view, event) {\n this.move(view, -1, event);\n };\n BusViewService.prototype.moveUp = function (view, event) {\n this.move(view, 1, event);\n };\n BusViewService.prototype.moveToBottom = function (activeView) {\n if (activeView === this.bottom) {\n return;\n }\n this.onViewChanged({ view: this.bottom });\n };\n BusViewService.prototype.canMoveDown = function (view) {\n return this.bottom < view;\n };\n BusViewService.prototype.canMoveUp = function (view) {\n return view < this.top;\n };\n BusViewService.prototype.clamp = function (view) {\n if (view < this.bottom) {\n return this.bottom;\n }\n if (view > this.top) {\n return this.top;\n }\n return view;\n };\n BusViewService.prototype.move = function (view, offset, event) {\n var candidate = this.clamp(viewOffset(view, offset));\n if (candidate === view) {\n return;\n }\n this.onViewChanged({ view: candidate }, event);\n };\n return BusViewService;\n}());\nexport { BusViewService };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last year in a decade.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastYearOfDecade(new Date(2017, 0, 1)); // 2019-1-1\n * lastYearOfDecade(new Date(2007, 10, 22)); // 2009-11-22\n * lastYearOfDecade(new Date(2026, 0, 1)); // 2029-1-1\n * ```\n */\nexport var lastYearOfDecade = function (value) { return (normalizeYear(value, function (y) { return y - (y % 10) + 9; })); };\n","import { firstYearOfDecade } from './first-year-of-decade';\n/**\n * A function that calculates duration in decades between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInDecades(new Date(2016, 0, 1), new Date(2136, 0, 1)); // 12\n * durationInDecades(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInDecades = function (start, end) { return ((firstYearOfDecade(end).getFullYear() - firstYearOfDecade(start).getFullYear()) / 10); };\n","import { addDays } from './add-days';\n/**\n * A function that adds and subtracts weeks from a Date object.\n *\n * @param date - The initial date value.\n * @param offset - The number of weeks to add/subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addWeeks(new Date(2016, 5, 1), 3); // 2016-6-22\n * addWeeks(new Date(2016, 5, 1), -3); // 2015-5-11\n * ```\n */\nexport var addWeeks = function (date, offset) {\n return addDays(date, offset * 7);\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the first date of the month.\n *\n * @param date - The initial date.\n * @returns - The first date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * firstDayOfMonth(new Date(2016, 0, 15)); // 2016-01-01\n * ```\n */\nexport var firstDayOfMonth = function (date) {\n return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n","/**\n * A function that calculates duration in months between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInMonths(new Date(2016, 0, 1), new Date(2017, 0, 1)); // 12\n * durationInMonths(new Date(2016, 6, 1), new Date(2017, 0, 1)); // 6\n * durationInMonths(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInMonths = function (start, end) { return (((end.getFullYear() - start.getFullYear())) * 12 + (end.getMonth() - start.getMonth())); };\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport var setMonth = function (value, month) {\n var day = value.getDate();\n var candidate = createDate(value.getFullYear(), month, day, value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getDate() === day ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the first month in a year.\n *\n * @param date - The start date value.\n * @returns - The first month in a year.\n *\n * @example\n * ```ts-no-run\n * firstMonthOfYear(new Date(2017, 11, 1)); // 2017-1-1\n * firstMonthOfYear(new Date(2017, 0, 1)); // 2017-1-1\n * ```\n */\nexport var firstMonthOfYear = function (value) { return setMonth(value, 0); };\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the last month in a year.\n *\n * @param date - The start date value.\n * @returns - The last month in a year.\n *\n * @example\n * ```ts-no-run\n * lastMonthOfYear(new Date(2017, 5, 3)); // 2017-12-3\n * lastMonthOfYear(new Date(2017, 11, 3)); // 2017-12-3\n * ```\n */\nexport var lastMonthOfYear = function (value) { return setMonth(value, 11); };\n","/**\n * A function that calculates duration in years between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in years.\n *\n * @example\n * ```ts-no-run\n * durationInYears(new Date(2016, 0, 1), new Date(2028, 0, 1)); // 12\n * durationInYears(new Date(2016, 0, 1), new Date(2022, 0, 1)); // 6\n * durationInYears(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInYears = function (start, end) { return (end.getFullYear() - start.getFullYear()); };\n","import { Action } from '../models/NavigationAction';\nvar KEY_TO_ACTION = {\n '33': Action.PrevView,\n '34': Action.NextView,\n '35': Action.LastInView,\n '36': Action.FirstInView,\n '37': Action.Left,\n '38': Action.Up,\n '39': Action.Right,\n '40': Action.Down,\n 'meta+38': Action.UpperView,\n 'meta+40': Action.LowerView\n};\n/**\n * @hidden\n */\nvar NavigationService = /** @class */ (function () {\n function NavigationService(bus) {\n this.bus = bus;\n }\n NavigationService.prototype.action = function (event) {\n var action = \"\" + (event.ctrlKey || event.metaKey ? 'meta+' : '') + event.keyCode;\n return KEY_TO_ACTION[action];\n };\n NavigationService.prototype.move = function (value, action, activeView, service, event) {\n if (!service) {\n return value;\n }\n if (action === Action.UpperView && this.bus.canMoveUp(activeView)) {\n this.bus.moveUp(activeView, event);\n return value;\n }\n if (action === Action.LowerView && this.bus.canMoveDown(activeView)) {\n this.bus.moveDown(activeView, event);\n return value;\n }\n return service.move(value, action);\n };\n return NavigationService;\n}());\nexport { NavigationService };\n","var divideByMagnitude = function (magnitude) { return function (x) { return Math.floor(x / magnitude); }; };\nvar powerByMagnitude = function (magnitude) { return function (x) { return x * magnitude; }; };\n/**\n * @hidden\n */\nvar ScrollSyncService = /** @class */ (function () {\n function ScrollSyncService(dom) {\n this.dom = dom;\n this.monthScrolled = false;\n this.navScrolled = false;\n }\n ScrollSyncService.prototype.configure = function (activeView) {\n var magnitude = Math.max(this.dom.viewHeight(activeView) / this.dom.navigationItemHeight, 1);\n this.divideByMagnitude = divideByMagnitude(magnitude);\n this.powerByMagnitude = powerByMagnitude(magnitude);\n };\n ScrollSyncService.prototype.sync = function (navigator, view, e) {\n if (!navigator || !view) {\n return;\n }\n this.navigator = navigator;\n this.view = view;\n if (e.target === this.navigator.element) {\n if (this.monthScrolled) {\n this.monthScrolled = false;\n return;\n }\n this.navScrolled = true;\n this.scrollSiblingOf(this.navigator.element);\n }\n if (e.target === this.view.element) {\n if (this.navScrolled) {\n this.navScrolled = false;\n return;\n }\n this.monthScrolled = true;\n this.scrollSiblingOf(this.view.element);\n }\n };\n ScrollSyncService.prototype.scrollSiblingOf = function (scrolledElement) {\n var component = this.siblingComponent(scrolledElement);\n var scrollTop = this.calculateScroll(component, scrolledElement.scrollTop);\n component.scrollTo(scrollTop);\n };\n ScrollSyncService.prototype.siblingComponent = function (scrollableElement) {\n return this.navigator.element === scrollableElement ? this.view : this.navigator;\n };\n ScrollSyncService.prototype.calculateScroll = function (component, scrollTop) {\n var modifier = component === this.navigator ? this.divideByMagnitude : this.powerByMagnitude;\n return modifier(scrollTop);\n };\n return ScrollSyncService;\n}());\nexport { ScrollSyncService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, guid, Keys, validatePackage, withPropsContext, createPropsContext } from '@progress/kendo-react-common';\nimport { cloneDate, getDate, isEqualDate } from '@progress/kendo-date-math';\nimport { provideIntlService, registerForIntl } from '@progress/kendo-react-intl';\nimport { packageMetadata } from '../../package-metadata';\nimport { ViewList } from './ViewList';\nimport { Navigation } from './Navigation';\nimport { MIN_DATE, MAX_DATE } from '../../defaults';\nimport { CalendarViewEnum } from '../models';\nimport { getToday, dateInRange, isInRange, viewInRange } from '../../utils';\nimport { BusViewService, DOMService, ScrollSyncService, NavigationService } from '../services';\nvar virtualizationProp = function (x) { return x ? x.virtualization : null; };\nvar calculateValue = function (min, max, stateValue, propValue) {\n if (min === void 0) { min = CalendarWithoutContext.defaultProps.min; }\n if (max === void 0) { max = CalendarWithoutContext.defaultProps.max; }\n return propValue !== undefined\n ? propValue !== null && isInRange(getDate(propValue), min, max)\n ? propValue\n : null\n : stateValue !== null && isInRange(getDate(stateValue), min, max)\n ? stateValue\n : null;\n};\n/** @hidden */\nvar CalendarWithoutContext = /** @class */ (function (_super) {\n __extends(CalendarWithoutContext, _super);\n function CalendarWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this.cellUID = guid();\n _this.id = guid();\n _this.isActive = false;\n _this.didNavigationChange = false;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._element) {\n _this._element.focus();\n }\n };\n _this.shouldScroll = function () { return _this.didNavigationChange; };\n _this.handleScroll = function (event) {\n if (!_this.scrollSyncService) {\n return;\n }\n _this.scrollSyncService.sync(virtualizationProp(_this.Navigation), virtualizationProp(_this.calendarViewList), event);\n };\n _this.handleNavigationChange = function (event) {\n if (_this.props.disabled) {\n return;\n }\n _this.didNavigationChange = true;\n var focusedDate = cloneDate(event.value);\n _this.setState({ focusedDate: focusedDate });\n };\n _this.handleViewChange = function (_a) {\n var view = _a.view;\n _this.scrollSyncService.configure(view);\n _this.setState({ activeView: view });\n };\n _this.handleDateChange = function (event) {\n var value = cloneDate(event.value);\n var focusedDate = cloneDate(event.value);\n var canNavigateDown = _this.bus.canMoveDown(_this.state.activeView);\n if (_this.props.disabled) {\n return;\n }\n if (canNavigateDown) {\n if (event.isTodayClick) {\n _this.bus.moveToBottom(_this.state.activeView);\n }\n else {\n _this.bus.moveDown(_this.state.activeView, event.syntheticEvent);\n _this.setState({ focusedDate: focusedDate });\n return;\n }\n }\n _this.setState({ value: value, focusedDate: focusedDate });\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: value,\n target: _this\n };\n onChange.call(undefined, args);\n }\n _this.valueDuringOnChange = undefined;\n };\n _this.handleFocus = function (event) {\n _this.isActive = true;\n if (!_this.calendarViewList) {\n return;\n }\n _this.calendarViewList.focusActiveDate();\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n _this.isActive = false;\n if (!_this.calendarViewList) {\n return;\n }\n _this.calendarViewList.blurActiveDate();\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n if (keyCode === Keys.enter) {\n if (_this.value !== null\n && isEqualDate(_this.focusedDate, _this.value)) {\n var viewDate = dateInRange(_this.focusedDate, _this.min, _this.max);\n virtualizationProp(_this.calendarViewList).scrollToIndex(_this.service.skip(viewDate, _this.min));\n }\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.focusedDate,\n target: _this\n };\n _this.handleDateChange.call(undefined, args);\n }\n else {\n var candidate = dateInRange(_this.navigation.move(_this.focusedDate, _this.navigation.action(event), _this.state.activeView, _this.service, event), _this.min, _this.max);\n if (isEqualDate(_this.focusedDate, candidate)) {\n return;\n }\n _this.setState({ focusedDate: candidate });\n }\n event.preventDefault();\n };\n _this.handleMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleClick = function (_) {\n if (_this._element) {\n _this._element.focus({ preventScroll: true });\n }\n };\n validatePackage(packageMetadata);\n var value = calculateValue(_this.min, _this.max, _this.props.defaultValue || CalendarWithoutContext.defaultProps.defaultValue, _this.props.value);\n _this.state = {\n value: value,\n activeView: viewInRange(CalendarViewEnum[props.defaultActiveView], _this.bottomView, _this.topView),\n focusedDate: dateInRange(props.focusedDate\n || value\n || getToday(), _this.min, _this.max)\n };\n _this.dom = new DOMService();\n _this.bus = new BusViewService(_this.handleViewChange);\n _this.navigation = new NavigationService(_this.bus);\n _this.oldValue = value;\n return _this;\n }\n Object.defineProperty(CalendarWithoutContext.prototype, \"element\", {\n /**\n * Gets the wrapping element of the Calendar.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CalendarWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the Calendar.\n */\n get: function () {\n return this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CalendarWithoutContext.prototype, \"min\", {\n get: function () {\n return getDate(this.props.min !== undefined\n ? this.props.min\n : CalendarWithoutContext.defaultProps.min);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CalendarWithoutContext.prototype, \"max\", {\n get: function () {\n return getDate(this.props.max !== undefined\n ? this.props.max\n : CalendarWithoutContext.defaultProps.max);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CalendarWithoutContext.prototype, \"bottomView\", {\n get: function () {\n return CalendarViewEnum[this.props.bottomView !== undefined\n ? this.props.bottomView\n : CalendarWithoutContext.defaultProps.bottomView];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CalendarWithoutContext.prototype, \"topView\", {\n get: function () {\n return CalendarViewEnum[this.props.topView !== undefined\n ? this.props.topView\n : CalendarWithoutContext.defaultProps.topView];\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n CalendarWithoutContext.prototype.componentDidMount = function () {\n var _this = this;\n // Async calculation of height to avoid animation cancellation\n Promise.resolve().then(function () {\n if (!_this._element) {\n return;\n }\n _this.dom.calculateHeights(_this._element);\n _this.scrollSyncService = new ScrollSyncService(_this.dom);\n _this.scrollSyncService.configure(_this.state.activeView);\n _this.forceUpdate();\n });\n };\n /**\n * @hidden\n */\n CalendarWithoutContext.prototype.componentDidUpdate = function (_, prevState) {\n if (prevState.activeView !== this.state.activeView) {\n this.scrollSyncService.configure(this.state.activeView);\n }\n if (this.calendarViewList) {\n (this.isActive ? this.calendarViewList.focusActiveDate : this.calendarViewList.blurActiveDate)();\n }\n this.didNavigationChange = false;\n this.oldValue = this.value;\n };\n /**\n * @hidden\n */\n CalendarWithoutContext.prototype.render = function () {\n var _this = this;\n if (this.props._ref) {\n this.props._ref(this);\n }\n var didValueChange = this.value !== null && this.oldValue !== null\n ? !isEqualDate(this.value, this.oldValue)\n : this.value !== this.oldValue;\n var activeView = viewInRange(this.state.activeView, CalendarViewEnum[this.props.bottomView !== undefined\n ? this.props.bottomView\n : CalendarWithoutContext.defaultProps.bottomView], CalendarViewEnum[this.props.topView !== undefined\n ? this.props.topView\n : CalendarWithoutContext.defaultProps.topView]);\n var value = calculateValue(this.min, this.max, this.value, this.value);\n var sanitizedValue = value ? getDate(value) : null;\n this.focusedDate = getDate(dateInRange(didValueChange && value !== null\n ? value\n : this.state.focusedDate, this.min, this.max));\n this.intl = provideIntlService(this);\n this.bus.configure(this.bottomView, this.topView);\n this.service = this.bus.service(activeView, this.intl);\n var rootClassNames = classNames('k-widget k-calendar k-calendar-infinite', {\n 'k-state-disabled': this.props.disabled,\n 'k-week-number': this.props.weekNumber\n }, this.props.className);\n var aria = {\n 'aria-disabled': this.props.disabled,\n 'aria-activedescendant': this.cellUID + this.focusedDate.getTime()\n };\n var calendarBody = [this.props.navigation && (React.createElement(Navigation, { key: 0, ref: function (el) { _this.Navigation = el; }, activeView: this.state.activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, onScroll: this.handleScroll, onChange: this.handleNavigationChange, service: this.service, dom: this.dom, navigationItem: this.props.navigationItem })), (React.createElement(ViewList, { key: 1, ref: function (el) { _this.calendarViewList = el; }, activeView: this.state.activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, bus: this.bus, shouldScroll: this.shouldScroll, onScroll: this.handleScroll, service: this.service, cell: this.props.cell, weekCell: this.props.weekCell, dom: this.dom, smoothScroll: this.props.smoothScroll, showWeekNumbers: this.props.weekNumber, onChange: this.handleDateChange, value: sanitizedValue, cellUID: this.cellUID, headerTitle: this.props.headerTitle }))];\n return (React.createElement(\"div\", __assign({}, aria, { ref: function (el) { _this._element = el; }, className: rootClassNames, id: this.props.id || this.id, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, role: \"grid\", tabIndex: !this.props.disabled ? this.props.tabIndex || 0 : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, onMouseDown: this.handleMouseDown, onClick: this.handleClick }), calendarBody));\n };\n /**\n * @hidden\n */\n CalendarWithoutContext.displayName = 'Calendar';\n /**\n * @hidden\n */\n CalendarWithoutContext.propTypes = {\n className: PropTypes.string,\n defaultActiveView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n navigation: PropTypes.bool,\n smoothScroll: PropTypes.bool,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n tabIndex: PropTypes.number,\n value: PropTypes.instanceOf(Date),\n weekNumber: PropTypes.bool,\n topView: function (props, propName, componentName) {\n var prop = props[propName];\n var bottomView = props.bottomView;\n if (prop && bottomView && CalendarViewEnum[prop] < CalendarViewEnum[bottomView]) {\n return new Error(\"Invalid prop + \" + propName + \" suplied to \" + componentName + \".\\n \" + propName + \" can not be smaller than bottomView.\\n \");\n }\n return null;\n },\n bottomView: function (props, propName, componentName) {\n var prop = props[propName];\n var topView = props.topView;\n if (prop && topView && CalendarViewEnum[prop] > CalendarViewEnum[topView]) {\n return new Error(\"Invalid prop + \" + propName + \" suplied to \" + componentName + \".\\n \" + propName + \" can not be bigger than topView.\\n \");\n }\n return null;\n }\n };\n /**\n * @hidden\n */\n CalendarWithoutContext.defaultProps = {\n disabled: false,\n min: MIN_DATE,\n max: MAX_DATE,\n navigation: true,\n defaultActiveView: 'month',\n defaultValue: null,\n smoothScroll: true,\n topView: 'century',\n bottomView: 'month'\n };\n return CalendarWithoutContext;\n}(React.Component));\nexport { CalendarWithoutContext };\n/**\n * Represents the PropsContext of the `Calendar` component.\n * Used for global configuration of all `Calendar` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var CalendarPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the KendoReact Calendar Component.\n *\n * Accepts properties of type [CalendarProps]({% slug api_dateinputs_calendarprops %}).\n * Obtaining the `ref` returns an object of type [CalendarHandle]({% slug api_dateinputs_calendarhandle %}).\n */\nexport var Calendar = withPropsContext(CalendarPropsContext, CalendarWithoutContext);\nCalendar.displayName = 'KendoReactCalendar';\nregisterForIntl(CalendarWithoutContext);\n","import * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the default `toggleButton` component rendered by the [KendoReact Scheduler DatePicker]({% slug overview_datepicker %}).\n */\nexport var ToggleButton = React.forwardRef(function (props, ref) {\n var className = classNames('k-select', props.className);\n return (React.createElement(\"a\", { ref: ref, id: props.id, role: \"button\", style: props.style, className: className, tabIndex: props.tabIndex, title: props.title, \"aria-label\": props.title, onMouseDown: props.onMouseDown, onClick: props.onClick, onMouseUp: props.onMouseUp }, props.children));\n});\n","import * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the default `pickerWrap` component rendered by the [KendoReact Scheduler DatePicker]({% slug overview_datepicker %}).\n */\nexport var PickerWrap = React.forwardRef(function (props, ref) {\n var _ref = props._ref;\n var element = React.useRef(null);\n React.useImperativeHandle(ref, function () { return element.current; });\n React.useImperativeHandle(_ref, function () { return element.current; });\n var className = React.useMemo(function () { return classNames(props.className, 'k-picker-wrap'); }, [props.className]);\n return (React.createElement(\"span\", { ref: element, id: props.id, style: props.style, className: className, tabIndex: props.tabIndex }, props.children));\n});\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\n/**\n * @hidden\n */\nexport var usePickerFloatingLabel = function (dateInput) {\n var _a = React.useState(false), show = _a[0], setShow = _a[1];\n var syncText = function () {\n if (dateInput.current) {\n setShow(Boolean(dateInput.current.text));\n }\n };\n React.useEffect(syncText);\n return {\n editorValue: show\n };\n};\n/**\n * @hidden\n */\nexport var PickerFloatingLabel = function (props) {\n var floatingLabelProps = usePickerFloatingLabel(props.dateInput);\n return (React.createElement(FloatingLabel, __assign({}, props, floatingLabelProps)));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getDate, cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys, AsyncFocusBlur, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { DateInput } from '../dateinput/DateInput';\nimport { Calendar } from '../calendar/components/Calendar';\nimport { MIN_DATE, MAX_DATE, setTime } from '../utils';\nimport { isInDateRange } from '../utils';\nimport { messages, toggleCalendar } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { ToggleButton } from './ToggleButton';\nimport { PickerWrap } from '../common/PickerWrap';\nimport { PickerFloatingLabel } from '../hooks/usePickerFloatingLabel';\n/** @hidden */\nvar DatePickerWithoutContext = /** @class */ (function (_super) {\n __extends(DatePickerWithoutContext, _super);\n function DatePickerWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this._popupId = guid();\n _this._element = null;\n _this._wrapper = null;\n _this._dateInput = React.createRef();\n _this._calendar = null;\n _this.shouldFocusDateInput = false;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this.dateInput) {\n _this.dateInput.focus();\n }\n };\n _this.setCalendarRef = function (calendar) {\n _this._calendar = calendar;\n };\n _this.nextValue = function (nextProps, nextState) {\n return nextProps.value !== undefined\n ? nextProps.value\n : nextState.value;\n };\n _this.nextShow = function (nextProps, nextState) {\n return nextProps.show !== undefined\n ? nextProps.show\n : nextState.show;\n };\n _this.handleInputValueChange = function (event) {\n _this.handleValueChange(event.value, event);\n };\n _this.handleCalendarValueChange = function (event) {\n var value = _this.mergeTime(event.value);\n _this.handleValueChange(value, event);\n };\n _this.handleValueChange = function (value, event) {\n _this.setState({\n value: cloneDate(value || undefined),\n show: false\n });\n _this.valueDuringOnChange = value;\n _this.showDuringOnChange = false;\n _this.shouldFocusDateInput = true;\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n show: _this.show,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n _this.showDuringOnChange = undefined;\n };\n _this.handleFocus = function () {\n _this.setState({ focused: true });\n };\n _this.handleBlur = function () {\n _this.setState({ focused: false });\n _this.setShow(false);\n };\n _this.handleIconClick = function () {\n if (_this.props.disabled) {\n return;\n }\n _this.shouldFocusDateInput = true;\n _this.setShow(!_this.show);\n };\n _this.handleIconMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleKeyDown = function (event) {\n var altKey = event.altKey, keyCode = event.keyCode;\n if (keyCode === Keys.esc) {\n _this.shouldFocusDateInput = true;\n _this.setShow(false);\n return;\n }\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n _this.shouldFocusDateInput = keyCode === Keys.up;\n _this.setShow(keyCode === Keys.down);\n }\n };\n validatePackage(packageMetadata);\n _this.state = {\n value: _this.props.defaultValue || DatePickerWithoutContext.defaultProps.defaultValue,\n show: _this.props.defaultShow || DatePickerWithoutContext.defaultProps.defaultShow,\n focused: false\n };\n return _this;\n }\n Object.defineProperty(DatePickerWithoutContext.prototype, \"element\", {\n /**\n * Gets the wrapping element of the DatePickerWithoutContext.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"dateInput\", {\n /**\n * Gets the DateInput component inside the DatePicker component.\n */\n get: function () {\n return this._dateInput.current;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"calendar\", {\n /**\n * Gets the Calendar component inside the DatePicker component.\n */\n get: function () {\n return this._calendar;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the DatePickerWithoutContext.\n */\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return (value !== null) ? cloneDate(value) : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"show\", {\n /**\n * Gets the popup state of the DatePickerWithoutContext.\n */\n get: function () {\n return this.showDuringOnChange !== undefined\n ? this.showDuringOnChange\n : this.props.show !== undefined\n ? this.props.show\n : this.state.show;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the DatePickerWithoutContext.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : DatePickerWithoutContext.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : DatePickerWithoutContext.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"dateInputComp\", {\n get: function () {\n return this.props.dateInput || DatePickerWithoutContext.defaultProps.dateInput;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"toggleButtonComp\", {\n get: function () {\n return this.props.toggleButton || DatePickerWithoutContext.defaultProps.toggleButton;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"calendarComp\", {\n get: function () {\n return this.props.calendar || DatePickerWithoutContext.defaultProps.calendar;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"popupComp\", {\n get: function () {\n return this.props.popup || DatePickerWithoutContext.defaultProps.popup;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"pickerWrapComp\", {\n get: function () {\n return this.props.pickerWrap || DatePickerWithoutContext.defaultProps.pickerWrap;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DatePicker is set.\n */\n get: function () {\n var inRange = isInDateRange(this.value, this.min, this.max);\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== null) && inRange;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DatePickerWithoutContext.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DatePickerWithoutContext.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n DatePickerWithoutContext.prototype.componentDidMount = function () {\n if (this.show) {\n // If defaultShow is true during the initial render, the popup is not aligned.\n this.forceUpdate();\n }\n };\n /**\n * @hidden\n */\n DatePickerWithoutContext.prototype.componentDidUpdate = function () {\n if (this._calendar && this._calendar.element && this.show && !this.prevShow) {\n this._calendar.element.focus({ preventScroll: true });\n }\n if (this.dateInput\n && this.dateInput.element\n && !this.show\n && this.shouldFocusDateInput) {\n this.dateInput.element.focus({ preventScroll: true });\n }\n this.prevShow = this.show;\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n DatePickerWithoutContext.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n DatePickerWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, format = _a.format, formatPlaceholder = _a.formatPlaceholder, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate, className = _a.className, width = _a.width, name = _a.name, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy;\n var _b = this.props.popupSettings, popupClass = _b.popupClass, otherPopupSettings = __rest(_b, [\"popupClass\"]);\n var show = this.show;\n var value = this.value;\n var sanitizedValue = value && getDate(value);\n var isValid = !this.validityStyles || this.validity.valid;\n var rootClassName = classNames('k-widget k-datepicker', className);\n var wrapperClassNames = classNames('k-picker-wrap', {\n 'k-state-invalid': !isValid,\n 'k-state-disabled': disabled,\n 'k-state-focused': this.state.focused\n });\n var popupClassNames = classNames('k-calendar-container k-group k-reset', popupClass);\n var dateInputProps = {\n disabled: disabled,\n format: format,\n formatPlaceholder: formatPlaceholder,\n id: id,\n ariaLabelledBy: ariaLabelledBy,\n ariaDescribedBy: ariaDescribedBy,\n max: max,\n min: min,\n name: name,\n onChange: this.handleInputValueChange,\n required: required,\n tabIndex: !show ? tabIndex : -1,\n title: title,\n valid: this.validity.valid,\n validationMessage: validationMessage,\n validityStyles: validityStyles,\n value: value,\n label: undefined,\n placeholder: !this.state.focused ? this.props.placeholder : null,\n ariaHasPopup: true,\n ariaExpanded: this.show\n };\n var popupProps = __assign({ show: show, anchor: this._wrapper || this._element, className: popupClassNames, id: this._popupId, anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n }, popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n } }, otherPopupSettings);\n var calendarProps = {\n disabled: disabled,\n value: sanitizedValue,\n min: min,\n max: max,\n weekNumber: weekNumber,\n focusedDate: focusedDate,\n onChange: this.handleCalendarValueChange\n };\n var datepicker = (React.createElement(AsyncFocusBlur, { onFocus: this.handleFocus, onBlur: this.handleBlur, onSyncBlur: this.props.onBlur, onSyncFocus: this.props.onFocus }, function (_a) {\n var onFocus = _a.onFocus, onBlur = _a.onBlur;\n return (React.createElement(\"span\", { role: \"group\", \"aria-expanded\": _this.show, ref: function (span) { _this._element = span; }, className: rootClassName, onKeyDown: _this.handleKeyDown, style: { width: width }, onFocus: onFocus, onBlur: onBlur },\n React.createElement(_this.pickerWrapComp, { _ref: function (span) { _this._wrapper = span; }, className: wrapperClassNames },\n React.createElement(_this.dateInputComp, __assign({ _ref: _this._dateInput }, dateInputProps)),\n React.createElement(_this.toggleButtonComp, { onMouseDown: _this.handleIconMouseDown, onClick: _this.handleIconClick, title: provideLocalizationService(_this)\n .toLanguageString(toggleCalendar, messages[toggleCalendar]), className: \"k-select\" },\n React.createElement(\"span\", { className: \"k-icon k-i-calendar\" }))),\n React.createElement(_this.popupComp, __assign({}, popupProps),\n React.createElement(_this.calendarComp, __assign({ _ref: _this.setCalendarRef }, calendarProps)))));\n }));\n return this.props.label\n ? (React.createElement(PickerFloatingLabel, { dateInput: this._dateInput, label: this.props.label, editorId: id, editorValid: isValid, editorDisabled: this.props.disabled, children: datepicker, style: { width: this.props.width } }))\n : datepicker;\n };\n DatePickerWithoutContext.prototype.setShow = function (show) {\n if (this.show === show) {\n return;\n }\n this.setState({ show: show });\n };\n DatePickerWithoutContext.prototype.mergeTime = function (value) {\n return this.value && value ? setTime(value, this.value) : value;\n };\n DatePickerWithoutContext.prototype.nextTick = function (f) {\n // XXX: use window.setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n // Handles multiple focus events happening at the same time.\n clearTimeout(this.nextTickId);\n this.nextTickId = window.setTimeout(function () { return f(); });\n };\n /**\n * @hidden\n */\n DatePickerWithoutContext.displayName = 'DatePicker';\n /**\n * @hidden\n */\n DatePickerWithoutContext.propTypes = {\n className: PropTypes.string,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n skeleton: PropTypes.string,\n pattern: PropTypes.string,\n date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n era: PropTypes.oneOf(['narrow', 'short', 'long']),\n year: PropTypes.oneOf(['numeric', '2-digit']),\n month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: PropTypes.oneOf(['numeric', '2-digit']),\n weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n hour: PropTypes.oneOf(['numeric', '2-digit']),\n hour12: PropTypes.bool,\n minute: PropTypes.oneOf(['numeric', '2-digit']),\n second: PropTypes.oneOf(['numeric', '2-digit']),\n timeZoneName: PropTypes.oneOf(['short', 'long'])\n })\n ]),\n formatPlaceholder: PropTypes.oneOfType([\n PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n PropTypes.shape({\n year: PropTypes.string,\n month: PropTypes.string,\n day: PropTypes.string,\n hour: PropTypes.string,\n minute: PropTypes.string,\n second: PropTypes.string\n })\n ]),\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n name: PropTypes.string,\n popupSettings: PropTypes.shape({\n animate: PropTypes.bool,\n appendTo: PropTypes.any,\n popupClass: PropTypes.string\n }),\n show: PropTypes.bool,\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n value: PropTypes.instanceOf(Date),\n weekNumber: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool\n };\n /**\n * @hidden\n */\n DatePickerWithoutContext.defaultProps = {\n defaultShow: false,\n defaultValue: null,\n dateInput: DateInput,\n calendar: Calendar,\n toggleButton: ToggleButton,\n popup: Popup,\n pickerWrap: PickerWrap,\n disabled: false,\n format: 'd',\n max: MAX_DATE,\n min: MIN_DATE,\n popupSettings: {},\n tabIndex: 0,\n weekNumber: false,\n required: false,\n validityStyles: true\n };\n return DatePickerWithoutContext;\n}(React.Component));\nexport { DatePickerWithoutContext };\n/**\n * Represents the PropsContext of the `DatePicker` component.\n * Used for global configuration of all `DatePicker` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var DatePickerPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare */\n/**\n * Represents the KendoReact DatePicker Component.\n *\n * Accepts properties of type [DatePickerProps]({% slug api_dateinputs_datepickerprops %}).\n * Obtaining the `ref` returns an object of type [DatePickerHandle]({% slug api_dateinputs_datepickerhandle %}).\n */\nexport var DatePicker = withPropsContext(DatePickerPropsContext, DatePickerWithoutContext);\nDatePicker.displayName = 'KendoReactDatePicker';\nregisterForLocalization(DatePickerWithoutContext);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { cellBoolDropdownChange, cellInputChange, cellOperatorChange } from '../filterCommon';\n/**\n * @hidden\n */\nvar GridColumnMenuFilterCell = /** @class */ (function (_super) {\n __extends(GridColumnMenuFilterCell, _super);\n function GridColumnMenuFilterCell(props) {\n var _this = _super.call(this, props) || this;\n _this.renderOperatorEditor = function () {\n if (_this.props.filterType === 'boolean') {\n return;\n }\n var value = _this.props.operators.find(function (item) { return item.operator === _this.props.operator; }) || null;\n return (React.createElement(DropDownList, { value: value, onChange: _this.operatorChange, data: _this.props.operators, textField: \"text\" }));\n };\n _this.inputChange = _this.inputChange.bind(_this);\n _this.operatorChange = _this.operatorChange.bind(_this);\n _this.boolDropdownChange = _this.boolDropdownChange.bind(_this);\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuFilterCell.prototype.render = function () {\n return (React.createElement(React.Fragment, null,\n this.renderOperatorEditor(),\n this.filterComponent(this.props.filterType, this.props.value, this.props.booleanValues)));\n };\n GridColumnMenuFilterCell.prototype.inputChange = function (value, e) {\n cellInputChange(value, e, this.props);\n };\n GridColumnMenuFilterCell.prototype.operatorChange = function (event) {\n cellOperatorChange(event, this.props.value, this.props.onChange);\n };\n GridColumnMenuFilterCell.prototype.boolDropdownChange = function (event) {\n cellBoolDropdownChange(event, this.props.onChange);\n };\n GridColumnMenuFilterCell.prototype.filterComponent = function (filterType, value, booleanValues) {\n var _this = this;\n switch (filterType) {\n case 'numeric':\n return (React.createElement(NumericTextBox, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); }, rangeOnEnter: false }));\n case 'date':\n return (React.createElement(DatePicker, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); } }));\n case 'boolean':\n var noFilterSet_1 = function (filter) { return filter === null || filter === undefined; };\n return (React.createElement(DropDownList, { onChange: this.boolDropdownChange, value: booleanValues.find(function (item) { return item.operator === (noFilterSet_1(value) ? '' : value); }), data: booleanValues, textField: \"text\" }));\n default: return (React.createElement(\"input\", { className: \"k-textbox\", value: value || '', onChange: function (e) { _this.inputChange(e.target.value, e); } }));\n }\n };\n return GridColumnMenuFilterCell;\n}(React.Component));\nexport { GridColumnMenuFilterCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { GridColumnMenuFilterCell } from './GridColumnMenuFilterCell';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\n/**\n * @hidden\n */\nvar GridColumnMenuFilterUI = /** @class */ (function (_super) {\n __extends(GridColumnMenuFilterUI, _super);\n function GridColumnMenuFilterUI() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridColumnMenuFilterUI.prototype.render = function () {\n var _a = this.props, firstFilterProps = _a.firstFilterProps, hideSecondFilter = _a.hideSecondFilter, secondFilterProps = _a.secondFilterProps, logicData = _a.logicData, logicValue = _a.logicValue, onLogicChange = _a.onLogicChange;\n return (React.createElement(React.Fragment, null,\n React.createElement(GridColumnMenuFilterCell, __assign({}, firstFilterProps)),\n !hideSecondFilter && (React.createElement(React.Fragment, null,\n React.createElement(DropDownList, { data: logicData, value: logicValue, onChange: onLogicChange, className: 'k-filter-and', textField: \"text\" }),\n React.createElement(GridColumnMenuFilterCell, __assign({}, secondFilterProps))))));\n };\n return GridColumnMenuFilterUI;\n}(React.Component));\nexport { GridColumnMenuFilterUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { isCompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { GridColumnMenuItem } from './GridColumnMenuItem';\nimport { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup';\nimport { GridColumnMenuItemContent } from './GridColumnMenuItemContent';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { operatorMap, getDefaultOperator, filterLogicList, defaultHideSecondFilter, booleanFilterValues, getFilterType, IsUnaryFilter } from '../filterCommon';\nimport { messages, filterClearButton, filterSubmitButton, filterTitle } from '../messages';\nimport { GridColumnMenuFilterUI } from './GridColumnMenuFilterUI';\n/**\n * @hidden\n */\nexport var rootFilterOrDefault = function (rootFilter) {\n return (rootFilter || { filters: [], logic: 'and' });\n};\n/**\n * @hidden\n */\nexport var filterGroupByField = function (field, filter) {\n var rootFilter = rootFilterOrDefault(filter);\n var compositeFilters = rootFilter.filters\n .filter(function (f) {\n if (isCompositeFilterDescriptor(f)) {\n return f.filters &&\n f.filters.length &&\n f.filters.length <= 2 &&\n !f.filters.find(function (nf) { return isCompositeFilterDescriptor(nf) || nf.field !== field; });\n }\n return false;\n });\n return compositeFilters[0] || null;\n};\n/**\n * @example\n * ```jsx-no-run\n * class TextColumnMenu extends React.Component {\n * render() {\n * return (\n * <div>\n * <GridColumnMenuSort {...this.props} />\n * <GridColumnMenuFilter {...this.props} />\n * </div>);\n * }\n * }\n *\n * class App extends React.PureComponent {\n * constructor(props) {\n * super(props);\n *\n * this.state = this.createAppState({\n * take: 10,\n * skip: 0\n * });\n * }\n *\n * createAppState(dataState) {\n * return {\n * result: process(products.slice(0), dataState),\n * dataState: dataState\n * };\n * }\n *\n * dataStateChange = (event) => {\n * this.setState(this.createAppState(event.dataState));\n * }\n *\n * render() {\n * return (\n * <div>\n * <Grid\n * data={this.state.result}\n * {...this.state.dataState}\n * onDataStateChange={this.dataStateChange}\n * sortable={true}\n * pageable={true}\n * >\n * <Column field=\"ProductID\" title=\"Product ID\" />\n * <Column field=\"ProductName\" columnMenu={TextColumnMenu} />\n * </Grid>\n * <br />\n * </div>\n * );\n * }\n * }\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar GridColumnMenuFilter = /** @class */ (function (_super) {\n __extends(GridColumnMenuFilter, _super);\n function GridColumnMenuFilter(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.removeGroup = function (group, rootFilter) {\n var filters = rootFilter.filters.slice();\n var groupIndex = filters\n .findIndex(function (f) { return f === group; });\n if (groupIndex > -1) {\n filters.splice(groupIndex, 1);\n }\n return __assign({}, rootFilter, { filters: filters });\n };\n /**\n * @hidden\n */\n _this.insertGroup = function (group, rootFilter) {\n return __assign({}, rootFilter, { filters: [\n group\n ].concat(rootFilter.filters) });\n };\n /**\n * @hidden\n */\n _this.isControlled = function () { return _this.props.expanded !== undefined; };\n /**\n * @hidden\n */\n _this.onFilterExpand = function () {\n var isControlled = _this.isControlled();\n var nextValue = !(isControlled ? _this.props.expanded : _this.state.expanded);\n if (_this.props.onExpandChange) {\n _this.props.onExpandChange(nextValue);\n }\n if (!isControlled) {\n _this.setState({\n expanded: nextValue\n });\n }\n };\n /**\n * @hidden\n */\n _this.firstFilterChange = function (event) {\n _this.filterChange(0, event);\n };\n /**\n * @hidden\n */\n _this.secondFilterChange = function (event) {\n _this.filterChange(1, event);\n };\n /**\n * @hidden\n */\n _this.filterChange = function (filterIndex, e) {\n var filters = _this.state.filterGroup.filters.map(function (f, i) {\n if (i === filterIndex) {\n return __assign({}, f, { value: e.value, operator: e.operator });\n }\n return f;\n });\n _this.setState({\n filterGroup: __assign({}, _this.state.filterGroup, { filters: filters })\n });\n };\n /**\n * @hidden\n */\n _this.logicChange = function (event) {\n _this.setState({\n filterGroup: __assign({}, _this.state.filterGroup, { logic: event.target.value.operator })\n });\n };\n /**\n * @hidden\n */\n _this.clear = function (event) {\n event.preventDefault();\n if (!_this.props.onFilterChange) {\n return;\n }\n var field = _this.props.column.field;\n var rootFilter = rootFilterOrDefault(_this.props.filter);\n var filterGroup = filterGroupByField(field, _this.props.filter);\n var rootFilters = rootFilter.filters.filter(function (f) { return f !== filterGroup; });\n if (!rootFilters.length) {\n _this.props.onFilterChange(null, event);\n }\n else {\n _this.props.onFilterChange(__assign({}, rootFilter, { filters: rootFilters }), event);\n }\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n /**\n * @hidden\n */\n _this.currentFilterGroup = function () {\n return __assign({}, _this.state.filterGroup, { filters: _this.state\n .filterGroup\n .filters\n .filter(function (nf) {\n return (nf.value !== undefined && nf.value !== null && nf.value !== '') ||\n (nf.value === null && nf.operator);\n }) });\n };\n /**\n * @hidden\n */\n _this.submit = function (event) {\n event.preventDefault();\n if (!_this.props.onFilterChange) {\n return;\n }\n var field = _this.props.column.field;\n var rootFilter = rootFilterOrDefault(_this.props.filter);\n var filterGroup = filterGroupByField(field, _this.props.filter);\n var currentFilterGroup = _this.currentFilterGroup();\n var updatedFilter = null;\n if (filterGroup && currentFilterGroup.filters.length > 0) {\n var rootFilters = rootFilter.filters.map(function (f) {\n if (f === filterGroup) {\n return currentFilterGroup;\n }\n return f;\n });\n updatedFilter = __assign({}, rootFilter, { filters: rootFilters });\n }\n else if (currentFilterGroup.filters.length === 0) {\n var rootFilters = rootFilter\n .filters\n .filter(function (f) { return f !== filterGroup; });\n if (rootFilters.length) {\n updatedFilter = __assign({}, rootFilter, { filters: rootFilters });\n }\n }\n else {\n updatedFilter = __assign({}, rootFilter, { filters: rootFilter.filters.concat([currentFilterGroup]) });\n }\n _this.props.onFilterChange(updatedFilter, event);\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n var filterGroup;\n if (props.column && props.column.field) {\n var filterType = getFilterType(props.column.filter);\n var defaultOperator = getDefaultOperator(props.filterOperators, filterType);\n filterGroup = filterGroupByField(props.column.field, props.filter);\n filterGroup = filterGroup ? __assign({}, filterGroup, { filters: filterGroup.filters.map(function (f) {\n return __assign({}, f);\n }) }) : {\n logic: 'and',\n filters: [\n { field: props.column.field, operator: defaultOperator, value: IsUnaryFilter(defaultOperator) ? null : undefined },\n { field: props.column.field, operator: defaultOperator, value: IsUnaryFilter(defaultOperator) ? null : undefined }\n ]\n };\n if (filterGroup.filters.filter(function (x) { return x.field === props.column.field; }).length === 1) {\n filterGroup.filters.splice(1, 0, { field: props.column.field, operator: defaultOperator });\n }\n }\n _this.state = {\n expanded: props.expanded || false,\n filterGroup: filterGroup\n };\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuFilter.prototype.render = function () {\n var _a = this.props, column = _a.column, filterUI = _a.filterUI, hideSecondFilter = _a.hideSecondFilter, filterOperators = _a.filterOperators;\n if (!column || !column.field) {\n return React.createElement(\"div\", null);\n }\n var filterType = getFilterType(column.filter);\n var currentHideSecondFilter = hideSecondFilter !== undefined ?\n hideSecondFilter : defaultHideSecondFilter[filterType];\n var localizationService = provideLocalizationService(this);\n var filters = this.state.filterGroup.filters;\n var currentOperators = operatorMap(filterOperators[filterType], localizationService);\n var booleanValues = operatorMap(booleanFilterValues, localizationService);\n var firstFilterCellProps = {\n field: column.field,\n value: filters[0].value,\n operator: filters[0].operator,\n operators: currentOperators,\n booleanValues: booleanValues,\n onChange: this.firstFilterChange,\n filterType: filterType\n };\n var secondFilterCellProps = {\n field: column.field,\n value: filters[1].value,\n operator: filters[1].operator,\n operators: currentOperators,\n booleanValues: booleanValues,\n onChange: this.secondFilterChange,\n filterType: filterType\n };\n var filterLogic = this.state.filterGroup.logic;\n var logicData = operatorMap(filterLogicList, localizationService);\n var logicProps = {\n value: logicData.find(function (item) { return item.operator === (filterLogic === null ? '' : filterLogic); }),\n onChange: this.logicChange,\n data: logicData\n };\n var FilterUI = filterUI;\n var filterUIProps = {\n firstFilterProps: firstFilterCellProps,\n secondFilterProps: secondFilterCellProps,\n logicData: logicProps.data,\n logicValue: logicProps.value,\n onLogicChange: logicProps.onChange,\n hideSecondFilter: currentHideSecondFilter\n };\n var isFilterValid = this.currentFilterGroup().filters.length !== 0 ||\n IsUnaryFilter(filters[0].operator) ||\n IsUnaryFilter(filters[1].operator);\n var expandState = this.isControlled() ? this.props.expanded : this.state.expanded;\n return (React.createElement(GridColumnMenuItemGroup, null,\n React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(filterTitle, messages[filterTitle]), iconClass: 'k-i-filter', onClick: this.onFilterExpand }),\n React.createElement(GridColumnMenuItemContent, { show: !!expandState },\n React.createElement(\"div\", { className: 'kendo-grid-filter-menu-container' },\n React.createElement(\"form\", { className: 'k-filter-menu k-group k-reset k-state-border-up', onSubmit: this.submit, onReset: this.clear, onKeyDown: function (e) { return e.stopPropagation(); } },\n React.createElement(\"div\", { className: 'k-filter-menu-container' },\n FilterUI ?\n React.createElement(FilterUI, __assign({}, filterUIProps)) :\n React.createElement(GridColumnMenuFilterUI, __assign({}, filterUIProps)),\n React.createElement(\"div\", { className: 'k-actions k-hstack k-justify-content-stretch' },\n React.createElement(\"button\", { className: 'k-button', type: 'reset' }, localizationService\n .toLanguageString(filterClearButton, messages[filterClearButton])),\n React.createElement(\"button\", { className: 'k-button k-primary', disabled: !isFilterValid }, localizationService\n .toLanguageString(filterSubmitButton, messages[filterSubmitButton])))))))));\n };\n /* eslint-disable max-len */\n /**\n * Can be used to check if filtering is applied to a specific field ([see example]({% slug column_menu_grid %}#toc-styling-the-column-menu-icon)). Useful for creating active filter indicators.\n */\n // tslint:enable:max-line-length\n GridColumnMenuFilter.active = function (field, filter) {\n return !!filterGroupByField(field, filter);\n };\n return GridColumnMenuFilter;\n}(React.Component));\nexport { GridColumnMenuFilter };\nregisterForLocalization(GridColumnMenuFilter);\n","/**\n * @hidden\n */\nvar getDocument = function () { return typeof document !== 'undefined' ? document : {}; };\n/**\n * @hidden\n */\nvar BrowserSupportService = /** @class */ (function () {\n function BrowserSupportService() {\n }\n Object.defineProperty(BrowserSupportService.prototype, \"scrollbarWidth\", {\n get: function () {\n var document = getDocument();\n if (!this.scrollbar && document && document.createElement) {\n var div = document.createElement('div');\n div.style.cssText = 'overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n this.scrollbar = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return this.scrollbar;\n },\n enumerable: true,\n configurable: true\n });\n return BrowserSupportService;\n}());\nexport { BrowserSupportService };\n","import { BrowserSupportService } from './browser-support.service';\nimport { canUseDOM } from './canUseDOM';\n/**\n * @hidden\n */\nexport var getScrollbarWidth = function () {\n if (!canUseDOM || !document.body) {\n return false;\n }\n var scrollbarWidth = new BrowserSupportService().scrollbarWidth;\n return scrollbarWidth;\n};\n/**\n * @hidden\n */\nexport var setScrollbarWidth = function () {\n if (!canUseDOM || !document.body) {\n return false;\n }\n var scrollbarWidth = new BrowserSupportService().scrollbarWidth;\n document.body.style.setProperty('--kendo-scrollbar-width', scrollbarWidth + \"px\");\n};\n","/**\n * @hidden\n */\nexport var FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n","import { fieldList } from './fieldList';\nvar getterCache = {};\ngetterCache.undefined = function () { return undefined; };\n/**\n * Can be used for getting value from object using field path. For example `users[index].name`.\n *\n * @example\n * ```jsx-no-run\n * const values = {users:[{lastName: 'Doe'}]};\n * const firstUserLastName = getter('user[0].lastName');\n *\n * console.log(firstUserLastName(values))\n *\n * // result: 'Doe'\n * ```\n */\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n var fields = fieldList(field);\n getterCache[field] = function (obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}\n","var _a, _b, _c;\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_LEVEL = 'data-keyboardnavlevel';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_SCOPE = 'data-keyboardnavscope';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_HEADER = 'data-keyboardnavheader';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_BODY = 'data-keyboardnavbody';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_ID = 'data-keyboardnavid';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_ZONE = 'data-keyboardnavzone';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_FILTER_COL_SUFFIX = '_filter';\nvar FOCUSABLE_ELEMENTS_BASE = [\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]'\n];\n/**\n * @hidden\n */\nexport var FOCUSABLE_ELEMENTS = FOCUSABLE_ELEMENTS_BASE.concat(['[tabindex]']);\n/**\n * @hidden\n */\nexport var TABBABLE_ELEMENTS = FOCUSABLE_ELEMENTS_BASE.concat(['[tabindex]']).map(function (selector) { return selector + ':not([tabindex=\"-1\"])'; });\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationScopeAttributes = (_a = {},\n _a[KEYBOARD_NAV_DATA_SCOPE] = true,\n _a);\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationHeaderAttributes = (_b = {},\n _b[KEYBOARD_NAV_DATA_HEADER] = true,\n _b);\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationBodyAttributes = (_c = {},\n _c[KEYBOARD_NAV_DATA_BODY] = true,\n _c);\n","import { FIELD_REGEX } from './constants';\n/**\n * @hidden\n */\nexport function fieldList(field) {\n var fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : (indexAccessor || fieldName));\n });\n return fields;\n}\n","import { FOCUSABLE_ELEMENTS, KEYBOARD_NAV_DATA_BODY, KEYBOARD_NAV_DATA_HEADER, KEYBOARD_NAV_DATA_ID, KEYBOARD_NAV_DATA_LEVEL, KEYBOARD_NAV_DATA_SCOPE, KEYBOARD_NAV_FILTER_COL_SUFFIX, TABBABLE_ELEMENTS } from './constants';\n/**\n * @hidden\n */\nexport var generateNavigatableId = function (navigationId, idPrefix, type) {\n if (type === void 0) { type = 'cell'; }\n return idPrefix + \"_\" + navigationId + \"_\" + type;\n};\n/**\n * @hidden\n */\nexport var getNavigatableLevel = function (element) {\n if (!element) {\n return;\n }\n return parseInt(element.getAttribute(KEYBOARD_NAV_DATA_LEVEL) || '', 10);\n};\n/**\n * @hidden\n */\nexport var getNavigatableId = function (element) {\n if (!element) {\n return;\n }\n var dataId = element.getAttribute(KEYBOARD_NAV_DATA_ID);\n return dataId ? dataId : undefined;\n};\n/**\n * @hidden\n */\nexport var isNavigatable = function (element) {\n if (!element) {\n return false;\n }\n var dataId = element.getAttribute(KEYBOARD_NAV_DATA_ID);\n return Boolean(dataId);\n};\n/**\n * @hidden\n */\nexport var getNavigatableElement = function (scope, options) {\n if (options === void 0) { options = { level: 0 }; }\n return scope.querySelector(\"[\" + KEYBOARD_NAV_DATA_LEVEL + \"='\" + options.level + \"']\");\n};\n/**\n * @hidden\n */\nexport var getClosestNavigatableElement = function (target) {\n return (target.parentElement &&\n target.parentElement.closest(\"[\" + KEYBOARD_NAV_DATA_LEVEL + \"]\"));\n};\n/**\n * @hidden\n */\nexport var getActiveElement = function (scope, activeId) {\n return scope.querySelector(\"[\" + KEYBOARD_NAV_DATA_ID + \"='\" + activeId + \"']\");\n};\n/**\n * @hidden\n */\nexport var getClosestScope = function (target) {\n return (target.parentElement &&\n target.parentElement.closest(\"[\" + KEYBOARD_NAV_DATA_SCOPE + \"]\"));\n};\n/**\n * @hidden\n */\nexport var getHeaderElement = function (scope) {\n return scope.querySelector(\"[\" + KEYBOARD_NAV_DATA_HEADER + \"]\");\n};\n/**\n * @hidden\n */\nexport var getBodyElement = function (scope) {\n return scope.querySelector(\"[\" + KEYBOARD_NAV_DATA_BODY + \"]\");\n};\n/**\n * @hidden\n */\nexport var getFocusableElements = function (scope, options) {\n if (options === void 0) { options = { focusable: false }; }\n var selectors = options.focusable ? FOCUSABLE_ELEMENTS : TABBABLE_ELEMENTS;\n return Array.from(scope.querySelectorAll(selectors.join(',')));\n};\n/**\n * @hidden\n */\nexport var getNavigatableElements = function (scope, options) {\n if (options === void 0) { options = { level: 0 }; }\n if (!scope) {\n return [];\n }\n var selector = FOCUSABLE_ELEMENTS.map(function (el) { return el + (\"[\" + KEYBOARD_NAV_DATA_LEVEL + \"='\" + options.level + \"']\"); }).join(',');\n return Array.from(scope.querySelectorAll(selector));\n};\n/**\n * @hidden\n */\nexport var filterNavigatableElements = function (options) {\n if (options === void 0) { options = { level: 0 }; }\n var selector = FOCUSABLE_ELEMENTS.map(function (sel) { return sel + (\"[\" + KEYBOARD_NAV_DATA_LEVEL + \"='\" + options.level + \"']\"); }).join(',');\n return function (element) { return element.matches(selector); };\n};\n/**\n * @hidden\n */\nexport var focusElement = function (options) {\n var elementForFocus = options.elementForFocus, event = options.event, contextStateRef = options.contextStateRef, prevElement = options.prevElement;\n if (contextStateRef.current && elementForFocus && elementForFocus.focus) {\n event.preventDefault();\n elementForFocus.focus();\n if (isNavigatable(elementForFocus)) {\n elementForFocus.setAttribute('tabIndex', '0');\n contextStateRef.current.activeId = getNavigatableId(elementForFocus);\n }\n if (prevElement && isNavigatable(prevElement)) {\n prevElement.setAttribute('tabIndex', '-1');\n }\n }\n};\n/**\n * @hidden\n */\nexport var getIdPrefix = function (navigationStateRef) {\n return navigationStateRef.current ? navigationStateRef.current.idPrefix : '';\n};\n/**\n * @hidden\n */\nexport var findNextIdByRowIndex = function (initialRowIndex, cellIndex, elementId, matrix, isReverse) {\n if (!elementId) {\n return [];\n }\n var currentRowIndex = initialRowIndex + (isReverse ? -1 : 1);\n while (currentRowIndex >= 0 && currentRowIndex < matrix.length) {\n var currentId = matrix[currentRowIndex][cellIndex];\n if (currentId !== elementId) {\n return [currentId, [currentRowIndex, cellIndex]];\n }\n currentRowIndex = currentRowIndex + (isReverse ? -1 : 1);\n }\n return [];\n};\n/**\n * @hidden\n */\nexport var findNextIdByCellIndex = function (rowIndex, initialCellIndex, elementId, matrix, isReverse) {\n if (!elementId) {\n return [];\n }\n var currentCellIndex = initialCellIndex + (isReverse ? -1 : 1);\n while (currentCellIndex >= 0 && currentCellIndex < matrix[rowIndex].length) {\n var currentId = matrix[rowIndex][currentCellIndex];\n if (currentId !== elementId) {\n return [currentId, [rowIndex, currentCellIndex]];\n }\n currentCellIndex = currentCellIndex + (isReverse ? -1 : 1);\n }\n return [];\n};\n/**\n * @hidden\n */\nexport var findId = function (navigationMatrix, cellId) {\n if (!cellId) {\n return;\n }\n for (var rowIndex = 0; rowIndex < navigationMatrix.length; rowIndex++) {\n for (var cellIndex = 0; cellIndex < navigationMatrix[rowIndex].length; cellIndex++) {\n if (navigationMatrix[rowIndex][cellIndex] === cellId) {\n return [rowIndex, cellIndex];\n }\n }\n }\n};\n/**\n * @hidden\n */\nexport var getNextNavigationIndex = function (navigationStateRef) {\n return navigationStateRef.current ? navigationStateRef.current.navigationMatrix.length : 0;\n};\n/**\n * @hidden\n */\nexport var getFilterColumnId = function (columnId) {\n return columnId ? \"\" + columnId + KEYBOARD_NAV_FILTER_COL_SUFFIX : '';\n};\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationTools = {\n generateNavigatableId: generateNavigatableId,\n getNavigatableId: getNavigatableId,\n getNavigatableLevel: getNavigatableLevel,\n getNavigatableElement: getNavigatableElement,\n getClosestNavigatableElement: getClosestNavigatableElement,\n getActiveElement: getActiveElement,\n getClosestScope: getClosestScope,\n getHeaderElement: getHeaderElement,\n getBodyElement: getBodyElement,\n getFocusableElements: getFocusableElements,\n getNavigatableElements: getNavigatableElements,\n filterNavigatableElements: filterNavigatableElements,\n focusElement: focusElement,\n getIdPrefix: getIdPrefix,\n isNavigatable: isNavigatable,\n findNextIdByRowIndex: findNextIdByRowIndex,\n findNextIdByCellIndex: findNextIdByCellIndex,\n findId: findId,\n getNextNavigationIndex: getNextNavigationIndex,\n getFilterColumnId: getFilterColumnId\n};\n","import { guid, Keys } from '@progress/kendo-react-common';\nimport { findId, findNextIdByCellIndex, findNextIdByRowIndex, getBodyElement, getHeaderElement, getNavigatableId, tableKeyboardNavigationTools as navigationTools } from './utils';\n/**\n * @hidden\n */\nvar onConstructor = function (options) {\n var navigatable = options.navigatable, contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef, idPrefix = options.idPrefix;\n // v.2: check if nested navigation\n if (navigatable) {\n contextStateRef.current = {\n activeId: '',\n level: 0\n };\n navigationStateRef.current = {\n activeElementIsFocused: false,\n prevNavigationIndexes: undefined,\n idPrefix: idPrefix || guid(),\n navigationMatrix: [],\n lastHeaderIndex: -1\n };\n }\n};\n/**\n * @hidden\n */\nvar onComponentDidMount = function (options) {\n var scope = options.scope, contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef;\n if (contextStateRef.current && navigationStateRef.current && scope) {\n generateMatrix(options);\n var firstId = navigationStateRef.current.navigationMatrix[0][0];\n var firstIdElement = navigationTools.getActiveElement(scope, firstId);\n if (firstId && firstIdElement) {\n contextStateRef.current.activeId = firstId;\n firstIdElement.setAttribute('tabIndex', '0');\n }\n }\n};\n/**\n * @hidden\n */\nvar onGetSnapshotBeforeUpdate = function (options) {\n var contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef, currentDocument = options.document;\n if (contextStateRef.current && navigationStateRef.current && currentDocument) {\n var activeElement = currentDocument.activeElement;\n var activeId = navigationTools.getNavigatableId(activeElement);\n if (activeId && activeId === contextStateRef.current.activeId) {\n navigationStateRef.current.activeElementIsFocused = true;\n }\n }\n};\n/**\n * @hidden\n */\nvar onComponentDidUpdate = function (options) {\n var scope = options.scope, contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef;\n generateMatrix(options);\n // check if nested navigation\n if (contextStateRef.current && navigationStateRef.current && scope) {\n var activeElement = navigationTools.getActiveElement(scope, contextStateRef.current.activeId);\n if (!activeElement) {\n var firstId = navigationStateRef.current.navigationMatrix[0][0];\n var firstIdElement = navigationTools.getActiveElement(scope, firstId);\n if (firstId && firstIdElement) {\n contextStateRef.current.activeId = firstId;\n firstIdElement.setAttribute('tabIndex', '0');\n if (navigationStateRef.current.activeElementIsFocused) {\n firstIdElement.focus();\n }\n }\n }\n navigationStateRef.current.activeElementIsFocused = false;\n }\n};\n/**\n * @hidden\n */\nvar onFocus = function (event, options) {\n var contextStateRef = options.contextStateRef;\n if (event.isDefaultPrevented()) {\n return;\n }\n if (!contextStateRef.current) {\n return;\n }\n var focusedElement = event.target;\n var activeId = navigationTools.getNavigatableId(focusedElement);\n if (activeId && activeId !== contextStateRef.current.activeId) {\n var scope = navigationTools.getClosestScope(focusedElement);\n if (!scope) {\n return;\n }\n var prevElement = navigationTools.getActiveElement(scope, contextStateRef.current.activeId);\n if (prevElement) {\n prevElement.setAttribute('tabIndex', '-1');\n }\n focusedElement.setAttribute('tabIndex', '0');\n contextStateRef.current.activeId = activeId;\n }\n};\n/**\n * @hidden\n */\nvar onKeyDown = function (event, options) {\n var contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef, onNavigationAction = options.onNavigationAction;\n if (event.isDefaultPrevented()) {\n return;\n }\n if (!contextStateRef.current || !navigationStateRef.current) {\n return;\n }\n if (event.keyCode === Keys.esc) {\n // activate navigation\n var elementForFocus = navigationTools.getClosestNavigatableElement(event.target);\n navigationTools.focusElement({ elementForFocus: elementForFocus, event: event, contextStateRef: contextStateRef });\n return;\n }\n var element = event.target;\n var elementId = navigationTools.getNavigatableId(element);\n var dataLevel = navigationTools.getNavigatableLevel(element);\n var scope = navigationTools.getClosestScope(element);\n var matrix = navigationStateRef.current.navigationMatrix;\n if (dataLevel !== undefined && scope) {\n if (event.keyCode === Keys.enter) {\n // activate nested navigation or focus focusable element\n var navigatableElement = navigationTools.getNavigatableElement(element, { level: dataLevel + 1 });\n if (navigatableElement) {\n navigationTools.focusElement({\n elementForFocus: navigatableElement,\n event: event,\n contextStateRef: contextStateRef,\n prevElement: element\n });\n return;\n }\n else {\n var elementForFocus = navigationTools.getFocusableElements(element)[0];\n navigationTools.focusElement({ elementForFocus: elementForFocus, event: event, contextStateRef: contextStateRef, prevElement: element });\n return;\n }\n }\n if (event.keyCode === Keys.up ||\n event.keyCode === Keys.down ||\n event.keyCode === Keys.left ||\n event.keyCode === Keys.right) {\n var isReverse = event.keyCode === Keys.up || event.keyCode === Keys.left;\n var isVertical = event.keyCode === Keys.up || event.keyCode === Keys.down;\n var currentIdIndexes = void 0;\n if (navigationStateRef.current && navigationStateRef.current.prevNavigationIndexes) {\n var _a = navigationStateRef.current.prevNavigationIndexes, rowIndex = _a[0], cellIndex = _a[1];\n if (matrix[rowIndex][cellIndex] === elementId) {\n currentIdIndexes = navigationStateRef.current.prevNavigationIndexes;\n }\n else {\n currentIdIndexes = findId(matrix, elementId);\n }\n }\n else {\n currentIdIndexes = findId(matrix, elementId);\n }\n if (currentIdIndexes) {\n var rowIndex = currentIdIndexes[0], cellIndex = currentIdIndexes[1];\n var _b = isVertical ?\n findNextIdByRowIndex(rowIndex, cellIndex, elementId, matrix, isReverse) :\n findNextIdByCellIndex(rowIndex, cellIndex, elementId, matrix, isReverse), idForFocus = _b[0], currentIndexes = _b[1];\n if (idForFocus) {\n var elementForFocus = navigationTools.getActiveElement(scope, idForFocus);\n // emit event\n navigationTools.focusElement({ elementForFocus: elementForFocus, event: event, contextStateRef: contextStateRef, prevElement: element });\n navigationStateRef.current.prevNavigationIndexes = currentIndexes;\n if (onNavigationAction) {\n onNavigationAction({ focusElement: elementForFocus, event: event });\n }\n }\n }\n }\n }\n};\n/**\n * @hidden\n */\nvar generateMatrix = function (options) {\n var navigationStateRef = options.navigationStateRef, scope = options.scope;\n if (!navigationStateRef.current || !scope) {\n return;\n }\n var matrix = [];\n var thead = getHeaderElement(scope);\n var tbody = getBodyElement(scope);\n if (!thead || !tbody) {\n return;\n }\n var headerRows = Array.from(thead.children);\n var bodyRows = Array.from(tbody.children);\n headerRows.concat(bodyRows).forEach(function (row, rowIndex) {\n Array.from(row.children).forEach(function (cell) {\n var cellId = getNavigatableId(cell);\n if (!cellId) {\n return;\n } // cell is not navigatable\n var rowSpan = cell.rowSpan || 1;\n var cellSpan = cell.colSpan || 1;\n var cellIndex;\n for (var depth = rowIndex, maxDepth = rowIndex + rowSpan; depth < maxDepth; depth++) {\n if (!matrix[depth]) {\n matrix[depth] = [];\n }\n if (cellIndex === undefined) {\n var freeSlotIndex = matrix[depth].findIndex(function (mi) { return !mi; });\n cellIndex = freeSlotIndex > -1 ? freeSlotIndex : matrix[depth].length;\n }\n matrix[depth][cellIndex] = cellId || '';\n }\n for (var depth = cellIndex + 1, maxDepth = cellIndex + cellSpan; depth < maxDepth; depth++) {\n matrix[rowIndex][depth] = cellId || '';\n }\n });\n });\n navigationStateRef.current.navigationMatrix = matrix.filter(function (row) { return !!row; });\n navigationStateRef.current.lastHeaderIndex = headerRows.length - 1;\n};\n/**\n * @hidden\n */\nexport var tableKeyboardNavigation = {\n onConstructor: onConstructor,\n onComponentDidMount: onComponentDidMount,\n onGetSnapshotBeforeUpdate: onGetSnapshotBeforeUpdate,\n onComponentDidUpdate: onComponentDidUpdate,\n onFocus: onFocus,\n onKeyDown: onKeyDown,\n generateMatrix: generateMatrix\n};\n","/** @hidden */\nexport var TABLE_ROW_INDEX_ATTRIBUTE = 'data-grid-row-index';\n/** @hidden */\nexport var TABLE_COL_INDEX_ATTRIBUTE = 'data-grid-col-index';\n/** @hidden */\nexport var TABLE_PREVENT_SELECTION_ELEMENT = 'data-prevent-selection';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { extendDataItem, getter, Keys, mapTree, hasRelativeStackingContext } from '@progress/kendo-react-common';\nimport { TABLE_COL_INDEX_ATTRIBUTE, TABLE_ROW_INDEX_ATTRIBUTE } from './constants';\nvar GROUP_SUBITEMS_COLLECTION = 'items';\nvar LAST_SELECTION_STATE = {};\nvar getCellSelection = function (currentSelection, selectedColumn) {\n if (!currentSelection || (Array.isArray(currentSelection) && currentSelection.length === 0)) {\n return [selectedColumn];\n }\n else {\n var foundIndex = currentSelection.findIndex(function (columnIndex) { return columnIndex === selectedColumn; });\n if (foundIndex > -1) {\n return currentSelection.filter(function (columnIndex) { return columnIndex === selectedColumn; });\n }\n else {\n return currentSelection.concat([selectedColumn]);\n }\n }\n};\n/** @hidden */\nexport var closestTagName = function (target, tagName) {\n var currentTarget = target;\n while (currentTarget) {\n if (currentTarget.tagName === tagName) {\n return currentTarget;\n }\n else if (currentTarget.tagName === 'TABLE') {\n return null;\n }\n currentTarget = currentTarget.parentElement;\n }\n return null;\n};\n/** @hidden */\nexport var getRowIndex = function (element) {\n if (!element) {\n return;\n }\n var rowIndex = element.getAttribute(TABLE_ROW_INDEX_ATTRIBUTE);\n return rowIndex ? parseInt(rowIndex, 10) : undefined;\n};\n/** @hidden */\nexport var getColumnIndex = function (element) {\n if (!element) {\n return;\n }\n var colIndex = element.getAttribute(TABLE_COL_INDEX_ATTRIBUTE);\n return colIndex ? parseInt(colIndex, 10) : undefined;\n};\n/**\n * @hidden\n *\n * Apply the selected field to the data items based on the selected state.\n *\n * @param {{data: any, selectedState: {[id: string]: boolean | number[]}, dataItemKey: string; selectedField: string; subItemsField?: string; }} options\n * @returns {any[]}\n */\nexport var setSelectedState = function (options) {\n var subItemsField = options.subItemsField || GROUP_SUBITEMS_COLLECTION;\n var idGetter = getter(options.dataItemKey);\n return mapTree(options.data, subItemsField, function (item) {\n var _a;\n return extendDataItem(item, subItemsField, (_a = {},\n _a[options.selectedField] = options.selectedState[idGetter(item)],\n _a));\n });\n};\n/**\n * Get selected state from the component KeyDown event.\n *\n * @param {{event: TableKeyDownEvent, selectedState: {[id: string]: boolean | number[]}, dataItemKey: string}} options\n * @returns {{[id: string]: boolean | number[]}} - The new selected state.\n */\nexport var getSelectedStateFromKeyDown = function (options) {\n var event = options.event, dataItemKey = options.dataItemKey, selectedState = options.selectedState;\n var syntheticEvent = event.syntheticEvent, nativeEvent = event.nativeEvent, dataItems = event.dataItems, componentId = event.componentId, mode = event.mode, cell = event.cell, selectedField = event.selectedField;\n var target = nativeEvent.target, ctrlKey = nativeEvent.ctrlKey, metaKey = nativeEvent.metaKey, altKey = nativeEvent.altKey, shiftKey = nativeEvent.shiftKey;\n if (syntheticEvent.isDefaultPrevented() || nativeEvent.keyCode !== Keys.enter) {\n return selectedState;\n }\n var tdElement = closestTagName(target, 'TD');\n var trElement = closestTagName(target, 'TR');\n var colIndex = getColumnIndex(tdElement);\n var rowIndex = getRowIndex(trElement);\n var selectionState = {};\n if (tdElement && trElement && rowIndex !== undefined && colIndex !== undefined) {\n selectionState = getSelectedState({\n selectedState: selectedState,\n dataItemKey: dataItemKey,\n event: {\n ctrlKey: ctrlKey, metaKey: metaKey, altKey: altKey, shiftKey: shiftKey,\n dataItems: dataItems, cell: cell, mode: mode, selectedField: selectedField, componentId: componentId,\n startColIndex: colIndex, endColIndex: colIndex, startRowIndex: rowIndex, endRowIndex: rowIndex,\n isDrag: false,\n syntheticEvent: syntheticEvent,\n nativeEvent: nativeEvent,\n target: event.target,\n dataItem: null\n }\n });\n }\n return selectionState;\n};\n/**\n * Get selected state from the component selection event.\n *\n * @param {{event: TableSelectionChangeEvent, selectedState: {[id: string]: boolean | number[]}, dataItemKey: string}} options\n * @returns {{[id: string]: boolean | number[]}} - The new selected state.\n */\nexport var getSelectedState = function (options) {\n var event = options.event, dataItemKey = options.dataItemKey, prevSelectedState = options.selectedState;\n var dataItems = event.dataItems, startRowIndex = event.startRowIndex, endRowIndex = event.endRowIndex, startColIndex = event.startColIndex, endColIndex = event.endColIndex, cell = event.cell, isDrag = event.isDrag, ctrlKey = event.ctrlKey, shiftKey = event.shiftKey, metaKey = event.metaKey, componentId = event.componentId, mode = event.mode, dataItem = event.dataItem;\n var idGetter = getter(dataItemKey);\n var selectionState = {};\n var isInputEvent = dataItem !== null;\n if (mode === 'single') {\n var currentDataItem = dataItems.slice(startRowIndex, startRowIndex + 1)[0];\n var itemId = idGetter(currentDataItem);\n LAST_SELECTION_STATE[componentId] = {\n rowIndex: startRowIndex,\n colIndex: startColIndex\n };\n selectionState[itemId] = cell ? [startColIndex] : true;\n }\n else if (isDrag || (!shiftKey && !ctrlKey && !metaKey && !isInputEvent)) {\n if (!isDrag) {\n LAST_SELECTION_STATE[componentId] = {\n rowIndex: startRowIndex,\n colIndex: startColIndex\n };\n }\n var selectedColumns_1 = [];\n for (var i = startColIndex; i <= endColIndex; i++) {\n selectedColumns_1.push(i);\n }\n var selectedDataItems = dataItems.slice(startRowIndex, endRowIndex + 1);\n selectedDataItems.forEach(function (currentItem) {\n var itemId = idGetter(currentItem);\n selectionState[itemId] = cell ? selectedColumns_1.slice() : true;\n });\n }\n else {\n if (ctrlKey || metaKey || isInputEvent) {\n LAST_SELECTION_STATE[componentId] = {\n rowIndex: startRowIndex,\n colIndex: startColIndex\n };\n var selectedDataItems = dataItems.slice(startRowIndex, endRowIndex + 1);\n var currentDataItem = selectedDataItems[0];\n var itemId = idGetter(currentDataItem);\n selectionState = __assign({}, prevSelectedState);\n selectionState[itemId] = cell && !isInputEvent ? getCellSelection(selectionState[itemId], startColIndex) : !selectionState[itemId];\n }\n else if (shiftKey) {\n var lastRowIndex = (LAST_SELECTION_STATE[componentId] && LAST_SELECTION_STATE[componentId].rowIndex) || 0;\n var lastColIndex = (LAST_SELECTION_STATE[componentId] && LAST_SELECTION_STATE[componentId].colIndex) || 0;\n var currentStartRowIndex = Math.min(lastRowIndex, startRowIndex, endRowIndex);\n var currentEndRowIndex = Math.max(lastRowIndex, startRowIndex, endRowIndex);\n var currentStarColIndex = Math.min(lastColIndex, startColIndex, endColIndex);\n var currentEndColIndex = Math.max(lastColIndex, startColIndex, endColIndex);\n var selectedColumns_2 = [];\n for (var i = currentStarColIndex; i <= currentEndColIndex; i++) {\n selectedColumns_2.push(i);\n }\n var selectedDataItems = dataItems.slice(currentStartRowIndex, currentEndRowIndex + 1);\n selectedDataItems.forEach(function (currentItem) {\n var itemId = idGetter(currentItem);\n selectionState[itemId] = cell ? selectedColumns_2.slice() : true;\n });\n }\n }\n return selectionState;\n};\n/** @hidden */\nvar HAS_RELATIVE_STACKING_CONTEXT = hasRelativeStackingContext();\n/** @hidden */\nexport var relativeContextElement = function (element) {\n if (!element || !HAS_RELATIVE_STACKING_CONTEXT) {\n return null;\n }\n var node = element.parentElement;\n while (node) {\n if (window.getComputedStyle(node).transform !== 'none') {\n return node;\n }\n node = node.parentElement;\n }\n};\n/** @hidden */\nexport var getOffset = function (offsetParent) {\n if (offsetParent && offsetParent.ownerDocument) {\n if (offsetParent !== offsetParent.ownerDocument.body) {\n var rect = offsetParent.getBoundingClientRect();\n return {\n left: rect.left - offsetParent.scrollLeft,\n top: rect.top - offsetParent.scrollTop\n };\n }\n }\n return { left: 0, top: 0 };\n};\n/** @hidden */\nexport var getSelectionOptions = function (selectable) {\n var enabled = selectable ?\n (typeof selectable.enabled === 'boolean' ? selectable.enabled : true) :\n false;\n var drag = selectable ? Boolean(selectable.drag) : false;\n var mode = selectable && selectable.mode ? selectable.mode : 'multiple';\n var cell = Boolean(selectable && selectable.cell);\n return { enabled: enabled, drag: drag, mode: mode, cell: cell };\n};\n","import { canUseDOM } from './canUseDOM';\n/** @hidden */\nexport var hasRelativeStackingContext = function (elementSource) {\n if (!canUseDOM) {\n return false;\n }\n // Component need to pass element to make sure document owner is correct.\n // This however might be performance hit if checked for example on each drag event.\n var currentDocument = elementSource ? elementSource.ownerDocument : document;\n if (!currentDocument || !currentDocument.body) {\n return false;\n }\n var top = 10;\n var parent = currentDocument.createElement('div');\n parent.style.transform = 'matrix(10, 0, 0, 10, 0, 0)';\n parent.innerHTML = \"<div style=\\\"position: fixed; top: \" + top + \"px;\\\">child</div>\";\n currentDocument.body.appendChild(parent);\n var isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n currentDocument.body.removeChild(parent);\n return isDifferent;\n};\n","import { generateNavigatableId } from '../../navigation/utils';\nimport { ColumnDefaultProps } from '../ColumnProps';\nfunction nextColumn(columns, current) {\n var currentDepth = columns[current].depth;\n var next = null;\n for (var index = current + 1; index < columns.length; index++) {\n if (columns[index].depth === currentDepth) {\n next = columns[index];\n break;\n }\n }\n return next;\n}\nvar getColumnWidth = function (column) {\n var width = column.width ? parseFloat(column.width.toString()) : 0;\n if (!width && column.children && column.children.length) {\n width = column.children.reduce(function (currentSum, child) { return getColumnWidth(child) + currentSum; }, 0);\n }\n return width;\n};\n/**\n * @hidden\n */\nexport function mapColumns(columns) {\n var columnsMap = [[]];\n var maxDepth = 0;\n // set colspans, get maxdepth\n for (var q = columns.length - 1; q >= 0; q--) {\n maxDepth = Math.max(maxDepth, columns[q].depth);\n columns[q].colSpan = columns[q].colSpan || 1;\n if (columns[q].parentIndex !== -1) {\n columns[columns[q].parentIndex].colSpan =\n (columns[columns[q].parentIndex].colSpan || 0) + columns[q].colSpan;\n }\n }\n var colIndexByLevel = [];\n var rowSpan = 1;\n // set rowspan, kFirst, index AND create columnsMap\n columns.forEach(function (column, i) {\n columnsMap[column.depth] = columnsMap[column.depth] || [];\n var needKFirst = false;\n if (columnsMap[column.depth].length === 0) {\n if (rowSpan <= 1) {\n rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n }\n else {\n rowSpan--;\n needKFirst = true;\n }\n }\n column.rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n column.kFirst = needKFirst;\n column.index = columnsMap[column.depth].length;\n columnsMap[column.depth].push(i);\n column.ariaColumnIndex = colIndexByLevel[column.depth] ? colIndexByLevel[column.depth] + 1 : 1;\n for (var ci = column.depth; ci < column.depth + column.rowSpan; ci++) {\n colIndexByLevel[ci] = (colIndexByLevel[ci] || 0) + column.colSpan;\n }\n });\n var stickyLeftWidth = new Array(columnsMap.length).fill(0);\n var width = 0;\n // set left AND create stickyLeftWidth\n columns.forEach(function (column) {\n if (column.locked) {\n column.left = stickyLeftWidth[column.depth];\n width = getColumnWidth(column);\n if (column.children.length === 0) {\n for (var i = column.depth; i < stickyLeftWidth.length; i++) {\n stickyLeftWidth[i] += width;\n }\n }\n else {\n stickyLeftWidth[column.depth] += width;\n }\n }\n });\n var stickyRightWidth = new Array(columnsMap.length).fill(0);\n // set right, rightBorder AND create stickyRightWidth\n for (var i = columns.length - 1; i >= 0; i--) {\n var column = columns[i];\n if (column.locked) {\n column.right = stickyRightWidth[column.depth];\n width = getColumnWidth(column);\n if (column.children.length === 0) {\n for (var j = column.depth; j < stickyRightWidth.length; j++) {\n stickyRightWidth[j] += width;\n }\n }\n else {\n stickyRightWidth[column.depth] += width;\n }\n var next = nextColumn(columns, i);\n column.rightBorder = !(next && next.locked);\n }\n }\n return columnsMap;\n}\n/**\n * @hidden\n */\nexport function readColumns(elements, idInfo, depth) {\n if (depth === void 0) { depth = 0; }\n var columns = [];\n if (!elements || !elements.length) {\n return [];\n }\n elements.forEach(function (columnProps) {\n var children = readColumns(columnProps.children || [], idInfo, depth + 1);\n columns.push(Object.assign({}, { depth: depth }, ColumnDefaultProps, columnProps, {\n id: columnProps.id ? columnProps.id : generateNavigatableId(\"\" + idInfo.prevId++, idInfo.idPrefix, 'column'),\n declarationIndex: columns.length,\n children: children,\n rowSpan: 0,\n colSpan: 0,\n isAccessible: true\n }));\n });\n var comparator = function (a, b) {\n return a.orderIndex === b.orderIndex ?\n a.declarationIndex - b.declarationIndex :\n ((a.orderIndex || 0) - (b.orderIndex || 0));\n };\n columns.sort(comparator);\n if (depth === 0) {\n var ret_1 = [];\n var flat_1 = function (cols, pIndex) {\n return cols.forEach(function (c) {\n c.parentIndex = pIndex;\n flat_1(c.children, ret_1.push(c) - 1);\n });\n };\n flat_1(columns, -1);\n return ret_1;\n }\n return columns;\n}\n/**\n * @hidden\n */\nexport function isRtl(element) {\n return Boolean(element && getComputedStyle(element).direction === 'rtl');\n}\n/**\n * @hidden\n */\nexport function getIndex(event, parent) {\n if (!parent || !event || !event.originalEvent) {\n return -1;\n }\n var target = parent.ownerDocument ? parent.ownerDocument.elementFromPoint(event.clientX, event.originalEvent.clientY) : null;\n while (target && target.parentElement !== parent) {\n target = target.parentElement;\n }\n var children = parent.children;\n for (var i = 0; i < children.length; i++) {\n if (children[i] === target) {\n return i;\n }\n }\n return -1;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nvar dots = '...';\n/**\n * @hidden\n */\nvar PagerNumericButtons = /** @class */ (function (_super) {\n __extends(PagerNumericButtons, _super);\n function PagerNumericButtons() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handlePageChange = function (e, page) {\n e.preventDefault();\n _this.props.pageChange(page, e);\n };\n _this.handleSelectPageChange = function (e) {\n e.preventDefault();\n _this.props.pageChange(e.target.value, e);\n };\n return _this;\n }\n PagerNumericButtons.prototype.render = function () {\n var _this = this;\n var prevDots = this.start > 1 && this.renderDots(this.start - 1);\n var postDots = this.end < this.props.totalPages && this.renderDots(this.end + 1);\n var prevOptionDots = this.start > 1 && this.renderOptionDots(this.start - 1);\n var postOptionDots = this.end < this.props.totalPages && this.renderOptionDots(this.end + 1);\n var buttons = [];\n for (var idx = this.start; idx <= this.end; idx++) {\n buttons.push(idx);\n }\n var numerics = buttons.map(function (page) { return (React.createElement(\"li\", { key: page },\n React.createElement(\"a\", { href: \"#\", onClick: function (e) { return _this.handlePageChange(e, page); }, className: classNames('k-link', {\n 'k-state-selected': _this.props.currentPage === page\n }) }, page))); });\n var options = buttons.map(function (page) { return (React.createElement(\"option\", { key: page, className: classNames('k-link') }, page)); });\n return (React.createElement(\"div\", { className: \"k-pager-numbers-wrap\" },\n React.createElement(\"select\", { className: \"k-dropdown\", value: this.props.currentPage, onChange: function (e) { return _this.handleSelectPageChange(e); } },\n prevOptionDots,\n options,\n postOptionDots),\n React.createElement(\"ul\", { className: \"k-pager-numbers k-reset\" },\n prevDots,\n numerics,\n postDots)));\n };\n PagerNumericButtons.prototype.renderDots = function (page) {\n var _this = this;\n return (React.createElement(\"li\", null,\n React.createElement(\"a\", { className: \"k-link\", onClick: function (e) { return _this.handlePageChange(e, page); }, href: \"#\" }, dots)));\n };\n PagerNumericButtons.prototype.renderOptionDots = function (page) {\n return (React.createElement(\"option\", { className: \"k-link\", value: page }, dots));\n };\n Object.defineProperty(PagerNumericButtons.prototype, \"end\", {\n get: function () {\n return Math.min((this.start + this.props.buttonCount) - 1, this.props.totalPages);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PagerNumericButtons.prototype, \"start\", {\n get: function () {\n var page = this.props.currentPage;\n var buttonCount = this.props.buttonCount;\n if (page > buttonCount) {\n var reminder = (page % buttonCount);\n return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;\n }\n return 1;\n },\n enumerable: true,\n configurable: true\n });\n return PagerNumericButtons;\n}(React.Component));\nexport { PagerNumericButtons };\n","var _a;\n/**\n * @hidden\n */\nexport var pagerInfo = 'pager.info';\n/**\n * @hidden\n */\nexport var pagerFirstPage = 'pager.firstPage';\n/**\n * @hidden\n */\nexport var pagerPreviousPage = 'pager.previousPage';\n/**\n * @hidden\n */\nexport var pagerNextPage = 'pager.nextPage';\n/**\n * @hidden\n */\nexport var pagerLastPage = 'pager.lastPage';\n/**\n * @hidden\n */\nexport var pagerItemPerPage = 'pager.itemsPerPage';\n/**\n * @hidden\n */\nexport var pagerPage = 'pager.page';\n/**\n * @hidden\n */\nexport var pagerOf = 'pager.of';\n/**\n * @hidden\n */\nexport var pagerTotalPages = 'pager.totalPages';\n/**\n * @hidden\n */\nexport var filterEqOperator = 'filter.eqOperator';\n/**\n * @hidden\n */\nexport var filterNotEqOperator = 'filter.notEqOperator';\n/**\n * @hidden\n */\nexport var filterIsNullOperator = 'filter.isNullOperator';\n/**\n * @hidden\n */\nexport var filterIsNotNullOperator = 'filter.isNotNullOperator';\n/**\n * @hidden\n */\nexport var filterIsEmptyOperator = 'filter.isEmptyOperator';\n/**\n * @hidden\n */\nexport var filterIsNotEmptyOperator = 'filter.isNotEmptyOperator';\n/**\n * @hidden\n */\nexport var filterStartsWithOperator = 'filter.startsWithOperator';\n/**\n * @hidden\n */\nexport var filterContainsOperator = 'filter.containsOperator';\n/**\n * @hidden\n */\nexport var filterNotContainsOperator = 'filter.notContainsOperator';\n/**\n * @hidden\n */\nexport var filterEndsWithOperator = 'filter.endsWithOperator';\n/**\n * @hidden\n */\nexport var filterGteOperator = 'filter.gteOperator';\n/**\n * @hidden\n */\nexport var filterGtOperator = 'filter.gtOperator';\n/**\n * @hidden\n */\nexport var filterLteOperator = 'filter.lteOperator';\n/**\n * @hidden\n */\nexport var filterLtOperator = 'filter.ltOperator';\n/**\n * @hidden\n */\nexport var filterIsTrue = 'filter.isTrue';\n/**\n * @hidden\n */\nexport var filterIsFalse = 'filter.isFalse';\n/**\n * @hidden\n */\nexport var filterAfterOrEqualOperator = 'filter.afterOrEqualOperator';\n/**\n * @hidden\n */\nexport var filterAfterOperator = 'filter.afterOperator';\n/**\n * @hidden\n */\nexport var filterBeforeOperator = 'filter.beforeOperator';\n/**\n * @hidden\n */\nexport var filterBeforeOrEqualOperator = 'filter.beforeOrEqualOperator';\n/**\n * @hidden\n */\nexport var filterAndLogic = 'filter.andLogic';\n/**\n * @hidden\n */\nexport var filterOrLogic = 'filter.orLogic';\n/**\n * @hidden\n */\nexport var filterAddExpression = 'filter.addExpression';\n/**\n * @hidden\n */\nexport var filterAddGroup = 'filter.addGroup';\n/**\n * @hidden\n */\nexport var filterClose = 'filter.close';\n/**\n * @hidden\n */\nexport var columnMenuFilterClearButton = 'columnMenu.filterClearButton';\n/**\n * @hidden\n */\nexport var columnMenuFilterSubmitButton = 'columnMenu.filterSubmitButton';\n/**\n * @hidden\n */\nexport var columnMenuFilterTitle = 'columnMenu.filterTitle';\n/**\n * @hidden\n */\nexport var columnMenuSortAscending = 'columnMenu.sortAscending';\n/**\n * @hidden\n */\nexport var columnMenuSortDescending = 'columnMenu.sortDescending';\n/**\n * @hidden\n */\nexport var columnMenuFilterEqOperator = 'columnMenu.filterEqOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterNotEqOperator = 'columnMenu.filterNotEqOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNullOperator = 'columnMenu.filterIsNullOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNotNullOperator = 'columnMenu.filterIsNotNullOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsEmptyOperator = 'columnMenu.filterIsEmptyOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNotEmptyOperator = 'columnMenu.filterIsNotEmptyOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterStartsWithOperator = 'columnMenu.filterStartsWithOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterContainsOperator = 'columnMenu.filterContainsOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterNotContainsOperator = 'columnMenu.filterNotContainsOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterEndsWithOperator = 'columnMenu.filterEndsWithOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterGteOperator = 'columnMenu.filterGteOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterGtOperator = 'columnMenu.filterGtOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterLteOperator = 'columnMenu.filterLteOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterLtOperator = 'columnMenu.filterLtOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsTrue = 'columnMenu.filterIsTrue';\n/**\n * @hidden\n */\nexport var columnMenuFilterAfterOrEqualOperator = 'columnMenu.filterAfterOrEqualOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterAfterOperator = 'columnMenu.filterAfterOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterBeforeOperator = 'columnMenu.filterBeforeOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterBeforeOrEqualOperator = 'columnMenu.filterBeforeOrEqualOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterAndLogic = 'columnMenu.filterAndLogic';\n/**\n * @hidden\n */\nexport var columnMenuFilterOrLogic = 'columnMenu.filterOrLogic';\n/**\n * @hidden\n */\nexport var sortAriaLabel = 'sort.ariaLabel';\n/**\n * @hidden\n */\nexport var filterAriaLabel = 'filter.ariaLabel';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[pagerItemPerPage] = 'items per page',\n _a[pagerInfo] = '{0} - {1} of {2} items',\n _a[pagerFirstPage] = 'Go to the first page',\n _a[pagerPreviousPage] = 'Go to the previous page',\n _a[pagerNextPage] = 'Go to the next page',\n _a[pagerLastPage] = 'Go to the last page',\n _a[pagerPage] = 'Page',\n _a[pagerOf] = 'Of',\n _a[pagerTotalPages] = '{0}',\n _a[sortAriaLabel] = 'Sortable',\n _a[filterAriaLabel] = 'Filter',\n _a[filterEqOperator] = 'Is equal to',\n _a[filterNotEqOperator] = 'Is not equal to',\n _a[filterIsNullOperator] = 'Is null',\n _a[filterIsNotNullOperator] = 'Is not null',\n _a[filterIsEmptyOperator] = 'Is empty',\n _a[filterIsNotEmptyOperator] = 'Is not empty',\n _a[filterStartsWithOperator] = 'Starts with',\n _a[filterContainsOperator] = 'Contains',\n _a[filterNotContainsOperator] = 'Does not contain',\n _a[filterEndsWithOperator] = 'Ends with',\n _a[filterGteOperator] = 'Is greater than or equal to',\n _a[filterGtOperator] = 'Is greater than',\n _a[filterLteOperator] = 'Is less than or equal to',\n _a[filterLtOperator] = 'Is less than',\n _a[filterIsTrue] = 'Is true',\n _a[filterIsFalse] = 'Is false',\n _a[filterAfterOrEqualOperator] = 'Is after or equal to',\n _a[filterAfterOperator] = 'Is after',\n _a[filterBeforeOperator] = 'Is before',\n _a[filterBeforeOrEqualOperator] = 'Is before or equal to',\n _a[filterAndLogic] = 'And',\n _a[filterOrLogic] = 'Or',\n _a[filterAddExpression] = 'Add Expression',\n _a[filterAddGroup] = 'Add Group',\n _a[filterClose] = 'Close',\n _a[columnMenuFilterClearButton] = 'Clear',\n _a[columnMenuFilterSubmitButton] = 'Filter',\n _a[columnMenuFilterTitle] = 'Filter',\n _a[columnMenuSortAscending] = 'Sort Ascending',\n _a[columnMenuSortDescending] = 'Sort Descending',\n _a[columnMenuFilterEqOperator] = 'Is equal to',\n _a[columnMenuFilterNotEqOperator] = 'Is not equal to',\n _a[columnMenuFilterIsNullOperator] = 'Is null',\n _a[columnMenuFilterIsNotNullOperator] = 'Is not null',\n _a[columnMenuFilterIsEmptyOperator] = 'Is empty',\n _a[columnMenuFilterIsNotEmptyOperator] = 'Is not empty',\n _a[columnMenuFilterStartsWithOperator] = 'Starts with',\n _a[columnMenuFilterContainsOperator] = 'Contains',\n _a[columnMenuFilterNotContainsOperator] = 'Does not contain',\n _a[columnMenuFilterEndsWithOperator] = 'Ends with',\n _a[columnMenuFilterGteOperator] = 'Is greater than or equal to',\n _a[columnMenuFilterGtOperator] = 'Is greater than',\n _a[columnMenuFilterLteOperator] = 'Is less than or equal to',\n _a[columnMenuFilterLtOperator] = 'Is less than',\n _a[columnMenuFilterIsTrue] = 'Is true',\n _a[columnMenuFilterAfterOrEqualOperator] = 'Is after or equal to',\n _a[columnMenuFilterAfterOperator] = 'Is after',\n _a[columnMenuFilterBeforeOperator] = 'Is before',\n _a[columnMenuFilterBeforeOrEqualOperator] = 'Is before or equal to',\n _a[columnMenuFilterAndLogic] = 'And',\n _a[columnMenuFilterOrLogic] = 'Or',\n _a);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService, provideIntlService } from '@progress/kendo-react-intl';\nimport { messages, pagerOf, pagerPage, pagerTotalPages } from './../messages';\n/**\n * @hidden\n */\nvar PagerInput = /** @class */ (function (_super) {\n __extends(PagerInput, _super);\n function PagerInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._text = undefined;\n _this.onChange = function (e) {\n var text = _this._text = e.target.value.replace(/\\D/g, '');\n _this.forceUpdate();\n if (text) {\n _this.props.pageChange(parseInt(text, 10), e);\n }\n };\n _this.value = function () {\n var value = _this._text === undefined ? _this.props.currentPage.toString() : _this._text;\n _this._text = undefined;\n return value;\n };\n return _this;\n }\n PagerInput.prototype.render = function () {\n var _this = this;\n var intlService = provideIntlService(this);\n var localizationService = provideLocalizationService(this);\n var pageMessage = this.props.messagesMap ? this.props.messagesMap(pagerPage) :\n ({ messageKey: pagerPage, defaultMessage: messages[pagerPage] });\n var ofMessage = this.props.messagesMap ? this.props.messagesMap(pagerOf) :\n ({ messageKey: pagerOf, defaultMessage: messages[pagerOf] });\n var totalPagesMessage = this.props.messagesMap ? this.props.messagesMap(pagerTotalPages) :\n ({ messageKey: pagerTotalPages, defaultMessage: messages[pagerTotalPages] });\n return (React.createElement(\"span\", { className: \"k-pager-input k-label\" },\n localizationService.toLanguageString(pageMessage.messageKey, pageMessage.defaultMessage),\n React.createElement(\"input\", { className: \"k-textbox\", value: this.value(), onBlur: function () { return _this.forceUpdate(); }, onChange: this.onChange }), localizationService.toLanguageString(ofMessage.messageKey, ofMessage.defaultMessage) + \" \" + intlService\n .format(localizationService.toLanguageString(totalPagesMessage.messageKey, totalPagesMessage.defaultMessage), [\n this.props.totalPages\n ])));\n };\n return PagerInput;\n}(React.Component));\nexport { PagerInput };\nregisterForLocalization(PagerInput);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, pagerItemPerPage } from './../messages';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\n/**\n * @hidden\n */\nvar PagerPageSizes = /** @class */ (function (_super) {\n __extends(PagerPageSizes, _super);\n function PagerPageSizes() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.pageSizeChange = function (e) {\n if (_this.props.pageChange) {\n _this.props.pageChange({ skip: 0, take: parseInt(e.target.value, 10) }, e);\n }\n };\n return _this;\n }\n PagerPageSizes.prototype.render = function () {\n var _this = this;\n var sizes = this.props.pageSizes.slice();\n if (sizes.filter(function (s) { return s === _this.props.pageSize; }).length === 0) {\n sizes.unshift(this.props.pageSize);\n }\n var itemPerPageMessage = this.props.messagesMap ? this.props.messagesMap(pagerItemPerPage) :\n ({ messageKey: pagerItemPerPage, defaultMessage: messages[pagerItemPerPage] });\n return (React.createElement(\"span\", { className: \"k-pager-sizes k-label\" },\n React.createElement(DropDownList, { value: this.props.pageSize, data: sizes, onChange: this.pageSizeChange }),\n provideLocalizationService(this).toLanguageString(itemPerPageMessage.messageKey, itemPerPageMessage.defaultMessage)));\n };\n return PagerPageSizes;\n}(React.Component));\nexport { PagerPageSizes };\nregisterForLocalization(PagerPageSizes);\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-data-tools',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642516407,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { PagerNumericButtons } from './PagerNumericButtons';\nimport { PagerInput } from './PagerInput';\nimport { PagerPageSizes } from './PagerPageSizes';\nimport { messages, pagerFirstPage, pagerLastPage, pagerNextPage, pagerPreviousPage, pagerInfo } from '../messages';\nimport { registerForIntl, registerForLocalization, provideLocalizationService, provideIntlService } from '@progress/kendo-react-intl';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * @hidden\n */\nvar RESPONSIVE_BREAKPOINT_MEDIUM = 600;\n/**\n * @hidden\n */\nvar RESPONSIVE_BREAKPOINT_LARGE = 768;\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n function Pager(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this.changePage = function (page, event) {\n if (_this.props.onPageChange && page > 0 && page <= _this.totalPages) {\n _this.props.onPageChange({\n target: _this,\n skip: (page - 1) * _this.props.take,\n take: _this.props.take,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n };\n _this.onWindowResize = function () {\n var element = _this.element;\n if (!element || !_this.props.responsive) {\n return;\n }\n var width = element.offsetWidth;\n if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {\n element.classList.remove('k-pager-md');\n element.classList.add('k-pager-sm');\n }\n else if (width >= RESPONSIVE_BREAKPOINT_MEDIUM && width < RESPONSIVE_BREAKPOINT_LARGE) {\n element.classList.add('k-pager-md');\n element.classList.remove('k-pager-sm');\n }\n else {\n element.classList.remove('k-pager-md');\n element.classList.remove('k-pager-sm');\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(Pager.prototype, \"element\", {\n /**\n * Returns the HTML element of the Pager component.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Pager.prototype.componentDidMount = function () {\n window.addEventListener('resize', this.onWindowResize);\n this.onWindowResize();\n };\n /**\n * @hidden\n */\n Pager.prototype.componentWillUnmount = function () {\n window.removeEventListener('resize', this.onWindowResize);\n };\n /**\n * @hidden\n */\n Pager.prototype.render = function () {\n var _this = this;\n var _a = this.props, skip = _a.skip, take = _a.take, total = _a.total, pageSizes = _a.pageSizes, messagesMap = _a.messagesMap;\n var localizationService = provideLocalizationService(this);\n var intlService = provideIntlService(this);\n var currentPage = Math.floor(skip / take) + 1;\n var changer = this.props.type === 'numeric' ?\n (React.createElement(PagerNumericButtons, { buttonCount: this.props.buttonCount || 0, totalPages: this.totalPages, currentPage: currentPage, pageChange: this.changePage })) : (React.createElement(PagerInput, { currentPage: currentPage, totalPages: this.totalPages, pageChange: this.changePage, messagesMap: messagesMap }));\n var firstPageMessage = messagesMap ? messagesMap(pagerFirstPage) :\n ({ messageKey: pagerFirstPage, defaultMessage: messages[pagerFirstPage] });\n var previousPageMessage = messagesMap ? messagesMap(pagerPreviousPage) :\n ({ messageKey: pagerPreviousPage, defaultMessage: messages[pagerPreviousPage] });\n var nextPageMessage = messagesMap ? messagesMap(pagerNextPage) :\n ({ messageKey: pagerNextPage, defaultMessage: messages[pagerNextPage] });\n var lastPageMessage = messagesMap ? messagesMap(pagerLastPage) :\n ({ messageKey: pagerLastPage, defaultMessage: messages[pagerLastPage] });\n var infoMessage = messagesMap ? messagesMap(pagerInfo) :\n ({ messageKey: pagerInfo, defaultMessage: messages[pagerInfo] });\n var first, prev, next, last;\n if (this.props.previousNext) {\n first = this.renderButton(1, 'k-link k-pager-nav k-pager-first' + (currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(firstPageMessage.messageKey, firstPageMessage.defaultMessage), 'k-icon k-i-arrow-end-left');\n prev = this.renderButton(currentPage - 1, 'k-link k-pager-nav' + (currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(previousPageMessage.messageKey, previousPageMessage.defaultMessage), 'k-icon k-i-arrow-60-left');\n next = this.renderButton(currentPage + 1, 'k-link k-pager-nav' + (currentPage >= this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(nextPageMessage.messageKey, nextPageMessage.defaultMessage), 'k-icon k-i-arrow-60-right');\n last = this.renderButton(this.totalPages, 'k-link k-pager-nav k-pager-last' + (currentPage >= this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(lastPageMessage.messageKey, lastPageMessage.defaultMessage), 'k-icon k-i-arrow-end-right');\n }\n var pagerPageSizes = pageSizes && (React.createElement(PagerPageSizes, { pageChange: this.props.onPageChange, pageSize: take, pageSizes: pageSizes, messagesMap: messagesMap }));\n var info = this.props.info && (React.createElement(\"div\", { className: \"k-pager-info k-label\" }, intlService\n .format(localizationService.toLanguageString(infoMessage.messageKey, infoMessage.defaultMessage), [\n Math.min(skip + 1, total),\n Math.min(skip + take, total),\n total\n ])));\n return (React.createElement(\"div\", { className: classNames('k-pager-wrap k-pager k-widget', this.props.className), style: this.props.style, role: \"navigation\", ref: function (element) { return _this._element = element; } },\n first,\n prev,\n changer,\n next,\n last,\n pagerPageSizes,\n info));\n };\n Pager.prototype.renderButton = function (page, className, title, icon) {\n var _this = this;\n return (React.createElement(\"a\", { onClick: function (e) {\n e.preventDefault();\n _this.changePage(page, e);\n }, href: \"#\", className: className, title: title },\n React.createElement(\"span\", { className: icon })));\n };\n Object.defineProperty(Pager.prototype, \"totalPages\", {\n get: function () {\n return Math.ceil((this.props.total || 0) / this.props.take);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Pager.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n total: PropTypes.number.isRequired,\n skip: PropTypes.number.isRequired,\n take: PropTypes.number.isRequired,\n buttonCount: PropTypes.number,\n info: PropTypes.bool,\n type: PropTypes.oneOf(['numeric', 'input']),\n pageSizes: PropTypes.arrayOf(PropTypes.number),\n previousNext: PropTypes.bool,\n onPageChange: PropTypes.func,\n messagesMap: PropTypes.func\n };\n /**\n * @hidden\n */\n Pager.defaultProps = {\n buttonCount: 10,\n info: true,\n type: 'numeric'\n };\n return Pager;\n}(React.Component));\nexport { Pager };\nregisterForIntl(Pager);\nregisterForLocalization(Pager);\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var TableKeyboardNavigationContext = React.createContext(undefined);\nTableKeyboardNavigationContext.displayName = 'KendoReactTableKeyboardNavigationContext';\n","var getRatio = function (element, target) {\n var elementRect = element.getBoundingClientRect();\n var targetRect = target.getBoundingClientRect();\n var top = Math.max(targetRect.top, elementRect.top);\n var left = Math.max(targetRect.left, elementRect.left);\n var right = Math.min(targetRect.left + targetRect.width, elementRect.left + elementRect.width);\n var bottom = Math.min(targetRect.top + targetRect.height, elementRect.top + elementRect.height);\n var width = right - left;\n var height = bottom - top;\n if (left < right && top < bottom) {\n var targetArea = targetRect.width * targetRect.height;\n var entryArea = elementRect.width * elementRect.height;\n var intersectionArea = width * height;\n var intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n return Number(intersectionRatio.toFixed(4));\n }\n return 0;\n};\n/** @hidden */\nexport var intersect = function (element, candidates) {\n var max = 0;\n var result = null;\n candidates.forEach(function (candidate) {\n if (candidate && element) {\n var ration = getRatio(element, candidate);\n if (ration > max) {\n max = ration;\n result = candidate;\n }\n }\n });\n return result;\n};\n","import { intersect } from \"./algorithms\";\nimport { getWindow, autoScrollVelocity, scrollableViewPort, getScrollableParent, isPointerInsideContainer, getDocument } from \"./utils\";\n/** @hidden */\nexport var DRAG_AND_DROP_DISPATCH_ACTION;\n(function (DRAG_AND_DROP_DISPATCH_ACTION) {\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_DOWN\"] = \"pointerdown\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_MOVE\"] = \"pointermove\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_UP\"] = \"pointerup\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_CANCEL\"] = \"pointercancel\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_DOWN\"] = \"mousedown\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_MOVE\"] = \"mousemove\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_UP\"] = \"mouseup\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"CONTEXT_MENU\"] = \"contextmenu\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_START\"] = \"touchstart\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_MOVE\"] = \"touchmove\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_END\"] = \"touchend\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_CANCEL\"] = \"touchcancel\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"SCROLL\"] = \"scroll\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"START\"] = \"KENDO_DRAG_AND_DROP_START\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOVE\"] = \"KENDO_DRAG_AND_DROP_MOVE\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"END\"] = \"KENDO_DRAG_AND_DROP_END\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"CANCEL\"] = \"KENDO_DRAG_AND_DROP_CANCEL\";\n})(DRAG_AND_DROP_DISPATCH_ACTION || (DRAG_AND_DROP_DISPATCH_ACTION = {}));\nvar isTouchEvent = function (event) { return /^touch/.test(event.type); };\nvar isScrollEvent = function (event) { return /^(scroll)/.test(event.type); };\n/** @hidden */\nexport var normalizeEvent = function (event, state) { return (isTouchEvent(event)\n ? ({\n pageX: event.changedTouches[0].pageX,\n pageY: event.changedTouches[0].pageY,\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n scrollX: state.scrollOffset.x,\n scrollY: state.scrollOffset.y,\n offsetX: state.offset.x,\n offsetY: state.offset.y,\n type: event.type,\n originalEvent: event,\n isTouch: true,\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n metaKey: false\n })\n : isScrollEvent(event)\n ? ({\n pageX: state.pageOffset.x,\n pageY: state.pageOffset.y,\n clientX: state.clientOffset.x,\n clientY: state.clientOffset.y,\n scrollX: state.scrollOffset.x,\n scrollY: state.scrollOffset.y,\n offsetX: state.offset.x,\n offsetY: state.offset.y,\n type: event.type,\n originalEvent: event,\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n metaKey: false\n })\n : ({\n pageX: event.pageX,\n pageY: event.pageY,\n clientX: event.clientX,\n clientY: event.clientY,\n offsetX: event.offsetX,\n offsetY: event.offsetY,\n scrollX: state.scrollOffset.x,\n scrollY: state.scrollOffset.y,\n type: event.type,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey,\n originalEvent: event\n })); };\nvar noop = function () { };\n/** @hidden */\nexport var dispatchDragAndDrop = function (state, action, callbacks) {\n if (callbacks === void 0) { callbacks = {}; }\n var _a = callbacks.onIsPressedChange, onIsPressedChange = _a === void 0 ? noop : _a, _b = callbacks.onIsScrollingChange, onIsScrollingChange = _b === void 0 ? noop : _b, _c = callbacks.onVelocityChange, onVelocityChange = _c === void 0 ? noop : _c, _d = callbacks.onOffsetChange, onOffsetChange = _d === void 0 ? noop : _d, _e = callbacks.onPageOffsetChange, onPageOffsetChange = _e === void 0 ? noop : _e, _f = callbacks.onClientOffsetChange, onClientOffsetChange = _f === void 0 ? noop : _f, _g = callbacks.onScrollOffsetChange, onScrollOffsetChange = _g === void 0 ? noop : _g, _h = callbacks.onInitialScrollOffsetChange, onInitialScrollOffsetChange = _h === void 0 ? noop : _h;\n var drag = action.payload;\n var element = drag.element;\n var hint = drag.hint;\n var autoScrollDirection = state.autoScrollDirection;\n var overrideScrollableParent = state.scrollableParent;\n var event = normalizeEvent(action.event, state);\n switch (event.type) {\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_DOWN:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_DOWN\n && (!event.originalEvent.isPrimary\n || event.originalEvent.button !== 0)) {\n break;\n }\n // In rare cases where the `which` attribute is available in the mouse event\n // we check if the `left button` is explicitly clicked:\n // https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/which#return_value\n case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_DOWN:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_DOWN\n && (event.originalEvent.which\n && event.originalEvent.which > 1)\n || state.ignoreMouse) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_START:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_START\n && event.originalEvent.touches.length !== 1) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.START: {\n var scrollableParent_1 = overrideScrollableParent || getScrollableParent(action.payload.element);\n onInitialScrollOffsetChange(scrollableParent_1 instanceof Window\n ? { x: scrollableParent_1.scrollX, y: scrollableParent_1.scrollY }\n : { x: scrollableParent_1.scrollLeft, y: scrollableParent_1.scrollTop });\n onClientOffsetChange({\n x: event.clientX,\n y: event.clientY\n });\n onPageOffsetChange({\n x: event.pageX,\n y: event.pageY\n });\n onOffsetChange({\n x: event.offsetX,\n y: event.offsetY\n });\n onIsPressedChange(true);\n if (drag.onPress) {\n drag.onPress(event);\n }\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.SCROLL:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.SCROLL && !state.pressed) {\n break;\n }\n var scrollableParent = overrideScrollableParent || getScrollableParent(element);\n var scrollOffset = scrollableParent instanceof Window\n ? { x: scrollableParent.scrollX, y: scrollableParent.scrollY }\n : { x: scrollableParent.scrollLeft, y: scrollableParent.scrollTop };\n event.scrollX = scrollOffset.x - state.initialScrollOffset.x;\n event.scrollY = scrollOffset.y - state.initialScrollOffset.y;\n onScrollOffsetChange({\n x: event.scrollX,\n y: event.scrollY\n });\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_MOVE:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_MOVE && !event.originalEvent.isPrimary) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_MOVE:\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_MOVE:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_MOVE && event.originalEvent.touches.length !== 1) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.MOVE: {\n if (state.pressed) {\n if (state.autoScroll && event.originalEvent.type !== 'scroll') {\n if (element) {\n var document_1 = getDocument(element);\n var scrollableParent_2 = overrideScrollableParent || getScrollableParent(document_1.elementFromPoint(event.clientX, event.clientY));\n var newVelocity = autoScrollVelocity(event.clientX, event.clientY, scrollableViewPort(scrollableParent_2, getWindow(element)));\n onVelocityChange({\n x: (autoScrollDirection && autoScrollDirection.horizontal === false) ? 0 : newVelocity.x,\n y: (autoScrollDirection && autoScrollDirection.vertical === false) ? 0 : newVelocity.y\n });\n onIsScrollingChange(newVelocity.y !== 0 || newVelocity.x !== 0);\n }\n }\n if (!state.drag && drag.onDragStart) {\n drag.onDragStart(event);\n }\n if (drag.onDrag) {\n drag.onDrag(event);\n }\n var dropElement_1 = intersect(hint || element, state.drops.map(function (drop) { return drop && drop.element; }).filter(function (d) { return d !== (hint || element); }));\n var drop = state.drops.find(function (drop) { return drop.element === dropElement_1; });\n if (drop\n && dropElement_1\n && isPointerInsideContainer(event.clientX, event.clientY, overrideScrollableParent || getScrollableParent(dropElement_1))\n && dropElement_1 !== element) {\n if ((state.drop && state.drop.element) !== dropElement_1) {\n if (state.drop && state.drop.onDragLeave) {\n state.drop.onDragLeave(event);\n }\n if (drop.onDragEnter) {\n drop.onDragEnter(event);\n }\n }\n else {\n if (drop.onDragOver) {\n drop.onDragOver(event);\n }\n }\n }\n else if (state.drop && state.drop.onDragLeave) {\n state.drop.onDragLeave(event);\n }\n }\n onClientOffsetChange({\n x: event.clientX,\n y: event.clientY\n });\n onPageOffsetChange({\n x: event.pageX,\n y: event.pageY\n });\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_UP:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_UP && !event.originalEvent.isPrimary) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_UP:\n // the last finger has been lifted, and the user is not doing gesture.\n // there might be a better way to handle this.\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_END:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_END && event.originalEvent.touches.length !== 1) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.END: {\n onIsPressedChange(false);\n onIsScrollingChange(false);\n onScrollOffsetChange({ x: 0, y: 0 });\n if (drag.onRelease) {\n drag.onRelease(event);\n }\n if (state.drop && state.drop.onDrop) {\n state.drop.onDrop(event);\n }\n if (state.drag && drag.onDragEnd) {\n drag.onDragEnd(event);\n }\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_CANCEL:\n case DRAG_AND_DROP_DISPATCH_ACTION.CONTEXT_MENU:\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_CANCEL:\n case DRAG_AND_DROP_DISPATCH_ACTION.CANCEL: {\n onIsPressedChange(false);\n onIsScrollingChange(false);\n onScrollOffsetChange({ x: 0, y: 0 });\n if (drag.onDragEnd) {\n drag.onDragEnd(event);\n }\n if (state.drop && state.drop.onDragLeave) {\n state.drop.onDragLeave(event);\n }\n break;\n }\n default:\n break;\n }\n};\n","var detectBrowser = function () {\n var ua = window && window.navigator.userAgent;\n if (!ua) {\n return false;\n }\n var browser = false;\n var match = [];\n var browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = ua.match(browserRxs[agent]);\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.DOCUMENT_NODE || match[2], 10);\n break;\n }\n }\n }\n return browser;\n};\n/** @hidden */\nexport var getDocument = function (element) {\n return element ? element.ownerDocument || window.document : window.document;\n};\n/** @hidden */\nexport var getWindow = function (element) {\n var document = getDocument(element);\n return document\n ? document.defaultView || window\n : window;\n};\n/** @hidden */\nexport var scrollableRoot = function (element) {\n var support = { browser: detectBrowser() };\n var document = getDocument(element);\n return (support.browser.edge || support.browser.safari) ? document.body : document.documentElement;\n};\n/** @hidden */\nexport var isScrollable = function (el) {\n if (el && el.className && typeof (el.className) === 'string' && el.className.indexOf('k-auto-scrollable') > -1) {\n return true;\n }\n var overflow = window.getComputedStyle(el, 'overflow').overflow;\n return overflow.indexOf('auto') > -1 || overflow.indexOf('scroll') > -1;\n};\n/** @hidden */\nexport var getScrollableParent = function (el) {\n var root = scrollableRoot(el);\n if (!el || el === document.body || el === document.documentElement) {\n return root;\n }\n var parent = el;\n while (parent\n && parent !== document.body\n && parent.nodeType !== Node.DOCUMENT_FRAGMENT_NODE\n && parent.nodeType !== Node.DOCUMENT_NODE\n && !isScrollable(parent)) {\n parent = parent.parentNode;\n }\n if (parent && (parent === document.body || parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE)) {\n return root;\n }\n return parent;\n};\n/** @hidden */\nexport var autoScrollVelocity = function (mouseX, mouseY, rect) {\n var velocity = { x: 0, y: 0 };\n var AUTO_SCROLL_AREA = 50;\n if (mouseX - rect.left < AUTO_SCROLL_AREA) {\n velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\n }\n else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\n velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\n }\n if (mouseY - rect.top < AUTO_SCROLL_AREA) {\n velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\n }\n else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\n velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\n }\n return velocity;\n};\n/** @hidden */\nexport var scrollableViewPort = function (el, window) {\n var root = scrollableRoot(el);\n if (el === root) {\n return {\n top: root.scrollTop,\n left: root.scrollLeft,\n bottom: root.scrollTop + window.innerHeight,\n right: root.scrollLeft + window.innerWidth\n };\n }\n else {\n var rect = el.getBoundingClientRect();\n return {\n bottom: rect.top + rect.height,\n right: rect.left + rect.width,\n left: rect.left,\n top: rect.top\n };\n }\n};\n/** @hidden */\nexport var isPointerInsideContainer = function (x, y, container) {\n var rect = container.getBoundingClientRect();\n return (rect.top <= y &&\n rect.left <= x &&\n y <= rect.bottom &&\n x <= rect.right);\n};\n","import { scrollableRoot } from './utils';\n/** @hidden */\nexport var autoScroll = function (scrollableParent, vel) {\n if (!scrollableParent) {\n return;\n }\n var yIsScrollable;\n var xIsScrollable;\n var isRootNode = scrollableParent === scrollableRoot(scrollableParent);\n if (isRootNode) {\n yIsScrollable = document.body.scrollHeight > window.innerHeight;\n xIsScrollable = document.body.scrollWidth > window.innerWidth;\n }\n else {\n yIsScrollable = scrollableParent.offsetHeight <= scrollableParent.scrollHeight;\n xIsScrollable = scrollableParent.offsetWidth <= scrollableParent.scrollWidth;\n }\n var yDelta = scrollableParent.scrollTop + vel.y;\n var yInBounds = yIsScrollable && yDelta > 0 && yDelta < scrollableParent.scrollHeight;\n var xDelta = scrollableParent.scrollLeft + vel.x;\n var xInBounds = xIsScrollable && xDelta > 0 && xDelta < scrollableParent.scrollWidth;\n if (yInBounds) {\n scrollableParent.scrollTop += vel.y;\n }\n else if (yIsScrollable && yDelta < 0) {\n scrollableParent.scrollTop = 0;\n }\n if (xInBounds) {\n scrollableParent.scrollLeft += vel.x;\n }\n else if (xIsScrollable && xDelta < 0) {\n scrollableParent.scrollLeft = 0;\n }\n};\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var useInheritedState = function (context, defaultValue) {\n var _a = React.useContext(context), contextValue = _a[0], contextSetter = _a[1];\n var _b = React.useState(defaultValue), localValue = _b[0], localSetter = _b[1];\n var value = contextValue !== undefined ? contextValue : localValue;\n var handleValueChange = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n contextValue !== undefined\n ? contextSetter.apply(void 0, args) : localSetter(args[0]);\n };\n return [\n value,\n handleValueChange\n ];\n};\n","import * as React from 'react';\nimport { noop } from '../../noop';\n/**\n * @hidden\n */\nexport var DragContext = React.createContext([\n undefined,\n noop\n]);\n/**\n * @hidden\n */\nexport var DropContext = React.createContext([\n undefined,\n noop\n]);\n/**\n * @hidden\n */\nexport var DragsContext = React.createContext([[], noop, noop]);\n/**\n * @hidden\n */\nexport var DropsContext = React.createContext([[], noop, noop]);\n","import * as React from 'react';\nimport { useDraggable } from './hooks';\n/**\n * Represents the KendoReact Draggable component.\n *\n * Accepts properties of type [DraggableProps]({% slug api_common_draggableprops %}),\n * and returns an object of type [DraggableHandle]({% slug api_common_draggablehandle %}) when the `ref` is obtained.\n */\nexport var Draggable = React.forwardRef(function (props, ref) {\n var childRef = React.useRef(null);\n var target = React.useRef(null);\n var getElement = React.useCallback(function () { return childRef.current && childRef.current.element\n ? childRef.current.element\n : childRef.current; }, [childRef]);\n React.useImperativeHandle(target, function () { return ({ element: getElement() || null }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n React.useImperativeHandle(props.childRef, function () { return childRef.current; });\n var handlePress = React.useCallback(function (event) {\n if (!props.onPress) {\n return;\n }\n props.onPress({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [getElement, props.onPress]);\n var handleRelease = React.useCallback(function (event) {\n if (!props.onRelease) {\n return;\n }\n props.onRelease({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [getElement, props.onRelease]);\n var handleDragStart = React.useCallback(function (event) {\n if (!props.onDragStart) {\n return;\n }\n props.onDragStart({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [props, getElement]);\n var handleDrag = React.useCallback(function (event) {\n if (!props.onDrag) {\n return;\n }\n props.onDrag({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [getElement, props.onDrag]);\n var handleDragEnd = React.useCallback(function (event) {\n if (!props.onDragEnd) {\n return;\n }\n props.onDragEnd({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [getElement, props.onDragEnd]);\n useDraggable(childRef, {\n onPress: handlePress,\n onRelease: handleRelease,\n onDragStart: handleDragStart,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd\n }, {\n mouseOnly: props.mouseOnly,\n autoScroll: props.autoScroll,\n hint: props.hint,\n scrollContainer: props.scrollContainer\n });\n return props.children\n ? (React.cloneElement(React.Children.only(props.children), { ref: childRef }))\n : null;\n});\nDraggable.displayName = 'KendoReactDraggable';\n","import * as React from 'react';\nimport { dispatchDragAndDrop, autoScroll as autoScrollElement, getScrollableParent } from '@progress/kendo-draggable-common';\nimport { noop } from '../noop';\nimport { useInheritedState } from '../hooks/useInheritedState';\nimport { DragContext, DropContext, DragsContext, DropsContext } from '../drag-n-drop/context';\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n/**\n * Represents the KendoReact `useDraggable` hook.\n * Use it to attach `drag` events to a native HTML DOM elements, or custom React Components.\n *\n * For more information, refer to the [KendoReact Draggable]({% slug draggable_drag-and-drop %}) article.\n *\n * @param ref - The `ref` of the HTML Element or React Component which will enable the `draggable` functionality.\n * @param callbacks - A collection of callbacks, called by the `useDraggable` hook when a specific action occurs.\n * @param options - Additional configuration of the `useDraggable` hook.\n */\nexport function useDraggable(ref, callbacks, options) {\n if (options === void 0) { options = {}; }\n var _a = callbacks.onPress, onPress = _a === void 0 ? noop : _a, _b = callbacks.onRelease, onRelease = _b === void 0 ? noop : _b, _c = callbacks.onDragStart, onDragStart = _c === void 0 ? noop : _c, _d = callbacks.onDrag, onDrag = _d === void 0 ? noop : _d, _e = callbacks.onDragEnd, onDragEnd = _e === void 0 ? noop : _e;\n var _f = options.hint, hint = _f === void 0 ? null : _f, _g = options.mouseOnly, mouseOnly = _g === void 0 ? false : _g, _h = options.autoScroll, autoScroll = _h === void 0 ? true : _h, _j = options.scrollContainer, scrollContainer = _j === void 0 ? null : _j;\n var _k = React.useState(false), pressed = _k[0], setPressed = _k[1];\n var _l = React.useState(false), scrolling = _l[0], setScrolling = _l[1];\n var drop = useInheritedState(DropContext)[0];\n var _m = useInheritedState(DragContext), drag = _m[0], setDrag = _m[1];\n var drops = React.useContext(DropsContext)[0];\n var _o = React.useContext(DragsContext), drags = _o[0], registerDrag = _o[1], deregisterDrag = _o[2];\n var velocity = React.useRef({ x: 0, y: 0 });\n var scrollInterval = React.useRef();\n var ignoreMouse = React.useRef(false);\n var restoreMouseTimeout = React.useRef();\n var scrollable = React.useRef(null);\n var unmount = React.useRef(false);\n var offset = React.useRef({ x: 0, y: 0 });\n var pageOffset = React.useRef({ x: 0, y: 0 });\n var clientOffset = React.useRef({ x: 0, y: 0 });\n var initialClientOffset = React.useRef({ x: 0, y: 0 });\n var scrollOffset = React.useRef({ x: 0, y: 0 });\n var initialScrollOffset = React.useRef({ x: 0, y: 0 });\n var supportPointerEvent = Boolean(window && (typeof window !== 'undefined') && window.PointerEvent);\n var pointers = !mouseOnly && supportPointerEvent;\n var getElement = React.useCallback(function () { return ref.current && ref.current.element\n ? ref.current.element\n : ref.current; }, [ref]);\n var getHintElement = React.useCallback(function () { return hint && hint.current && hint.current.element\n ? hint.current.element\n : hint\n ? hint.current\n : null; }, [hint]);\n var getScrollContainer = React.useCallback(function () { return scrollContainer && scrollContainer.current && scrollContainer.current.element\n ? scrollContainer.current.element\n : scrollContainer\n ? scrollContainer.current\n : null; }, [scrollContainer]);\n var getAutoScrollContainer = React.useCallback(function () { return typeof autoScroll === 'object' && autoScroll.boundaryElementRef\n && autoScroll.boundaryElementRef.current && autoScroll.boundaryElementRef.current.element\n ? autoScroll.boundaryElementRef.current.element\n : typeof autoScroll === 'object' && autoScroll.boundaryElementRef && autoScroll.boundaryElementRef.current\n ? autoScroll.boundaryElementRef.current\n : null; }, [autoScroll]);\n var target = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({\n element: getElement(),\n hint: getHintElement(),\n onPress: handlePress,\n onDragStart: handleDragStart,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd,\n onRelease: handleRelease,\n data: ref.current\n }); });\n var getDocument = React.useCallback(function () {\n var element = getElement();\n return element ? element.ownerDocument || document : document;\n }, [getElement]);\n var getWindow = React.useCallback(function () {\n var document = getDocument();\n return document\n ? document.defaultView || window\n : window;\n }, [getDocument]);\n var getState = React.useCallback(function () { return ({\n drag: drag ? drag.current : null,\n drop: drop ? drop.current : null,\n drags: drags.map(function (d) { return d.current; }),\n drops: drops.map(function (d) { return d.current; }),\n pressed: pressed,\n ignoreMouse: ignoreMouse.current,\n scrollOffset: scrollOffset.current,\n offset: offset.current,\n pageOffset: pageOffset.current,\n initialScrollOffset: initialScrollOffset.current,\n clientOffset: clientOffset.current,\n initialClientOffset: initialClientOffset.current,\n velocity: velocity.current,\n autoScroll: Boolean(typeof autoScroll === 'object' ? autoScroll.enabled !== false : autoScroll),\n scrollableParent: getAutoScrollContainer(),\n autoScrollDirection: typeof autoScroll === 'object' ? autoScroll.direction : { horizontal: true, vertical: true },\n isScrolling: scrolling\n }); }, [drag, drop, drags, drops, pressed, autoScroll, getAutoScrollContainer, scrolling]);\n var handlePressedChange = React.useCallback(function (value) {\n setPressed(value);\n }, []);\n var handleScrollingChange = React.useCallback(function (value) {\n setScrolling(value);\n }, []);\n var handleVelocityChange = React.useCallback(function (value) {\n velocity.current = value;\n }, []);\n var handleOffsetChange = React.useCallback(function (value) {\n offset.current = value;\n }, []);\n var handleClientOffsetChange = React.useCallback(function (value) {\n clientOffset.current = value;\n }, []);\n var handlePageOffsetChange = React.useCallback(function (value) {\n pageOffset.current = value;\n }, []);\n var handleInitialClientOffsetChange = React.useCallback(function (value) {\n initialClientOffset.current = value;\n }, []);\n var handleScrollOffsetChange = React.useCallback(function (value) {\n scrollOffset.current = value;\n }, []);\n var handleInitialScrollOffsetChange = React.useCallback(function (value) {\n initialScrollOffset.current = value;\n }, []);\n // Drag Events\n var handlePress = React.useCallback(function (event) {\n onPress(event);\n }, [onPress]);\n var handleRelease = React.useCallback(function (event) {\n onRelease(event);\n }, [onRelease]);\n var handleDragStart = React.useCallback(function (event) {\n setDrag(target, { target: ref.current, event: event });\n onDragStart(event);\n }, [setDrag, ref, onDragStart]);\n var handleDrag = React.useCallback(function (event) {\n onDrag(event);\n }, [onDrag]);\n var handleDragEnd = React.useCallback(function (event) {\n if (unmount.current) {\n return;\n }\n setDrag(null, { target: ref.current, event: event });\n onDragEnd(event);\n }, [onDragEnd, setDrag, ref]);\n var dispatchDragEvent = React.useCallback(function (event) {\n dispatchDragAndDrop(getState(), { event: event, payload: target.current }, {\n onVelocityChange: handleVelocityChange,\n onOffsetChange: handleOffsetChange,\n onClientOffsetChange: handleClientOffsetChange,\n onPageOffsetChange: handlePageOffsetChange,\n onInitialClientOffsetChange: handleInitialClientOffsetChange,\n onScrollOffsetChange: handleScrollOffsetChange,\n onInitialScrollOffsetChange: handleInitialScrollOffsetChange,\n onIsPressedChange: handlePressedChange,\n onIsScrollingChange: handleScrollingChange\n });\n }, [\n getState,\n handleVelocityChange,\n handleOffsetChange,\n handlePageOffsetChange,\n handleClientOffsetChange,\n handleInitialClientOffsetChange,\n handleInitialScrollOffsetChange,\n handlePressedChange,\n handleScrollOffsetChange,\n handleScrollingChange\n ]);\n // Pointer Events\n var handlePointerDown = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handlePointerMove = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handlePointerCancel = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handlePointerUp = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n // Mouse Events\n var handleMouseDown = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handleMouseMove = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handleMouseUp = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handleContextMenu = React.useCallback(function (event) {\n event.preventDefault();\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n // Touch Events\n var handleTouchStart = React.useCallback(function (event) {\n event.preventDefault();\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handleTouchMove = React.useCallback(function (event) {\n event.preventDefault();\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handleTouchEnd = React.useCallback(function (event) {\n if (event.touches.length === 0 && event.changedTouches.length === 1) {\n var currentWindow = getWindow();\n ignoreMouse.current = true;\n restoreMouseTimeout.current = currentWindow.setTimeout(function () { ignoreMouse.current = false; }, IGNORE_MOUSE_TIMEOUT);\n }\n dispatchDragEvent(event);\n }, [dispatchDragEvent, getWindow]);\n var handleScroll = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n // Misc\n var prerequisites = React.useCallback(function () {\n var element = getElement();\n if (element) {\n var initialTouchAction_1 = element.style.touchAction;\n element.style.touchAction = 'none';\n return function () {\n element.style.touchAction = initialTouchAction_1;\n };\n }\n }, [getElement]);\n var register = React.useCallback(function () {\n registerDrag(target);\n return function () {\n deregisterDrag(target);\n };\n }, [deregisterDrag, registerDrag]);\n var init = function () {\n var window = getWindow();\n var element = getElement();\n var document = getDocument();\n if (pointers) {\n if (element) {\n scrollable.current = getScrollableParent(element);\n if (scrollable.current) {\n scrollable.current.addEventListener('scroll', handleScroll, { passive: true });\n }\n element.addEventListener('pointerdown', handlePointerDown, { passive: true });\n }\n if (pressed) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp, true);\n document.addEventListener('contextmenu', handleContextMenu);\n document.addEventListener('pointercancel', handlePointerCancel, { passive: true });\n }\n }\n else {\n // Hacky-hacky iOS Safari\n window.addEventListener('touchmove', noop, { capture: false, passive: false });\n if (element) {\n element.addEventListener('mousedown', handleMouseDown, { passive: true });\n if (!mouseOnly) {\n element.addEventListener('touchstart', handleTouchStart, { passive: true });\n if (pressed) {\n element.addEventListener('touchmove', handleTouchMove, { passive: true });\n element.addEventListener('touchend', handleTouchEnd, { passive: true });\n }\n }\n }\n if (pressed) {\n document.addEventListener('mousemove', handleMouseMove, { passive: true });\n document.addEventListener('mouseup', handleMouseUp, { passive: true });\n }\n }\n return function () {\n if (scrollable.current) {\n scrollable.current.removeEventListener('scroll', handleScroll);\n }\n if (element) {\n element.removeEventListener('pointerdown', handlePointerDown);\n element.removeEventListener('mousedown', handleMouseDown);\n element.removeEventListener('touchstart', handleTouchStart);\n element.removeEventListener('touchmove', handleTouchMove);\n element.removeEventListener('touchend', handleTouchEnd);\n }\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp, true);\n document.removeEventListener('contextmenu', handleContextMenu);\n document.removeEventListener('pointercancel', handlePointerCancel);\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n window.removeEventListener('touchmove', noop);\n window.clearTimeout(restoreMouseTimeout.current);\n };\n };\n React.useEffect(function () {\n var window = getWindow();\n if (scrolling) {\n var scrollableParent_1 = getScrollContainer()\n || getScrollableParent(document.elementFromPoint(clientOffset.current.x, clientOffset.current.y));\n window.clearInterval(scrollInterval.current);\n scrollInterval.current = window.setInterval(function () {\n autoScrollElement(scrollableParent_1, { x: velocity.current.x, y: velocity.current.y });\n }, 50);\n }\n return function () {\n window.clearInterval(scrollInterval.current);\n };\n }, [getElement, getScrollContainer, getWindow, scrolling]);\n React.useEffect(prerequisites, [prerequisites]);\n React.useEffect(init, [\n pressed,\n getWindow,\n getElement,\n getDocument,\n mouseOnly,\n pointers,\n handleContextMenu,\n handleMouseDown,\n handleMouseMove,\n handleMouseUp,\n handlePointerCancel,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n handleTouchEnd,\n handleTouchMove,\n handleTouchStart,\n handleScroll\n ]);\n React.useEffect(function () {\n return function () {\n unmount.current = true;\n };\n }, []);\n React.useLayoutEffect(register, [register]);\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\nimport { closestTagName, getColumnIndex, getOffset, getRowIndex, getSelectionOptions, relativeContextElement } from './utils';\nimport { TABLE_PREVENT_SELECTION_ELEMENT } from './constants';\n/** @hidden */\nexport var TableSelection = function (props) {\n var onRelease = props.onRelease, childRef = props.childRef;\n var _a = getSelectionOptions(props.selectable), selectionEnabled = _a.enabled, selectionDrag = _a.drag, selectionMode = _a.mode, selectionCell = _a.cell;\n var draggableRef = React.useRef(null);\n var overlayElementRef = React.useRef(null);\n var dragStartRef = React.useRef({ clientX: 0, clientY: 0 });\n var _b = React.useState(null), overlaySettings = _b[0], setOverlaySettings = _b[1];\n var offsetParentRef = React.useRef();\n var isDraggedRef = React.useRef(false);\n var isPreventedRef = React.useRef(false);\n var onPressHandler = React.useCallback(function (eventData) {\n var event = eventData.event;\n isPreventedRef.current = event.originalEvent.target.hasAttribute(TABLE_PREVENT_SELECTION_ELEMENT);\n if (isPreventedRef.current || !draggableRef.current) {\n return;\n }\n offsetParentRef.current = relativeContextElement(draggableRef.current.element);\n dragStartRef.current = {\n clientY: event.clientY,\n clientX: event.clientX\n };\n }, []);\n var onDragHandler = React.useCallback(function (eventData) {\n var event = eventData.event;\n var _a = dragStartRef.current, clientX = _a.clientX, clientY = _a.clientY;\n if (isPreventedRef.current) {\n return;\n }\n if (!selectionDrag || selectionMode === 'single') {\n return;\n }\n if (Math.abs(clientY - event.clientY) > 5 || Math.abs(clientX - event.clientX) > 5) {\n isDraggedRef.current = true;\n }\n if (isDraggedRef.current) {\n var offset = getOffset(offsetParentRef.current);\n setOverlaySettings({\n top: Math.min(clientY, event.clientY) - offset.top,\n left: Math.min(clientX, event.clientX) - offset.left,\n width: Math.abs(event.clientX - clientX),\n height: Math.abs(event.clientY - clientY)\n });\n }\n }, [setOverlaySettings, selectionDrag, selectionMode]);\n var onReleaseHandler = React.useCallback(function (eventData) {\n var event = eventData.event;\n var _a = dragStartRef.current, clientX = _a.clientX, clientY = _a.clientY;\n if (isPreventedRef.current || !draggableRef.current) {\n return;\n }\n var currentDocument = draggableRef.current.element && draggableRef.current.element.ownerDocument;\n if (!currentDocument) {\n return;\n }\n if (!isDraggedRef.current) {\n var startElement = currentDocument.elementFromPoint(clientX, clientY);\n if (!startElement) {\n return;\n }\n var tdElement = closestTagName(startElement, 'TD');\n var trElement = closestTagName(startElement, 'TR');\n var colIndex = getColumnIndex(tdElement);\n var rowIndex = getRowIndex(trElement);\n if (tdElement && trElement && rowIndex !== undefined && colIndex !== undefined) {\n onRelease({\n nativeEvent: event.originalEvent,\n startRowIndex: rowIndex,\n startColIndex: colIndex,\n endRowIndex: rowIndex,\n endColIndex: colIndex,\n altKey: event.altKey,\n shiftKey: event.shiftKey,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n mode: selectionMode,\n cell: selectionCell,\n isDrag: false\n });\n }\n }\n else {\n var top_1 = Math.min(clientY, event.clientY);\n var left = Math.min(clientX, event.clientX);\n var bottom = Math.max(clientY, event.clientY);\n var right = Math.max(clientX, event.clientX);\n var overlayElement = overlayElementRef.current;\n if (!overlayElement) {\n return;\n }\n overlayElement.style.visibility = 'hidden';\n var startElement = currentDocument.elementFromPoint(left, top_1);\n var endElement = currentDocument.elementFromPoint(right, bottom);\n overlayElement.style.visibility = '';\n if (!startElement || !endElement) {\n return;\n }\n var startTdElement = closestTagName(startElement, 'TD');\n var startTrElement = closestTagName(startTdElement, 'TR');\n var endTdElement = closestTagName(endElement, 'TD');\n var endTrElement = closestTagName(endTdElement, 'TR');\n var startColIndex = getColumnIndex(startTdElement);\n var startRowIndex = getRowIndex(startTrElement);\n var endColIndex = getColumnIndex(endTdElement);\n var endRowIndex = getRowIndex(endTrElement);\n if (startColIndex !== undefined &&\n startRowIndex !== undefined &&\n endColIndex !== undefined &&\n endRowIndex !== undefined) {\n onRelease({\n nativeEvent: event.originalEvent,\n startRowIndex: startRowIndex,\n startColIndex: startColIndex,\n endRowIndex: endRowIndex,\n endColIndex: endColIndex,\n altKey: event.altKey,\n shiftKey: event.shiftKey,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n mode: selectionMode,\n cell: selectionCell,\n isDrag: true\n });\n }\n }\n setOverlaySettings(null);\n isDraggedRef.current = false;\n dragStartRef.current = { clientX: 0, clientY: 0 };\n }, [setOverlaySettings, selectionMode, selectionCell, onRelease]);\n if (!selectionEnabled) {\n return (React.cloneElement(React.Children.only(props.children), { ref: childRef }));\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(Draggable, { onPress: onPressHandler, onDrag: onDragHandler, onRelease: onReleaseHandler, ref: draggableRef, childRef: childRef }, props.children),\n overlaySettings &&\n React.createElement(\"div\", { ref: overlayElementRef, style: __assign({}, overlaySettings, { position: 'fixed' }), className: 'k-marquee k-marquee-color' })));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DropClue = /** @class */ (function (_super) {\n __extends(DropClue, _super);\n function DropClue(props) {\n var _this = _super.call(this, props) || this;\n _this.state = {\n height: 0,\n visible: false,\n left: 0,\n top: 0\n };\n _this.hiddenElementRef = React.createRef();\n return _this;\n }\n DropClue.prototype.render = function () {\n var hiddenElement = this.hiddenElementRef.current;\n var dropClue = this.state.visible && canUseDOM && createPortal((React.createElement(\"div\", { className: \"k-grouping-dropclue\", style: {\n zIndex: 10000,\n display: 'block',\n top: this.state.top + 'px',\n left: this.state.left + 'px',\n height: this.state.height + 'px'\n } })), (hiddenElement && hiddenElement.ownerDocument ?\n hiddenElement.ownerDocument.body :\n document.body));\n return (React.createElement(React.Fragment, null,\n dropClue,\n React.createElement(\"div\", { ref: this.hiddenElementRef, style: { display: 'none' } })));\n };\n return DropClue;\n}(React.PureComponent));\nexport { DropClue };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DragClue = /** @class */ (function (_super) {\n __extends(DragClue, _super);\n function DragClue(props) {\n var _this = _super.call(this, props) || this;\n _this.elementRef = React.createRef();\n _this.state = {\n visible: false,\n top: 0,\n left: 0,\n innerText: '',\n status: 'k-i-cancel'\n };\n _this.hiddenElementRef = React.createRef();\n return _this;\n }\n Object.defineProperty(DragClue.prototype, \"element\", {\n get: function () {\n return this.elementRef.current;\n },\n enumerable: true,\n configurable: true\n });\n DragClue.prototype.render = function () {\n var hiddenElement = this.hiddenElementRef.current;\n var dragClue = this.state.visible && canUseDOM && createPortal((React.createElement(\"div\", { ref: this.elementRef, className: \"k-header k-drag-clue\", style: {\n display: 'block',\n position: 'absolute',\n zIndex: 20000,\n padding: '8px 12px',\n top: this.state.top + 'px',\n left: this.state.left + 'px'\n } },\n React.createElement(\"span\", { className: 'k-icon k-drag-status ' + this.state.status + ' k-icon-with-modifier' },\n React.createElement(\"span\", { className: \"k-icon k-icon-modifier\" })),\n this.state.innerText)), (hiddenElement && hiddenElement.ownerDocument ?\n hiddenElement.ownerDocument.body :\n document.body));\n return (React.createElement(React.Fragment, null,\n dragClue,\n React.createElement(\"div\", { ref: this.hiddenElementRef, style: { display: 'none' } })));\n };\n return DragClue;\n}(React.PureComponent));\nexport { DragClue };\n","import * as PropTypes from 'prop-types';\n/**\n * @hidden\n */\nexport var GridColumn = function (_) { return null; };\n/**\n * @hidden\n */\nGridColumn.displayName = 'KendoReactGridColumn';\n/**\n * @hidden\n */\nGridColumn.defaultProps = {\n filterable: true,\n editable: true,\n sortable: true,\n resizable: true,\n reorderable: true,\n groupable: true\n};\n/**\n * @hidden\n */\nGridColumn.propTypes = {\n field: PropTypes.string,\n title: PropTypes.string,\n editable: PropTypes.bool,\n sortable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n allowUnsort: PropTypes.bool\n })\n ]),\n cell: PropTypes.any,\n filterCell: PropTypes.any,\n filterTitle: PropTypes.string,\n filterable: PropTypes.bool,\n filter: PropTypes.oneOf(['text', 'numeric', 'boolean', 'date']),\n editor: PropTypes.oneOf(['text', 'numeric', 'boolean', 'date']),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minResizableWidth: PropTypes.number,\n headerCell: PropTypes.any,\n footerCell: PropTypes.any,\n headerSelectionValue: PropTypes.bool,\n format: PropTypes.string,\n headerClassName: PropTypes.string,\n className: PropTypes.string,\n reorderable: PropTypes.bool,\n resizable: PropTypes.bool,\n orderIndex: PropTypes.number,\n groupable: PropTypes.bool,\n columnMenu: PropTypes.any,\n locked: PropTypes.bool\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\n/**\n * @hidden\n */\nexport function getNestedValue(fieldName, dataItem) {\n var path = (fieldName || '').split('.');\n var data = dataItem;\n path.forEach(function (p) {\n data = data ? data[p] : undefined;\n });\n return data;\n}\n/**\n * @hidden\n */\nexport function flatData(output, input, footer, dataIndex, groupDefined, field, level) {\n if (level === void 0) { level = 0; }\n var maxLevel = level;\n for (var i = 0; i < input.length; i++) {\n if (!groupDefined || input[i].value === undefined || input[i].items === undefined) {\n output[output.length] = {\n dataIndex: dataIndex.index,\n dataItem: input[i],\n rowType: 'data',\n level: level,\n expanded: field === undefined || getNestedValue(field, input[i])\n };\n dataIndex.index++;\n continue;\n }\n maxLevel = Math.max(maxLevel, level + 1);\n var expanded = field === undefined ||\n getNestedValue(field, input[i]) === undefined ||\n getNestedValue(field, input[i]);\n // header\n output[output.length] = {\n dataIndex: -1,\n dataItem: input[i],\n level: level,\n rowType: 'groupHeader',\n expanded: expanded\n };\n // children\n if (expanded) {\n maxLevel = Math.max(flatData(output, input[i].items, footer, dataIndex, groupDefined, field, level + 1), maxLevel);\n }\n // footer\n if (footer === 'always' || (expanded && footer === 'visible')) {\n output[output.length] = {\n dataIndex: -1,\n dataItem: input[i],\n rowType: 'groupFooter',\n level: level,\n expanded: expanded\n };\n }\n }\n return maxLevel;\n}\nvar eventKeys = [\n 'sortChange',\n 'filterChange',\n 'groupChange',\n 'pageChange',\n 'expandChange',\n 'selectionChange',\n 'headerSelectionChange',\n 'rowClick',\n 'itemChange',\n 'dataStateChange',\n 'columnResize',\n 'columnReorder'\n];\nvar deprecatedHandlerMessage = function (oldKey, newKey) { return (\"The \" + oldKey + \" event handler property is deprecated, \" +\n (\"use https://www.telerik.com/kendo-react-ui/components/grid/api/GridProps/#toc-\" + newKey + \" instead\")); };\n/**\n * @hidden\n */\nexport function checkPropCompatibility(props) {\n for (var index = 0; index < eventKeys.length; index++) {\n var eventKey = eventKeys[index];\n if (props[eventKey] !== undefined) {\n var newKey = 'on' + eventKey.charAt(0).toUpperCase() + eventKey.slice(1);\n console.warn(deprecatedHandlerMessage(eventKey, newKey));\n }\n }\n}\nimport { GridColumn } from '../GridColumn';\nimport { tableKeyboardNavigationTools as navigationTools } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nexport function readColumns(elements, oldColumns, idInfo, depth) {\n if (depth === void 0) { depth = 0; }\n var columns = [];\n if (!elements) {\n return [];\n }\n if (elements && elements.length === undefined) {\n elements = [elements];\n }\n elements.forEach(function (columnProps, index) {\n columnProps = columnProps.props ? columnProps.props : columnProps;\n var oldColumn = oldColumns[index] || null;\n var children = readColumns(columnProps.children, oldColumn && oldColumn.children || [], idInfo, depth + 1);\n columns.push(Object.assign({ depth: depth }, GridColumn.defaultProps, (children.length) ? { cell: function () { return null; }, filterCell: function () { return null; } } : {}, oldColumn ? { width: oldColumn.width, orderIndex: oldColumn.orderIndex } : {}, columnProps, {\n id: columnProps.id ? columnProps.id : navigationTools.generateNavigatableId(\"\" + idInfo.prevId++, idInfo.idPrefix, 'column'),\n declarationIndex: columns.length,\n children: children,\n rowSpan: 0,\n colSpan: 0,\n isAccessible: true\n }));\n });\n var comparator = function (a, b) {\n return a.orderIndex === b.orderIndex ?\n a.declarationIndex - b.declarationIndex :\n ((a.orderIndex || 0) - (b.orderIndex || 0));\n };\n columns.sort(comparator);\n if (depth === 0) {\n var ret_1 = [];\n var flat_1 = function (cols, pIndex) {\n return cols.forEach(function (c) {\n c.parentIndex = pIndex;\n flat_1(c.children, ret_1.push(c) - 1);\n });\n };\n flat_1(columns, -1);\n return ret_1;\n }\n return columns;\n}\n/**\n * @hidden\n */\nexport function autoGenerateColumns(data, group, expandField, idInfo) {\n var propData = [];\n if (Array.isArray(data)) {\n propData = data;\n }\n else if (data) {\n propData = data.data;\n }\n var columns = [];\n if (propData.length > 0) {\n var itemForColumnsGen = propData[0];\n if (group) {\n for (var i = 0; i < group.length; i++) {\n itemForColumnsGen = itemForColumnsGen.items && itemForColumnsGen.items[0];\n }\n }\n var fields = Object.getOwnPropertyNames(itemForColumnsGen);\n fields.forEach(function (field) {\n if (field !== expandField) {\n columns.push(Object.assign({\n id: navigationTools.generateNavigatableId(\"\" + idInfo.prevId++, idInfo.idPrefix, 'column'),\n declarationIndex: -1,\n parentIndex: -1,\n depth: 0,\n colSpan: 0,\n rowSpan: 0,\n index: 0,\n left: 0,\n right: 0,\n rightBorder: false,\n children: [],\n ariaColumnIndex: 0,\n isAccessible: true\n }, GridColumn.defaultProps, { field: field }));\n }\n });\n }\n return columns;\n}\nvar hasParentFooterCell = function (columns, column) {\n var parent = columns[column.parentIndex];\n while (parent) {\n if (parent.footerCell) {\n return true;\n }\n parent = columns[parent.parentIndex];\n }\n return false;\n};\n/**\n * @hidden\n */\nexport var footerColumns = function (columns) {\n return columns.filter(function (column) {\n if (hasParentFooterCell(columns, column)) {\n return false;\n }\n return Boolean(column.footerCell) || !(column.children && column.children.length > 0);\n });\n};\n/**\n * @hidden\n */\nexport var sanitizeColumns = function (columns) {\n columns.sort(function (a, b) {\n return a.declarationIndex - b.declarationIndex;\n });\n return columns.map(function (column) {\n var declarationIndex = column.declarationIndex, parentIndex = column.parentIndex, depth = column.depth, colSpan = column.colSpan, rowSpan = column.rowSpan, index = column.index, kFirst = column.kFirst, children = column.children, props = __rest(column, [\"declarationIndex\", \"parentIndex\", \"depth\", \"colSpan\", \"rowSpan\", \"index\", \"kFirst\", \"children\"]);\n return children.length ? __assign({ children: sanitizeColumns(children) }, props) : props;\n });\n};\n","import * as React from 'react';\nimport { KEYBOARD_NAV_DATA_ID, KEYBOARD_NAV_DATA_LEVEL } from './constants';\nimport { TableKeyboardNavigationContext } from './TableKeyboardNavigationContext';\n/**\n * @hidden\n */\nexport var useTableKeyboardNavigation = function (elementId, navigatable) {\n var _a;\n var navigationContext = React.useContext(TableKeyboardNavigationContext);\n if (!navigationContext || !elementId || navigatable === false) {\n return {};\n }\n return _a = {\n tabIndex: navigationContext && navigationContext.activeId && navigationContext.activeId === elementId ? 0 : -1\n },\n _a[KEYBOARD_NAV_DATA_LEVEL] = navigationContext.level,\n _a[KEYBOARD_NAV_DATA_ID] = elementId,\n _a;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { guid } from '@progress/kendo-react-common';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nexport var GridSelectionCell = function (props) {\n var handleOnChange = React.useCallback(function (syntheticEvent) {\n if (props.selectionChange) {\n props.selectionChange({ syntheticEvent: syntheticEvent });\n }\n }, [props.selectionChange]);\n var inputId = React.useMemo(function () { return guid(); }, []);\n var selectedValue = getNestedValue(props.field, props.dataItem);\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n var defaultRendering = props.rowType !== 'groupHeader' ? (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: props.className, \"aria-colindex\": props.ariaColumnIndex, role: 'gridcell' }, navigationAttributes),\n React.createElement(\"input\", { checked: typeof selectedValue === 'boolean' && selectedValue, id: inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: handleOnChange }),\n React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: inputId }))) : null;\n return props.render ?\n props.render.call(undefined, defaultRendering, props) :\n defaultRendering;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var GridHierarchyCell = function (props) {\n var defaultRendering = null;\n var expanded = getNestedValue(props.field, props.dataItem);\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n var onKeyDownHandler = React.useCallback(function (event) {\n if (event.isDefaultPrevented()) {\n return;\n }\n if (event.keyCode === Keys.enter && props.onChange) {\n event.preventDefault();\n props.onChange({\n dataItem: props.dataItem,\n dataIndex: props.dataIndex,\n syntheticEvent: event,\n field: props.field,\n value: !expanded\n });\n }\n }, [props.dataItem, props.dataIndex, props.field, props.onChange, expanded]);\n if (props.rowType === 'groupFooter') {\n defaultRendering = React.createElement(\"td\", __assign({ className: \"k-hierarchy-cell\" }, navigationAttributes));\n }\n else if (props.rowType !== 'groupHeader') {\n var className = expanded ? 'k-icon k-i-minus' : 'k-icon k-i-plus';\n defaultRendering = (React.createElement(\"td\", __assign({ className: \"k-hierarchy-cell\", onKeyDown: onKeyDownHandler, \"aria-expanded\": expanded ? 'true' : 'false', role: 'gridcell', \"aria-colindex\": props.ariaColumnIndex }, navigationAttributes),\n React.createElement(\"a\", { onClick: function (e) {\n e.preventDefault();\n if (props.onChange) {\n props.onChange({\n dataItem: props.dataItem,\n dataIndex: props.dataIndex,\n syntheticEvent: e,\n field: props.field,\n value: !expanded\n });\n }\n }, className: className, href: \"#\", tabIndex: -1 })));\n }\n return props.render ?\n props.render.call(undefined, defaultRendering, props) :\n defaultRendering;\n};\n","import { TABLE_COL_INDEX_ATTRIBUTE, TABLE_PREVENT_SELECTION_ELEMENT, TABLE_ROW_INDEX_ATTRIBUTE } from '@progress/kendo-react-data-tools';\n/** The attribute required by the Grid selection on Grid `tr` elements. */\nexport var GRID_ROW_INDEX_ATTRIBUTE = TABLE_ROW_INDEX_ATTRIBUTE;\n/** The attribute required by the Grid selection on Grid `td` elements. */\nexport var GRID_COL_INDEX_ATTRIBUTE = TABLE_COL_INDEX_ATTRIBUTE;\n/** Attribute which disable selection start from this element. */\nexport var GRID_PREVENT_SELECTION_ELEMENT = TABLE_PREVENT_SELECTION_ELEMENT;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { guid, classNames } from '@progress/kendo-react-common';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport { GRID_COL_INDEX_ATTRIBUTE } from '../constants';\n/**\n * @hidden\n */\nexport var GridEditCell = function (props) {\n var _a, _b, _c, _d, _e;\n var data = getNestedValue(props.field, props.dataItem);\n var defaultRendering = null;\n var editCellClasses = classNames('k-grid-edit-cell', (_a = {},\n _a['k-state-selected'] = props.isSelected,\n _a), props.className);\n var inputId = React.useMemo(function () { return guid(); }, []);\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n var handleOnChange = React.useCallback(function (syntheticEvent) {\n if (props.onChange) {\n var value = syntheticEvent.target.type === 'checkbox' ?\n syntheticEvent.target.checked :\n syntheticEvent.target.value;\n props.onChange({\n dataItem: props.dataItem,\n dataIndex: props.dataIndex,\n field: props.field,\n syntheticEvent: syntheticEvent,\n value: value\n });\n }\n }, [props.onChange, props.dataItem, props.dataIndex, props.field]);\n var inputChange = React.useCallback(function (e) {\n if (props.onChange) {\n props.onChange({\n dataItem: props.dataItem,\n dataIndex: props.dataIndex,\n field: props.field,\n syntheticEvent: e.syntheticEvent,\n value: e.value\n });\n }\n }, [props.onChange, props.dataItem, props.dataIndex, props.field]);\n switch (props.editor) {\n case 'numeric':\n defaultRendering = (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: editCellClasses, \"aria-colindex\": props.ariaColumnIndex, \"aria-selected\": props.isSelected }, (_b = {}, _b[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _b), { role: 'gridcell' }, navigationAttributes),\n React.createElement(NumericTextBox, { width: \"100%\", value: (data === undefined) ? null : data, onChange: inputChange })));\n break;\n case 'date':\n defaultRendering = (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: editCellClasses, \"aria-colindex\": props.ariaColumnIndex, \"aria-selected\": props.isSelected }, (_c = {}, _c[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _c), { role: 'gridcell' }, navigationAttributes),\n React.createElement(DatePicker, { width: \"100%\", value: data, onChange: inputChange })));\n break;\n case 'boolean':\n defaultRendering = (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: editCellClasses, \"aria-colindex\": props.ariaColumnIndex, \"aria-selected\": props.isSelected }, (_d = {}, _d[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _d), { role: 'gridcell' }, navigationAttributes),\n React.createElement(\"input\", { checked: data || false, id: inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: handleOnChange }),\n React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: inputId })));\n break;\n default:\n defaultRendering = (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: editCellClasses, \"aria-colindex\": props.ariaColumnIndex, \"aria-selected\": props.isSelected }, (_e = {}, _e[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _e), { role: 'gridcell' }, navigationAttributes),\n React.createElement(\"input\", { style: { width: '100%' }, className: \"k-textbox\", value: data || '', onChange: handleOnChange })));\n }\n return props.render ?\n props.render.call(undefined, defaultRendering, props) :\n defaultRendering;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames, getScrollbarWidth } from '@progress/kendo-react-common';\nimport { isRtl, tableKeyboardNavigationHeaderAttributes } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.elementRef = React.createRef();\n _this.headerWrap = null;\n _this.table = null;\n _this.syncScroll = false;\n _this.scrollbarWidth = getScrollbarWidth();\n _this.onScroll = function (_event) {\n if (_this.syncScroll) {\n _this.syncScroll = false;\n return;\n }\n if (!_this.headerWrap) {\n return;\n }\n var scrollLeft = _this.headerWrap.scrollLeft;\n var scrollableDataElement = _this.props.scrollableDataElement();\n if (scrollableDataElement && scrollableDataElement.scrollLeft !== scrollLeft) {\n scrollableDataElement.scrollLeft = scrollLeft;\n }\n };\n return _this;\n }\n Object.defineProperty(Header.prototype, \"element\", {\n get: function () {\n return this.elementRef.current;\n },\n enumerable: true,\n configurable: true\n });\n Header.prototype.componentDidMount = function () {\n var rtl = isRtl(this.element);\n if (this.props.columnResize) {\n this.props.columnResize.setIsRtl(rtl);\n }\n this.forceUpdate();\n };\n /**\n *\n * @param scrollLeft - Scrolls to the left (in pixels).\n */\n Header.prototype.setScrollLeft = function (scrollLeft) {\n if (this.headerWrap && this.headerWrap.scrollLeft !== scrollLeft) {\n this.syncScroll = true;\n this.headerWrap.scrollLeft = scrollLeft;\n }\n };\n /**\n *\n * @param width - Scrolls the width (in pixels).\n */\n Header.prototype.setWidth = function (width) {\n if (this.table) {\n this.table.style.width = width + 'px';\n }\n };\n Header.prototype.render = function () {\n var _this = this;\n if (!this.props.staticHeaders) {\n return (React.createElement(\"thead\", __assign({ role: \"presentation\", className: classNames('k-grid-header', { 'k-grid-draggable-header': this.props.draggable }) }, tableKeyboardNavigationHeaderAttributes),\n this.props.headerRow,\n this.props.filterRow));\n }\n return (React.createElement(\"div\", { ref: this.elementRef, className: classNames('k-grid-header', { 'k-grid-draggable-header': this.props.draggable }), role: \"presentation\" },\n React.createElement(\"div\", { ref: function (div) { _this.headerWrap = div; }, className: \"k-grid-header-wrap\", style: this.scrollbarWidth ? {} : { borderWidth: 0 }, onScroll: this.onScroll, role: \"presentation\" },\n React.createElement(\"table\", { ref: function (table) { _this.table = table; }, role: \"presentation\" },\n React.createElement(\"colgroup\", { ref: function (e) { _this.props.columnResize.colGroupHeader = e; }, role: \"presentation\" }, this.props.cols),\n React.createElement(\"thead\", __assign({ role: \"presentation\" }, tableKeyboardNavigationHeaderAttributes),\n this.props.headerRow,\n this.props.filterRow)))));\n };\n return Header;\n}(React.Component));\nexport { Header };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnResizer = /** @class */ (function (_super) {\n __extends(ColumnResizer, _super);\n function ColumnResizer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n _this.isDragged = true;\n var element = _this.draggable && _this.draggable.element;\n if (element) {\n _this.props.resize(data.event, element, false);\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n if (!_this.isDragged) {\n return;\n }\n var element = _this.draggable && _this.draggable.element;\n if (element) {\n _this.props.resize(data.event, element, true);\n }\n _this.isDragged = false;\n };\n /**\n * @hidden\n */\n _this.onDoubleClick = function (event) {\n if (_this.isDragged) {\n return;\n }\n var element = _this.draggable && _this.draggable.element;\n if (element) {\n _this.props.autofit(event, element);\n }\n };\n return _this;\n }\n ColumnResizer.prototype.render = function () {\n var _this = this;\n return (React.createElement(Draggable, { onPress: function (e) { e.event.originalEvent.stopPropagation(); }, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"span\", { className: \"k-column-resizer\", style: { touchAction: 'none' }, draggable: false, onDoubleClick: this.onDoubleClick })));\n };\n return ColumnResizer;\n}(React.Component));\nexport { ColumnResizer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnDraggable = /** @class */ (function (_super) {\n __extends(ColumnDraggable, _super);\n function ColumnDraggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.onPress = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.pressHandler) {\n _this.props.pressHandler(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.dragHandler) {\n _this.props.dragHandler(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.releaseHandler) {\n _this.props.releaseHandler(data.event);\n }\n };\n return _this;\n }\n ColumnDraggable.prototype.render = function () {\n var _this = this;\n return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, hint: this.props.dragClue, autoScroll: { boundaryElementRef: this.props.headerRef, direction: { horizontal: true, vertical: false } }, scrollContainer: this.props.containerRef || undefined, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"tr\", { style: { touchAction: 'none' }, role: \"row\", \"aria-rowindex\": this.props.ariaRowIndex }, this.props.children)));\n };\n return ColumnDraggable;\n}(React.PureComponent));\nexport { ColumnDraggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\n/**\n * The GridColumnMenuWrapper component.\n */\nvar GridColumnMenuWrapper = /** @class */ (function (_super) {\n __extends(GridColumnMenuWrapper, _super);\n function GridColumnMenuWrapper() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @hidden */\n _this.state = {\n show: false\n };\n /** @hidden */\n _this.blurTimeout = undefined;\n /** @hidden */\n _this.blur = function () {\n clearTimeout(_this.blurTimeout);\n _this.blurTimeout = window.setTimeout(function () { _this.closeMenu(); });\n };\n /** @hidden */\n _this.focus = function () {\n clearTimeout(_this.blurTimeout);\n };\n /** @hidden */\n _this.anchorClick = function () {\n _this.setState({ show: !_this.state.show }, function () { return _this.state.show && _this._content && _this._content.focus(); });\n };\n /** @hidden */\n _this.closeMenu = function () {\n _this.setState({ show: false });\n };\n return _this;\n }\n GridColumnMenuWrapper.prototype.render = function () {\n var _this = this;\n var _a = this.props, ColumnMenu = _a.columnMenu, others = __rest(_a, [\"columnMenu\"]);\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: 'k-grid-column-menu k-grid-filter', ref: function (e) { return _this._anchor = e; }, onClick: this.anchorClick },\n React.createElement(\"span\", { className: 'k-icon k-i-more-vertical' })),\n React.createElement(Popup, { anchor: this._anchor, show: this.state.show },\n React.createElement(\"div\", { ref: function (e) { return _this._content = e; }, className: 'k-grid-columnmenu-popup', tabIndex: 0, onBlur: this.blur, onFocus: this.focus, style: { outline: 'none' } }, ColumnMenu && (React.createElement(ColumnMenu, __assign({}, others, { onCloseMenu: this.closeMenu })))))));\n };\n return GridColumnMenuWrapper;\n}(React.Component));\nexport { GridColumnMenuWrapper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { GridColumnMenuWrapper } from '../columnMenu/GridColumnMenuWrapper';\n/**\n * @example\n * ```jsx\n * class App extends React.PureComponent {\n * state = {\n * details: false,\n * data: [\n * { foo: 'A1', bar: 'B1', b1: 1, b2:2 },\n * { foo: 'A2', bar: 'B2', b1: 3, b2:4 },\n * { foo: 'A3', bar: 'B2', b1: 5, b2:6 }\n * ]\n * };\n *\n * CustomHeaderCell = (props) =>\n * <span>\n * {props.title || props.field + ' '}\n * <button onClick={() => this.setState({ barDetails: !this.state.barDetails })}>\n * {this.state.barDetails ? 'collapse' : 'expand'}\n * </button>\n * {props.children}\n * </span>\n *\n * render() {\n * return (\n * <Grid\n * style={{ height: '420px' }}\n * data={this.state.data}\n * reorderable={true}\n * >\n * <GridColumn field=\"foo\" />\n * <GridColumn field=\"bar\" headerCell={this.CustomHeaderCell}>\n * {this.state.barDetails && [\n * <GridColumn field=\"b1\" />,\n * <GridColumn field=\"b2\" />\n * ]}\n * </GridColumn>\n * </Grid>\n * );\n * }\n * }\n *\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar GridHeaderCell = /** @class */ (function (_super) {\n __extends(GridHeaderCell, _super);\n function GridHeaderCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridHeaderCell.prototype.render = function () {\n var columnMenuWrapperProps = this.props.columnMenuWrapperProps;\n var clickProps = this.props.onClick ? {\n onClick: this.props.onClick\n } : {};\n var defaultRendering = (React.createElement(\"span\", { className: 'k-cell-inner' },\n React.createElement(\"span\", __assign({ className: 'k-link' }, clickProps),\n React.createElement(\"span\", { className: 'k-column-title' }, this.props.title || this.props.field || '\\u00A0'),\n this.props.children),\n columnMenuWrapperProps.columnMenu && React.createElement(GridColumnMenuWrapper, __assign({}, columnMenuWrapperProps))));\n if (this.props.render) {\n return this.props.render.call(undefined, defaultRendering, this.props);\n }\n return defaultRendering;\n };\n return GridHeaderCell;\n}(React.Component));\nexport { GridHeaderCell };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useTableKeyboardNavigation } from '../navigation/hooks';\n/**\n * @hidden\n */\nexport var HeaderThElement = function (props) {\n var ariaSort = props.ariaSort, colSpan = props.colSpan, rowSpan = props.rowSpan, className = props.className, style = props.style, columnId = props.columnId, onKeyDown = props.onKeyDown, navigatable = props.navigatable, ariaColumnIndex = props.ariaColumnIndex, ariaLabel = props.ariaLabel, role = props.role, ariaSelected = props.ariaSelected;\n var navigationAttributes = useTableKeyboardNavigation(columnId, navigatable);\n return (React.createElement(\"th\", __assign({ \"aria-sort\": ariaSort, \"aria-label\": ariaLabel, \"aria-colindex\": ariaColumnIndex, \"aria-selected\": ariaSelected, \n // TODO: Enable this with React 18. Currently throws warnings\n // aria-description={ariaDescription}\n colSpan: colSpan, rowSpan: rowSpan, className: className, style: style, onKeyDown: onKeyDown, role: role }, navigationAttributes), props.children));\n};\nHeaderThElement.displayName = 'KendoReactHeaderThElement';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { normalize } from '../interfaces/GridSortSettings';\nimport { ColumnResizer } from '../drag/ColumnResizer';\nimport { ColumnDraggable } from '../drag/ColumnDraggable';\nimport { GridHeaderCell } from './GridHeaderCell';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { HeaderThElement } from '@progress/kendo-react-data-tools';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, sortAriaLabel } from '../messages';\n/**\n * @hidden\n */\nvar sortSeqMap = {\n true: { 'asc': 'desc', 'desc': '', '': 'asc' },\n false: { 'asc': 'desc', 'desc': 'asc', '': 'asc' }\n};\n/**\n * @hidden\n */\nvar ariaSortMap = {\n 'none': 'none',\n 'asc': 'ascending',\n 'desc': 'descending'\n};\n/**\n * @hidden\n */\nvar HeaderRow = /** @class */ (function (_super) {\n __extends(HeaderRow, _super);\n function HeaderRow(props) {\n var _this = _super.call(this, props) || this;\n _this.serviceIndex = 0;\n _this.index = -1;\n _this.cellKeyDown = function (event, column) {\n if (event.isDefaultPrevented()) {\n return;\n }\n if (event.keyCode === Keys.enter) {\n _this.cellClick(event, column);\n }\n };\n _this.cells = function (rowIndexes) { return rowIndexes.map(function (columnIndex) {\n var column = _this.props.columns[columnIndex];\n var sortable = _this.props.sortable && column.sortable;\n var sortIndex = _this.props.sort ? _this.props.sort.findIndex(function (s) { return s.field === column.field; }) : -1;\n var sortDir = sortIndex >= 0 ? ((_this.props.sort)[sortIndex].dir || 'none') : 'none';\n var columnMenu = (column.columnMenu === null) ? null : (column.columnMenu || _this.props.columnMenu);\n var className = classNames({\n 'k-first': column.kFirst,\n 'k-filterable': Boolean(columnMenu),\n 'k-header': true,\n 'k-grid-header-sticky': column.locked,\n 'k-sorted': _this.props.sort && _this.props.sort.some(function (descriptor) { return descriptor.field === column.field; })\n }, column.headerClassName);\n var style = column.left !== undefined\n ? !_this.props.isRtl\n ? { left: column.left, right: column.right }\n : { left: column.right, right: column.left }\n : {};\n var sortLabel = intl(_this).toLanguageString(sortAriaLabel, messages[sortAriaLabel]);\n var ariaAttrs = column.isAccessible ? {\n ariaSort: ariaSortMap[sortDir],\n role: 'columnheader',\n ariaColumnIndex: column.ariaColumnIndex,\n ariaSelected: false,\n ariaDescription: sortable ? sortLabel : ''\n } : {\n 'role': 'presentation'\n };\n var columnMenuWrapperProps = {\n column: {\n field: column.field,\n filter: column.filter\n },\n sortable: sortable && _this.props.sortable,\n sort: _this.props.sort,\n onSortChange: _this.props.sortChange,\n filter: _this.props.filter,\n filterable: _this.props.filterable && column.filterable,\n filterOperators: _this.props.filterOperators,\n onFilterChange: _this.props.filterChange,\n group: _this.props.group,\n groupable: _this.props.groupable,\n onGroupChange: _this.props.groupChange,\n columnMenu: columnMenu\n };\n var headerCellProps = {\n field: column.field,\n onClick: sortable && (function (e) { return _this.cellClick(e, column); }) || undefined,\n selectionChange: _this.props.selectionChange,\n title: column.title,\n selectionValue: column.headerSelectionValue,\n render: _this.props.cellRender,\n children: _this.sortIcon(sortIndex),\n columnMenuWrapperProps: columnMenuWrapperProps\n };\n var key = (column.declarationIndex >= 0) ? ++_this.index : --_this.serviceIndex;\n return (React.createElement(HeaderThElement, __assign({}, ariaAttrs, { key: key, colSpan: column.colSpan, rowSpan: column.rowSpan, className: className, style: style, columnId: column.id, navigatable: column.navigatable, onKeyDown: sortable && (function (e) { return _this.cellKeyDown(e, column); }) || undefined }),\n column.headerCell ? React.createElement(column.headerCell, __assign({}, headerCellProps)) : React.createElement(GridHeaderCell, __assign({}, headerCellProps)),\n _this.props.columnResize && _this.props.columnResize.resizable && column.resizable &&\n React.createElement(ColumnResizer, { key: 2, resize: function (e, element, end) {\n return _this.props.columnResize &&\n _this.props.columnResize.dragHandler(e, column, element, end);\n }, autofit: function (e) {\n return _this.props.columnResize &&\n _this.props.columnResize.dblClickHandler(e, [column.id]);\n } })));\n }); };\n _this.cellClick = _this.cellClick.bind(_this);\n return _this;\n }\n HeaderRow.prototype.cellClick = function (e, column) {\n e.preventDefault();\n if (!this.props.sortChange) {\n return;\n }\n var _a = normalize(this.props.sortable || false, column.sortable || false), allowUnsort = _a.allowUnsort, mode = _a.mode;\n var oldDescriptor = (this.props.sort || []).filter(function (d) { return d.field === column.field; })[0];\n var dir = sortSeqMap[allowUnsort][oldDescriptor && oldDescriptor.dir || ''];\n var newDescriptor = (mode === 'single') ?\n [] : (this.props.sort || []).filter(function (d) { return d.field !== column.field; });\n if (dir !== '' && column.field) {\n newDescriptor.push({ field: column.field, dir: dir });\n }\n this.props.sortChange(newDescriptor, e);\n };\n HeaderRow.prototype.sortIcon = function (sortIndex) {\n if (!this.props.sort) {\n return null;\n }\n return sortIndex >= 0 && [\n React.createElement(\"span\", { key: 1, className: 'k-icon k-i-sort-' + this.props.sort[sortIndex].dir + '-sm' }),\n this.props.sort.length > 1 && React.createElement(\"span\", { key: 2, className: \"k-sort-order\" }, sortIndex + 1)\n ];\n };\n HeaderRow.prototype.render = function () {\n var _this = this;\n this.serviceIndex = 0;\n this.index = -1;\n return this.props.columnsMap.map(function (rowIndexes, i) {\n return _this.props.pressHandler && (React.createElement(ColumnDraggable, { key: i, pressHandler: _this.props.pressHandler, dragHandler: _this.props.dragHandler, releaseHandler: _this.props.releaseHandler, ariaRowIndex: i + 1, dragClue: _this.props.dragClue, headerRef: _this.props.headerRef, containerRef: _this.props.containerRef }, _this.cells(rowIndexes))) || React.createElement(\"tr\", { role: \"row\", \"aria-rowindex\": i + 1 }, _this.cells(rowIndexes));\n });\n };\n return HeaderRow;\n}(React.Component));\nexport { HeaderRow };\nregisterForLocalization(HeaderRow);\n","/**\n * @hidden\n */\nexport var normalize = function () {\n var settings = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n settings[_i] = arguments[_i];\n }\n return Object.assign.apply(Object, [{ allowUnsort: true, mode: 'single' }].concat(settings));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { messages, filterClearButton, filterChooseOperator } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { cellBoolDropdownChange, cellInputChange, cellOperatorChange } from '../filterCommon';\nvar GridFilterCell = /** @class */ (function (_super) {\n __extends(GridFilterCell, _super);\n function GridFilterCell(props) {\n var _this = _super.call(this, props) || this;\n _this.renderOperatorEditor = function (localization) {\n if (_this.props.filterType === 'boolean') {\n return;\n }\n var value = _this.props.operators.find(function (item) { return item.operator === _this.props.operator; }) || null;\n return (React.createElement(DropDownList, { value: value, onChange: _this.operatorChange, className: \"k-dropdown-operator\", iconClassName: \"k-i-filter k-icon\", data: _this.props.operators, textField: \"text\", title: localization.toLanguageString(filterChooseOperator, messages[filterChooseOperator]), popupSettings: {\n width: ''\n } }));\n };\n _this.inputChange = _this.inputChange.bind(_this);\n _this.clear = _this.clear.bind(_this);\n _this.operatorChange = _this.operatorChange.bind(_this);\n _this.boolDropdownChange = _this.boolDropdownChange.bind(_this);\n return _this;\n }\n /**\n * @hidden\n */\n GridFilterCell.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var defaultRendering = (React.createElement(\"div\", { className: \"k-filtercell\" },\n React.createElement(\"div\", { className: \"k-filtercell-wrapper\" },\n this.filterComponent(this.props.filterType, this.props.value, this.props.booleanValues),\n React.createElement(\"div\", { className: \"k-filtercell-operator\" },\n this.renderOperatorEditor(localizationService),\n React.createElement(\"button\", { className: \n /* button is always visible if there is either value or operator */\n (!(this.props.value === null || this.props.value === '') || this.props.operator) ?\n 'k-button k-button-icon k-clear-button-visible' :\n 'k-button k-button-icon', title: localizationService.toLanguageString(filterClearButton, messages[filterClearButton]), type: \"button\", onClick: this.clear },\n React.createElement(\"span\", { className: \"k-icon k-i-filter-clear\" }))))));\n if (this.props.render) {\n return this.props.render.call(undefined, defaultRendering, this.props);\n }\n return defaultRendering;\n };\n GridFilterCell.prototype.inputChange = function (value, e) {\n cellInputChange(value, e, this.props);\n };\n GridFilterCell.prototype.operatorChange = function (event) {\n cellOperatorChange(event, this.props.value, this.props.onChange);\n };\n GridFilterCell.prototype.boolDropdownChange = function (event) {\n cellBoolDropdownChange(event, this.props.onChange);\n };\n GridFilterCell.prototype.clear = function (e) {\n e.preventDefault();\n this.props.onChange({ value: '', operator: '', syntheticEvent: e });\n };\n GridFilterCell.prototype.filterComponent = function (filterType, value, booleanValues) {\n var _this = this;\n switch (filterType) {\n case 'numeric':\n return (React.createElement(NumericTextBox, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); }, title: this.props.title }));\n case 'date':\n return (React.createElement(DatePicker, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); }, title: this.props.title }));\n case 'boolean':\n var noFilterSet_1 = function (filter) { return filter === null || filter === undefined; };\n return (React.createElement(DropDownList, { onChange: this.boolDropdownChange, value: booleanValues.find(function (item) { return item.operator === (noFilterSet_1(value) ? '' : value); }), data: booleanValues, textField: \"text\", title: this.props.title }));\n default: return (React.createElement(\"input\", { className: \"k-textbox\", value: value || '', onChange: function (e) { _this.inputChange(e.target.value, e); }, title: this.props.title }));\n }\n };\n return GridFilterCell;\n}(React.Component));\nexport { GridFilterCell };\nregisterForLocalization(GridFilterCell);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { GridFilterCell } from '../cells/GridFilterCell';\nimport { operatorMap, booleanFilterValues, getFilterType } from '../filterCommon';\nimport { tableKeyboardNavigationTools as navigationTools, HeaderThElement } from '@progress/kendo-react-data-tools';\nimport { filterAriaLabel, messages } from '../messages';\n/**\n * @hidden\n */\nexport var FILTER_ROW_CLASS = 'k-filter-row';\n/**\n *\n * @hidden\n */\nvar FilterRow = /** @class */ (function (_super) {\n __extends(FilterRow, _super);\n function FilterRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterRow.prototype.headerCellClassName = function (field, locked) {\n var result = \"\" + (locked ? 'k-grid-header-sticky' : '');\n if (this.props.sort &&\n this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0) {\n result += ' k-sorted';\n }\n return result;\n };\n FilterRow.prototype.setFilter = function (value, operator, field, e) {\n if (!this.props.filterChange) {\n return;\n }\n var filters = [];\n if (value !== '' && value !== null || operator !== '') {\n filters.push({\n field: field,\n operator: operator,\n value: value\n });\n }\n if (this.props.filter && this.props.filter.filters) {\n var oldFilters = this.props.filter.filters || [];\n oldFilters.forEach(function (filter) {\n var descriptor = filter;\n if (descriptor && descriptor.field !== field) {\n filters.push(descriptor);\n }\n });\n }\n var logic = this.props.filter && this.props.filter.logic ? this.props.filter.logic : 'and';\n this.props.filterChange(filters.length > 0 ? { logic: logic, filters: filters } : null, e);\n };\n FilterRow.prototype.render = function () {\n var _this = this;\n var intl = provideLocalizationService(this);\n var oldFilters = this.props.filter && this.props.filter.filters || [];\n var activeFilter = function (field) {\n if (field === undefined) {\n return;\n }\n var currentFilters = oldFilters.filter(function (filter) { return filter.field === field; });\n return currentFilters.length ? currentFilters[0] : undefined;\n };\n var serviceIndex = 0, index = -1;\n var filterCells = this.props.columns.filter(function (c) { return c.children.length === 0; })\n .map(function (column) {\n var filterType = getFilterType(column.filter);\n var currentActiveFilter = activeFilter(column.field);\n var filterCellProps = column.filterable && {\n render: _this.props.cellRender,\n field: column.field,\n title: column.filterTitle,\n value: currentActiveFilter ? currentActiveFilter.value : filterType === 'text' ? '' : null,\n operator: currentActiveFilter && currentActiveFilter.operator,\n operators: operatorMap(_this.props.filterOperators[filterType] || [], intl),\n booleanValues: operatorMap(booleanFilterValues, intl),\n filterType: filterType,\n onChange: function (e) { _this.setFilter(e.value, e.operator, column.field, e.syntheticEvent); }\n };\n var key = (column.declarationIndex >= 0) ? ++index : --serviceIndex;\n var ariaAttrs = {\n ariaLabel: column.filterable ? intl.toLanguageString(filterAriaLabel, messages[filterAriaLabel]) : undefined,\n ariaColumnIndex: column.ariaColumnIndex\n };\n var style = column.left !== undefined\n ? !_this.props.isRtl\n ? { left: column.left, right: column.right }\n : { left: column.right, right: column.left }\n : {};\n return (React.createElement(HeaderThElement, __assign({ key: key, columnId: navigationTools.getFilterColumnId(column.id), navigatable: column.navigatable, style: style, className: _this.headerCellClassName(column.field, column.locked) || undefined }, ariaAttrs), filterCellProps && (column.filterCell ?\n React.createElement(column.filterCell, __assign({}, filterCellProps)) :\n React.createElement(GridFilterCell, __assign({}, filterCellProps)))));\n });\n return React.createElement(\"tr\", { className: FILTER_ROW_CLASS, \"aria-rowindex\": this.props.ariaRowIndex, role: \"row\" }, filterCells);\n };\n return FilterRow;\n}(React.Component));\nexport { FilterRow };\nregisterForLocalization(FilterRow);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar GroupingIndicator = /** @class */ (function (_super) {\n __extends(GroupingIndicator, _super);\n function GroupingIndicator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.onPress = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.onPress) {\n _this.props.onPress(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.onDrag) {\n _this.props.onDrag(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.onRelease) {\n _this.props.onRelease(data.event);\n }\n };\n _this.sortChange = function (event) {\n event.preventDefault();\n if (_this.props.onSortChange) {\n var sort = (_this.props.dir === 'asc') ? 'desc' : 'asc';\n _this.props.onSortChange(event, sort);\n }\n };\n _this.groupRemove = function (event) {\n event.preventDefault();\n if (_this.props.onRemove) {\n _this.props.onRemove(event);\n }\n };\n return _this;\n }\n GroupingIndicator.prototype.render = function () {\n var _this = this;\n return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"div\", { className: \"k-indicator-container\", style: { touchAction: 'none' } },\n React.createElement(\"div\", { className: \"k-group-indicator\" },\n React.createElement(\"a\", { className: \"k-link\", href: \"#\", tabIndex: -1, onClick: this.sortChange },\n React.createElement(\"span\", { className: 'k-icon k-i-sort-' + this.props.dir + '-sm' }),\n this.props.title),\n React.createElement(\"a\", { className: \"k-button k-button-icon k-flat\", tabIndex: -1, onClick: this.groupRemove },\n React.createElement(\"span\", { className: \"k-icon k-i-group-delete\" }))))));\n };\n return GroupingIndicator;\n}(React.Component));\nexport { GroupingIndicator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { GroupingIndicator } from '../drag/GroupingIndicator';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, groupPanelEmpty as messageKey } from './../messages';\n/**\n * @hidden\n */\nvar GroupPanel = /** @class */ (function (_super) {\n __extends(GroupPanel, _super);\n function GroupPanel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onGroupRemove = function (event, index) {\n var newGroups = _this.props.group.slice();\n newGroups.splice(index, 1);\n _this.props.groupChange(newGroups, event);\n };\n _this.onGroupSortChange = function (event, index, groupDesc, dir) {\n var group = Object.assign({}, groupDesc, { dir: dir });\n var newGroups = _this.props.group.slice();\n newGroups.splice(index, 1, group);\n _this.props.groupChange(newGroups, event);\n };\n return _this;\n }\n GroupPanel.prototype.render = function () {\n var _this = this;\n var groupsProp = this.props.group || [];\n var groups = groupsProp.map(function (groupDesc, index) { return (React.createElement(GroupingIndicator, { key: index, dir: groupDesc.dir || 'asc', title: _this.props.resolveTitle(groupDesc.field), onRemove: function (event) {\n _this.onGroupRemove(event, index);\n }, onSortChange: function (event, dir) {\n _this.onGroupSortChange(event, index, groupDesc, dir);\n }, onPress: _this.props.pressHandler, onDrag: _this.props.dragHandler, onRelease: _this.props.releaseHandler })); });\n return (React.createElement(\"div\", { ref: this.props.refCallback, className: \"k-grouping-header k-grouping-header-flex\" },\n groups,\n React.createElement(\"div\", { className: \"k-indicator-container\" },\n !groups.length && intl(this).toLanguageString(messageKey, messages[messageKey]),\n \"\\u00A0\")));\n };\n return GroupPanel;\n}(React.Component));\nexport { GroupPanel };\nregisterForLocalization(GroupPanel);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { getScrollbarWidth } from '@progress/kendo-react-common';\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar Footer = /** @class */ (function (_super) {\n __extends(Footer, _super);\n function Footer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.footerWrap = null;\n _this.table = null;\n _this.scrollbarWidth = getScrollbarWidth();\n return _this;\n }\n Footer.prototype.componentDidMount = function () {\n this.setState({});\n };\n /**\n *\n * @param scrollLeft - Scrolls to the left (in pixels).\n */\n Footer.prototype.setScrollLeft = function (scrollLeft) {\n if (this.footerWrap) {\n this.footerWrap.scrollLeft = scrollLeft;\n }\n };\n /**\n *\n * @param width - Scrolls the width (in pixels).\n */\n Footer.prototype.setWidth = function (width) {\n if (this.table) {\n this.table.style.width = width + 'px';\n }\n };\n Footer.prototype.render = function () {\n var _this = this;\n if (!this.props.staticHeaders) {\n return (React.createElement(\"tfoot\", { className: \"k-grid-footer\" }, this.props.row));\n }\n return (React.createElement(\"div\", { className: \"k-grid-footer\", role: \"presentation\" },\n React.createElement(\"div\", { ref: function (div) { _this.footerWrap = div; }, className: \"k-grid-footer-wrap\", style: this.scrollbarWidth ? {} : { borderWidth: 0 }, role: \"presentation\" },\n React.createElement(\"table\", { ref: function (table) { _this.table = table; }, role: \"presentation\" },\n React.createElement(\"colgroup\", { ref: function (e) { _this.props.columnResize.colGroupFooter = e; }, role: \"presentation\" }, this.props.cols),\n React.createElement(\"tfoot\", { role: \"presentation\" }, this.props.row)))));\n };\n return Footer;\n}(React.Component));\nexport { Footer };\n","import * as React from 'react';\n/**\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(cached) {\n this.containerHeight = 0;\n this.topCacheCount = 0; // 4;\n this.attendedSkip = 0; // -4;\n this.propsSkip = 0;\n this.total = 0;\n this.scrollableVirtual = false;\n this.realSkip = 0;\n this.pageSize = 0;\n this.heightContainer = null;\n this.fixedScroll = false;\n this.askedSkip = undefined;\n this.containerRef = React.createRef();\n this.prevScrollPos = 0;\n this.tableTranslate = 0;\n this.scrollSyncing = false;\n if (cached) {\n this.topCacheCount = 4;\n this.attendedSkip = -this.topCacheCount;\n }\n this.scrollHandler = this.scrollHandler.bind(this);\n }\n Object.defineProperty(VirtualScroll.prototype, \"container\", {\n get: function () {\n return this.containerRef.current;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(VirtualScroll.prototype, \"rowHeights\", {\n /**\n * @return - The row heights in an array.\n */\n get: function () {\n var result = [];\n var allRows = this.tableBody && this.tableBody.children || [];\n var accumulate = 0;\n for (var i = 0; i < allRows.length; i++) {\n if (allRows[i].className.indexOf('k-grouping-row') > -1) {\n accumulate += allRows[i].scrollHeight;\n continue;\n }\n if (allRows[i].className.indexOf('k-detail-row') > -1) {\n result[result.length - 1].line += allRows[i].scrollHeight;\n }\n else {\n result.push({\n line: allRows[i].scrollHeight,\n acc: accumulate\n });\n accumulate = 0;\n }\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n VirtualScroll.prototype.changePage = function (skip, e) {\n this.attendedSkip = skip - this.topCacheCount;\n this.PageChange({\n skip: Math.max(0, skip - this.topCacheCount),\n take: this.pageSize\n }, e);\n };\n VirtualScroll.prototype.translate = function (dY) {\n this.tableTranslate = dY;\n if (this.scrollableVirtual && this.table) {\n this.table.style.transform = 'translateY(' + dY + 'px)';\n }\n };\n VirtualScroll.prototype.syncScroll = function () {\n if (!this.scrollableVirtual || !this.container) {\n return;\n }\n this.syncTimeout = null;\n var scrollTop = this.container.scrollTop;\n var containerHeight = this.containerHeight; // = this.container.scrollHeight;\n var rowHeights = this.rowHeights;\n var percentage = (scrollTop - this.tableTranslate) / rowHeights[0].line;\n var targetFloorScrollPosition = Math.floor((containerHeight) * (this.propsSkip + percentage) / this.total);\n if (this.container.scrollTop !== (this.prevScrollPos = targetFloorScrollPosition)) {\n this.scrollSyncing = true;\n this.container.scrollTop = (this.prevScrollPos = targetFloorScrollPosition);\n }\n this.translate(this.tableTranslate + targetFloorScrollPosition - scrollTop);\n };\n VirtualScroll.prototype.reset = function () {\n this.scrollSyncing = true;\n if (this.fixedScroll) {\n return;\n }\n if (this.container) {\n this.container.scrollTop = 0;\n }\n this.translate(0);\n };\n VirtualScroll.prototype.localScrollUp = function (e) {\n if (!this.container) {\n return;\n }\n var heights = this.rowHeights;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.tableTranslate;\n var rowsCount = 0;\n var additionalOnTop = scrollTop - targetTranslate;\n if (additionalOnTop > 0) {\n return;\n }\n while ((rowsCount < this.topCacheCount + this.attendedSkip - this.realSkip)\n && this.propsSkip - rowsCount > 0 &&\n !(targetTranslate + (heights[heights.length - 1 - rowsCount].line + heights[heights.length - 1 - rowsCount].acc) + additionalOnTop <= scrollTop)) {\n targetTranslate -= heights[heights.length - 1 - rowsCount].line +\n heights[heights.length - 1 - rowsCount].acc;\n rowsCount++;\n }\n if (rowsCount === 0 && this.topCacheCount === 0 && this.attendedSkip > 0) {\n // allows local scrolling up, when top caching is disabled\n // for variable heights 'topCacheCount' should be atleast 1 to avoid flickering\n targetTranslate = Math.max(targetTranslate - heights[0].line, 0);\n rowsCount = 1;\n }\n if (this.propsSkip - rowsCount <= 0 && targetTranslate > scrollTop) {\n this.translate(0);\n this.changePage(0, e);\n this.container.scrollTop = 0;\n return;\n }\n if (targetTranslate > scrollTop) {\n targetTranslate = scrollTop;\n // need to handle these cases\n // if the item height is not available:\n // floor the translate to beginning of the item in absolute value\n }\n if (targetTranslate !== this.tableTranslate) {\n this.translate(targetTranslate);\n this.changePage(this.propsSkip - rowsCount, e);\n }\n };\n VirtualScroll.prototype.localScrollDown = function (e) {\n if (!this.container) {\n return;\n }\n var heights = this.rowHeights;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.tableTranslate;\n var rowsCount = 0;\n while (rowsCount < heights.length - this.topCacheCount &&\n !(targetTranslate + heights[rowsCount].line + heights[rowsCount].acc > scrollTop)) {\n targetTranslate += heights[rowsCount].line + heights[rowsCount].acc;\n rowsCount++;\n }\n if (rowsCount >= heights.length - this.topCacheCount && this.propsSkip + rowsCount >= this.total) {\n this.translate(targetTranslate);\n this.changePage(this.total - 1, e);\n }\n else if (targetTranslate !== this.tableTranslate) {\n this.translate(targetTranslate);\n this.changePage(this.propsSkip + rowsCount, e);\n }\n };\n VirtualScroll.prototype.scrollNonStrict = function (e) {\n var floatRowIndex = this.total * this.prevScrollPos / (this.containerHeight);\n var rowIndex = Math.floor(floatRowIndex);\n if (rowIndex >= this.total) {\n rowIndex = this.total - 1;\n }\n var rowpercentage = Math.min(floatRowIndex - rowIndex, 1);\n var microAdjust = 0;\n var rowIndexOffset = rowIndex - this.propsSkip;\n var heights = this.rowHeights;\n if (rowIndexOffset >= 0 && rowIndexOffset <= 1) {\n microAdjust = -((heights[0].line + heights[0].acc) * rowpercentage);\n }\n else if (rowIndexOffset === -1) {\n microAdjust = -((heights[heights.length - 1].line + heights[heights.length - 1].acc) * rowpercentage);\n }\n this.translate(microAdjust + this.containerHeight * floatRowIndex / this.total);\n this.changePage(rowIndex, e);\n };\n VirtualScroll.prototype.scrollHandler = function (e) {\n if (!this.scrollableVirtual) {\n return;\n }\n if (this.scrollSyncing || !this.container || !this.table) {\n this.scrollSyncing = false;\n return;\n }\n var grid = this;\n clearTimeout(this.syncTimeout);\n this.syncTimeout = window.setTimeout(function () { grid.syncScroll(); }, 200);\n var scrollTop = this.container.scrollTop;\n var prev = this.prevScrollPos;\n this.prevScrollPos = scrollTop;\n if (this.askedSkip !== undefined) {\n this.translate(this.containerHeight * this.askedSkip / this.total);\n this.changePage(this.askedSkip, e);\n this.prevScrollPos = scrollTop;\n this.askedSkip = undefined;\n return;\n }\n if (scrollTop - prev < 0 && scrollTop > this.tableTranslate - this.table.scrollHeight / 10) {\n this.localScrollUp(e);\n }\n else if (scrollTop - prev > 0 && scrollTop < this.tableTranslate + this.table.scrollHeight * 2 / 3) {\n this.localScrollDown(e);\n }\n else {\n this.scrollNonStrict(e);\n }\n this.prevScrollPos = scrollTop;\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","// offsetWidth() is slowly transition to reporting double instead of integet in all browsers\n// during this process (which is a bit back-and-forth) we need to make sure we are working across all browsers and versions\nvar OFFSET_ROUND = 1;\n/**\n * @hidden\n */\nvar ColumnResize = /** @class */ (function () {\n function ColumnResize(triggerResize) {\n var _this = this;\n /**\n * The settings for resizing the Grid.\n */\n this.resizable = false;\n this.isRtl = false;\n this.setIsRtl = function (isRtl) {\n _this.isRtl = isRtl;\n };\n this.dragHandler = function (event, column, dragCue, end) {\n var e = event.originalEvent;\n if (!end) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n var tdElement = dragCue.parentElement;\n if (!tdElement || !tdElement.parentElement) {\n return;\n }\n var oldWidth = tdElement.clientWidth;\n var newWidth = oldWidth;\n if (_this.isRtl) {\n newWidth += (dragCue.getBoundingClientRect().right - (dragCue.offsetWidth / 2)) - event.clientX;\n }\n else {\n newWidth += event.clientX - dragCue.getBoundingClientRect().left - (dragCue.offsetWidth / 2);\n }\n if (!end && Math.abs(newWidth - oldWidth) < 1) {\n return;\n }\n _this.fixateInitialWidths(tdElement.parentElement.clientWidth);\n _this.setWidths(column, Math.floor(newWidth) / oldWidth);\n var index = _this.columns.filter(function (c) { return !c.children.length; }).findIndex(function (c) { return c.id === column.id; });\n _this.onResize(index, oldWidth, newWidth, e, end, column.id);\n };\n this.dblClickHandler = function (event, columnIds) {\n var columns = _this.columns.filter(function (c) { return columnIds.indexOf(c.id) > -1; });\n if (!_this.colGroupMain || !columns.length) {\n return;\n }\n var leafsForAdjust = {};\n var stack = columns;\n while (stack.length > 0) {\n var currentCol = stack.pop();\n if (!currentCol) {\n break;\n }\n if (currentCol.children.length) {\n stack.push.apply(stack, currentCol.children);\n }\n else {\n leafsForAdjust[currentCol.id] = currentCol;\n }\n }\n var leafs = _this.columns.filter(function (c) { return !c.children.length; });\n var indexesForAdjust = [];\n leafs.forEach(function (currentColumn, index) {\n if (leafsForAdjust[currentColumn.id]) {\n indexesForAdjust.push(index);\n }\n });\n var tables = [_this.colGroupMain.parentElement];\n var colgroups = [_this.colGroupMain];\n if (_this.colGroupHeader) {\n tables.push(_this.colGroupHeader.parentElement);\n colgroups.push(_this.colGroupHeader);\n }\n if (_this.colGroupFooter) {\n tables.push(_this.colGroupFooter.parentElement);\n colgroups.push(_this.colGroupFooter);\n }\n tables.forEach(function (table) { return table.classList.add('k-autofitting'); });\n var maxWidths = [];\n colgroups.forEach(function (colgroup) {\n indexesForAdjust.forEach(function (columnIndex) {\n if (colgroup.children[columnIndex]) {\n colgroup.children[columnIndex].width = '';\n maxWidths[columnIndex] = Math.max(maxWidths[columnIndex] || 0, colgroup.children[columnIndex].offsetWidth + OFFSET_ROUND);\n }\n });\n });\n colgroups.forEach(function (colgroup) {\n indexesForAdjust.forEach(function (columnIndex) {\n if (colgroup.children[columnIndex]) {\n colgroup.children[columnIndex].width = maxWidths[columnIndex] + 'px';\n leafs[columnIndex].width = maxWidths[columnIndex];\n }\n });\n });\n tables.forEach(function (table) { return table.classList.remove('k-autofitting'); });\n _this.onResize(indexesForAdjust[0], 0, 0, event, true, columnIds[0]);\n };\n this.updateColElements = function (affectedColumns) {\n var leafColumns = _this.columns.filter(function (c) { return !c.children.length; });\n var difference = 1e-10;\n var _loop_1 = function (i) {\n var currentColumn = affectedColumns[i];\n var colIndex = leafColumns.findIndex(function (c) { return c.id === currentColumn.id; });\n var currentColumnFloatWidth = parseFloat((currentColumn.width || 0).toString());\n var currentColumnFloorWidth = Math.floor(currentColumnFloatWidth);\n difference += currentColumnFloatWidth - currentColumnFloorWidth;\n var currentWidth = currentColumnFloorWidth + Math.floor(difference);\n difference -= Math.floor(difference);\n if (_this.colGroupMain && _this.colGroupMain.children[colIndex]) {\n _this.colGroupMain.children[colIndex].width = currentWidth + 'px';\n }\n if (_this.colGroupHeader && _this.colGroupHeader.children[colIndex]) {\n // static headers\n _this.colGroupHeader.children[colIndex].width = currentWidth + 'px';\n }\n if (_this.colGroupFooter && _this.colGroupFooter.children[colIndex]) {\n // static footers\n _this.colGroupFooter.children[colIndex].width = currentWidth + 'px';\n }\n };\n for (var i = 0; i < affectedColumns.length; i++) {\n _loop_1(i);\n }\n };\n this.onResize = triggerResize;\n }\n ColumnResize.prototype.fixateInitialWidths = function (width) {\n var columns = this.columns.filter(function (c) { return !c.children.length; });\n var remainingCount = 0;\n var cols = this.colGroupMain ? this.colGroupMain.children : [];\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].width) {\n width -= parseFloat(cols[i].width);\n }\n else {\n remainingCount++;\n }\n }\n if (remainingCount === 0) {\n return;\n }\n var perCol = Math.floor(width / remainingCount);\n for (var i = 0; i < cols.length; i++) {\n var col = cols[i];\n if (!col.width) {\n col.width = perCol;\n columns[i].width = perCol.toString();\n if (this.colGroupHeader) {\n this.colGroupHeader.children[i].width = perCol;\n }\n if (this.colGroupFooter) {\n this.colGroupFooter.children[i].width = perCol;\n }\n }\n }\n };\n ColumnResize.prototype.setWidths = function (column, coef) {\n var indexInOriginal = this.columns.findIndex(function (c) { return c.id === column.id; });\n var toAdjust = [];\n var more = column.children.length;\n for (var i = indexInOriginal + 1; more > 0 && i < this.columns.length; i++, more--) {\n var cc = this.columns[i];\n if (!cc.children.length) {\n toAdjust.push(cc);\n }\n else {\n more += cc.children.length;\n }\n }\n if (toAdjust.length === 0) {\n toAdjust.push(column);\n }\n toAdjust.forEach(function (colToAdjust) {\n var targetWidth = colToAdjust.width ? parseFloat(colToAdjust.width.toString()) * coef : 0;\n var min = colToAdjust.minResizableWidth === undefined ? 10 : colToAdjust.minResizableWidth;\n if (targetWidth < min) {\n targetWidth = min;\n }\n colToAdjust.width = targetWidth;\n });\n this.updateColElements(toAdjust);\n return toAdjust;\n };\n return ColumnResize;\n}());\nexport { ColumnResize };\n","import * as React from 'react';\nimport { getIndex } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nvar CommonDragLogic = /** @class */ (function () {\n function CommonDragLogic(columnReorder, groupReorder, columnToGroup) {\n var _this = this;\n this.refDragElementClue = React.createRef();\n this.refDropElementClue = React.createRef();\n this.reorderable = false;\n this.groupable = false;\n this.startColumn = -1;\n this.startGroup = -1;\n this.currentColumn = -1;\n this.currentGroup = -1;\n this.groupPanelDivElement = null;\n this.refGroupPanelDiv = function (e) {\n _this.groupPanelDivElement = e;\n };\n this.pressHandler = function (event, element) {\n var startColumn = _this.getColumnIndex(event, element);\n _this.startGroup = _this.getGroupIndex(event);\n if (startColumn >= 0) {\n var col = _this.columns[startColumn];\n if (col.reorderable && _this.reorderable || col.groupable && _this.groupable) {\n _this.startColumn = startColumn;\n }\n }\n };\n this.dragHandler = function (event, element) {\n if (!event.isTouch) {\n event.originalEvent.preventDefault();\n }\n event.originalEvent.stopPropagation();\n if (_this.startColumn === -1 && _this.startGroup === -1) {\n return;\n }\n _this.currentColumn = _this.getColumnIndex(event, element);\n _this.currentGroup = _this.getGroupIndex(event);\n if (_this.groupPanelDivElement && _this.startGroup >= 0) {\n _this.currentGroup = Math.min(_this.currentGroup, _this.groupPanelDivElement.children.length - 2);\n }\n var invalidIndex = !_this.isValid();\n if (invalidIndex) {\n _this.currentColumn = -1;\n _this.currentGroup = -1;\n }\n var targetElement = (_this.currentColumn >= 0) ?\n element.children[_this.columns[_this.currentColumn].index] :\n _this.groupPanelDivElement && _this.groupPanelDivElement.children[_this.currentGroup];\n _this.updateDragElementClue(event, element, targetElement, invalidIndex);\n _this.updateDropElementClue(event, element, targetElement, invalidIndex);\n };\n this.releaseHandler = function (event) {\n var prevColumnIndex = _this.startColumn;\n var nextColumnIndex = _this.currentColumn;\n var prevGroupIndex = _this.startGroup;\n var nextGroupIndex = _this.currentGroup;\n event.originalEvent.preventDefault();\n if (_this.dropElementClue) {\n _this.dropElementClue.setState({ visible: false });\n }\n if (_this.dragElementClue) {\n _this.dragElementClue.setState({ visible: false });\n }\n var isValid = _this.isValid();\n _this.startColumn = _this.startGroup = _this.currentColumn = _this.currentGroup = -1;\n if (!isValid) {\n return;\n }\n if (prevColumnIndex >= 0 && nextColumnIndex >= 0) {\n _this.columnReorder(prevColumnIndex, nextColumnIndex, event.originalEvent);\n }\n else if (prevGroupIndex >= 0 && nextGroupIndex >= 0) {\n _this.groupReorder(prevGroupIndex, nextGroupIndex, event.originalEvent);\n }\n else if (prevColumnIndex >= 0 && nextGroupIndex >= 0) {\n _this.columnToGroup(prevColumnIndex, nextGroupIndex, event.originalEvent);\n }\n };\n this.columnReorder = columnReorder;\n this.groupReorder = groupReorder;\n this.columnToGroup = columnToGroup;\n }\n Object.defineProperty(CommonDragLogic.prototype, \"dragClueRef\", {\n get: function () {\n return this.refDragElementClue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommonDragLogic.prototype, \"dropClueRef\", {\n get: function () {\n return this.refDropElementClue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommonDragLogic.prototype, \"dragElementClue\", {\n get: function () {\n return this.refDragElementClue.current;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CommonDragLogic.prototype, \"dropElementClue\", {\n get: function () {\n return this.refDropElementClue.current;\n },\n enumerable: true,\n configurable: true\n });\n CommonDragLogic.prototype.getColumnIndex = function (event, parent) {\n if (!parent || (parent.parentElement === this.groupPanelDivElement)) {\n return -1;\n }\n var index = getIndex(event, parent);\n if (index === -1) {\n return -1;\n }\n var _loop_1 = function (i) {\n if (parent.parentNode.children[i] === parent) {\n return { value: this_1.columns.findIndex(function (c) { return ((c.index === index) && (c.depth === i)); }) };\n }\n };\n var this_1 = this;\n for (var i = 0; i < parent.parentNode.children.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1;\n };\n CommonDragLogic.prototype.getGroupIndex = function (event) {\n return getIndex(event, this.groupPanelDivElement);\n };\n CommonDragLogic.prototype.isValid = function () {\n if (this.startGroup >= 0) {\n // group can be moved into group only\n return this.currentGroup >= 0 && this.currentGroup !== this.startGroup;\n }\n if (this.startColumn === -1) {\n return false;\n }\n if (this.currentGroup >= 0) {\n // column to group is possible\n return this.columns[this.startColumn].groupable === true && this.groupable === true;\n }\n // reorder is possible\n return this.reorderable === true &&\n this.currentColumn >= 0 &&\n this.currentColumn !== this.startColumn &&\n this.columns[this.startColumn].reorderable === true &&\n this.columns[this.currentColumn].parentIndex === this.columns[this.startColumn].parentIndex;\n };\n CommonDragLogic.prototype.updateDragElementClue = function (event, element, targetElement, invalidIndex) {\n if (!this.dragElementClue) {\n return;\n }\n var innerText = this.startColumn >= 0 ?\n element.children[this.columns[this.startColumn].index].innerText :\n element.innerText;\n this.dragElementClue.setState({\n visible: true,\n top: (event.pageY + 10),\n left: event.pageX,\n innerText: innerText,\n status: (invalidIndex || !targetElement) ? 'k-i-cancel' : 'k-i-add'\n });\n };\n CommonDragLogic.prototype.updateDropElementClue = function (event, element, targetElement, invalidIndex) {\n if (!this.dropElementClue) {\n return;\n }\n if (invalidIndex || !targetElement) {\n this.dropElementClue.setState({ visible: false });\n return;\n }\n var rect = targetElement.getBoundingClientRect();\n var left = rect.left + event.pageX - event.clientX - 6;\n if (this.currentColumn > this.startColumn || this.currentGroup > this.startGroup && this.startGroup !== -1) {\n left += rect.width;\n }\n var top = rect.top + event.pageY - event.clientY;\n this.dropElementClue.setState({\n visible: true,\n top: top,\n left: left,\n height: (this.currentColumn >= 0) ? element.clientHeight : rect.height\n });\n };\n return CommonDragLogic;\n}());\nexport { CommonDragLogic };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { useInternationalization } from '@progress/kendo-react-intl';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport { GRID_COL_INDEX_ATTRIBUTE } from '../constants';\nimport { classNames } from '@progress/kendo-react-common';\nexport var GridCell = function (props) {\n var _a;\n var defaultRendering = null;\n var intl = useInternationalization();\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n if (props.rowType === 'groupFooter') {\n defaultRendering = React.createElement(\"td\", { className: props.className });\n }\n else if (props.field !== undefined && props.rowType !== 'groupHeader') {\n var data = getNestedValue(props.field, props.dataItem);\n var dataAsString = '';\n if (data !== undefined && data !== null) {\n dataAsString = props.format ?\n intl.format(props.format, data) :\n data.toString();\n }\n var className = classNames(props.className, { 'k-state-selected': props.isSelected });\n defaultRendering = (React.createElement(\"td\", __assign({ colSpan: props.colSpan, style: props.style, className: className, role: 'gridcell', \"aria-colindex\": props.ariaColumnIndex, \"aria-selected\": props.isSelected }, (_a = {}, _a[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _a), navigationAttributes), dataAsString));\n }\n return props.render ?\n props.render.call(undefined, defaultRendering, props) :\n defaultRendering;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Keys } from '@progress/kendo-react-common';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport * as React from 'react';\n/**\n * @hidden\n */\nexport var GridGroupCell = function (props) {\n var defaultRendering = null;\n var columnIndex = props.columnIndex, level = props.level, columnsCount = props.columnsCount, rowType = props.rowType, dataItem = props.dataItem, field = props.field, onChange = props.onChange, expanded = props.expanded, render = props.render, dataIndex = props.dataIndex, ariaColumnIndex = props.ariaColumnIndex;\n var definedField = field || '';\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n var onKeyDownHandler = React.useCallback(function (event) {\n if (event.isDefaultPrevented()) {\n return;\n }\n if (event.keyCode === Keys.enter && onChange) {\n event.preventDefault();\n onChange({\n dataItem: dataItem,\n dataIndex: dataIndex,\n syntheticEvent: event,\n field: undefined,\n value: !expanded\n });\n }\n }, [expanded, onChange, dataItem, dataIndex]);\n if (columnIndex === undefined || level === undefined || columnIndex < level ||\n columnsCount === undefined || rowType !== 'groupHeader' || dataItem[definedField] === undefined) {\n defaultRendering = (React.createElement(\"td\", { style: props.style, key: 'g' + columnIndex, className: \"k-group-cell\", role: \"presentation\" }));\n }\n else if (columnIndex <= level) {\n defaultRendering = (React.createElement(\"td\", __assign({ style: props.style, key: 'g-colspan', colSpan: columnsCount - columnIndex, role: 'gridcell', \"aria-selected\": false, \"aria-expanded\": expanded, \"aria-colindex\": ariaColumnIndex, onKeyDown: onKeyDownHandler }, navigationAttributes),\n React.createElement(\"p\", { className: \"k-reset\" },\n React.createElement(\"a\", { onClick: function (e) {\n e.preventDefault();\n if (onChange) {\n onChange({\n dataItem: dataItem,\n dataIndex: dataIndex,\n syntheticEvent: e,\n field: undefined,\n value: !expanded\n });\n }\n }, href: \"#\", tabIndex: -1, className: expanded ? 'k-i-collapse k-icon' : 'k-i-expand k-icon' }),\n ((dataItem[definedField] instanceof Date) && dataItem[definedField].toString) ?\n dataItem[definedField].toString() :\n dataItem[definedField])));\n }\n return render ?\n render.call(undefined, defaultRendering, props) :\n defaultRendering;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { GRID_ROW_INDEX_ATTRIBUTE } from '../constants';\n/**\n * The component for each of the items in the `data` property which the Grid renders.\n */\nvar GridRow = /** @class */ (function (_super) {\n __extends(GridRow, _super);\n function GridRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridRow.prototype.render = function () {\n var _a;\n var className = classNames({\n 'k-grouping-row': this.props.rowType === 'groupHeader',\n 'k-group-footer': this.props.rowType === 'groupFooter',\n 'k-master-row': this.props.rowType !== 'groupHeader' &&\n this.props.rowType !== 'groupFooter',\n 'k-alt': this.props.rowType !== 'groupHeader' &&\n this.props.rowType !== 'groupFooter' &&\n this.props.isAltRow,\n 'k-state-selected': this.props.isSelected,\n 'k-grid-edit-row': this.props.isInEdit\n });\n var defaultRendering = (React.createElement(\"tr\", __assign({ onClick: this.props.onClick, onDoubleClick: this.props.onDoubleClick, className: className, style: {\n height: this.props.rowHeight ? this.props.rowHeight + 'px' : '',\n visibility: this.props.isHidden ? 'hidden' : ''\n }, role: \"row\", \"aria-rowindex\": this.props.ariaRowIndex }, (_a = {}, _a[GRID_ROW_INDEX_ATTRIBUTE] = this.props.rowType === 'data' ? this.props.dataIndex : undefined, _a)), this.props.children));\n return this.props.render ?\n this.props.render.call(undefined, defaultRendering, this.props) :\n defaultRendering;\n };\n return GridRow;\n}(React.Component));\nexport { GridRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { guid } from '@progress/kendo-react-common';\nimport { GridColumnMenuWrapper } from '../columnMenu/GridColumnMenuWrapper';\n/**\n * @hidden\n */\nvar GridHeaderSelectionCell = /** @class */ (function (_super) {\n __extends(GridHeaderSelectionCell, _super);\n function GridHeaderSelectionCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._inputId = guid();\n return _this;\n }\n GridHeaderSelectionCell.prototype.render = function () {\n var _this = this;\n var columnMenuWrapperProps = this.props.columnMenuWrapperProps;\n var defaultRendering = [\n (React.createElement(\"input\", { key: 0, checked: this.props.selectionValue, id: this._inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: function (e) {\n return _this.props.selectionChange({\n field: _this.props.field,\n syntheticEvent: e\n });\n } })),\n (React.createElement(\"label\", { key: 1, className: \"k-checkbox-label\", htmlFor: this._inputId })),\n columnMenuWrapperProps.columnMenu && React.createElement(GridColumnMenuWrapper, __assign({}, columnMenuWrapperProps))\n ];\n return this.props.render ?\n this.props.render.call(undefined, defaultRendering, this.props) :\n defaultRendering;\n };\n return GridHeaderSelectionCell;\n}(React.Component));\nexport { GridHeaderSelectionCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, noRecords } from './messages';\n/* eslint-disable max-len */\n/**\n * Represents the GridNoRecords component. The component is rendered when the `data` property of the Grid is empty or `null`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * <Grid data={[]}>\n * <GridNoRecords>\n * There is no data available\n * </GridNoRecords>\n * <GridColumn field=\"id\" />\n * <GridColumn field=\"name\" />\n * </Grid>\n * );\n * }\n * }\n * ReactDOM.render(\n * <App />,\n * document.querySelector('my-app')\n * );\n * ```\n */\n// tslint:enable:max-line-length\nvar GridNoRecords = /** @class */ (function (_super) {\n __extends(GridNoRecords, _super);\n function GridNoRecords() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridNoRecords.prototype.render = function () {\n return this.props.children || intl(this).toLanguageString(noRecords, messages[noRecords]);\n };\n /**\n * @hidden\n */\n GridNoRecords.displayName = 'KendoReactGridNoRecords';\n return GridNoRecords;\n}(React.Component));\nexport { GridNoRecords };\nregisterForLocalization(GridNoRecords);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { footerColumns } from './../utils';\n/**\n * @hidden\n */\nvar FooterRow = /** @class */ (function (_super) {\n __extends(FooterRow, _super);\n function FooterRow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n _this.renderCell = function (column, index) {\n var tdProps = {\n colSpan: column.colSpan !== 1 ? column.colSpan : undefined,\n style: column.left !== undefined\n ? !_this.props.isRtl\n ? { left: column.left, right: column.right }\n : { left: column.right, right: column.left }\n : {},\n className: column.locked && column.left !== undefined ? 'k-grid-footer-sticky' : ''\n };\n var cellProps = __assign({ field: column.field, ariaColumnIndex: column.ariaColumnIndex }, tdProps);\n return (column.footerCell && React.createElement(column.footerCell, __assign({}, cellProps, { key: index }))) || (React.createElement(\"td\", __assign({ key: index }, tdProps, { role: 'columnfooter', \"aria-selected\": false, \"aria-colindex\": column.ariaColumnIndex })));\n };\n return _this;\n }\n Object.defineProperty(FooterRow.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n FooterRow.prototype.render = function () {\n return React.createElement(\"tr\", { role: \"row\", \"aria-rowindex\": this.props.ariaRowIndex }, footerColumns(this.props.columns).map(this.renderCell));\n };\n return FooterRow;\n}(React.Component));\nexport { FooterRow };\n","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-grid',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642516975,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport * as React from 'react';\n/** @hidden */\nexport var GridDetailCell = function (props) {\n var colSpan = props.colSpan, ariaColIndex = props.ariaColIndex, dataItem = props.dataItem, dataIndex = props.dataIndex, id = props.id;\n var navigationAttributes = useTableKeyboardNavigation(id);\n return (React.createElement(\"td\", __assign({ className: \"k-detail-cell\", colSpan: colSpan, \"aria-colindex\": ariaColIndex, role: 'gridcell' }, navigationAttributes),\n React.createElement(props.detail, { dataItem: dataItem, dataIndex: dataIndex })));\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport * as React from 'react';\n/** @hidden */\nexport var GridDetailHierarchyCell = function (props) {\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n return (React.createElement(\"td\", __assign({ className: \"k-hierarchy-cell\" }, navigationAttributes)));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent, classNames, getter, guid, setScrollbarWidth, canUseDOM } from '@progress/kendo-react-common';\nimport { tableColumnsVirtualization, Pager, mapColumns, isRtl, tableKeyboardNavigation, TableKeyboardNavigationContext, tableKeyboardNavigationScopeAttributes, tableKeyboardNavigationTools as navigationTools, tableKeyboardNavigationBodyAttributes, getSelectionOptions, TableSelection, DropClue, DragClue } from '@progress/kendo-react-data-tools';\nimport { GridSelectionCell } from './cells/GridSelectionCell';\nimport { GridHierarchyCell } from './cells/GridHierarchyCell';\nimport { GridEditCell } from './cells/GridEditCell';\nimport { Header } from './header/Header';\nimport { HeaderRow } from './header/HeaderRow';\nimport { FilterRow } from './header/FilterRow';\nimport { GroupPanel } from './header/GroupPanel';\nimport { Footer } from './footer/Footer';\nimport { VirtualScroll } from './VirtualScroll';\nimport { ColumnResize } from './drag/ColumnResize';\nimport { CommonDragLogic } from './drag/CommonDragLogic';\nimport { getNestedValue, flatData, readColumns, autoGenerateColumns, sanitizeColumns } from './utils/index';\nimport { GridCell } from './cells/GridCell';\nimport { GridGroupCell } from './cells/GridGroupCell';\nimport { GridRow } from './rows/GridRow';\nimport { GridHeaderSelectionCell } from './header/GridHeaderSelectionCell';\nimport { GridNoRecords } from './GridNoRecords';\nimport { operators } from './filterCommon';\nimport { FooterRow } from './footer/FooterRow';\nimport { normalize } from './paging/GridPagerSettings';\nimport { pagerMessagesMap } from './messages';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport { GridDetailCell } from './cells/GridDetailCell';\nimport { GridDetailHierarchyCell } from './cells/GridDetailHierarchyCell';\n/**\n * Represents the [KendoReact Grid component]({% slug overview_grid %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * data: [\n * { 'foo': 'A1', 'bar': 'B1' },\n * { 'foo': 'A2', 'bar': 'B2' },\n * { 'foo': 'A3', 'bar': 'B2' }\n * ]\n * };\n * }\n * render() {\n * return (\n * <Grid\n * data={this.state.data}\n * reorderable={true}\n * >\n * <GridColumn field=\"foo\" />\n * <GridColumn field=\"bar\" />\n * </Grid>\n * );\n * }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n function Grid(props) {\n var _this = _super.call(this, props) || this;\n _this._columns = [];\n _this._columnsMap = [[]];\n _this.contextStateRef = { current: undefined };\n _this.navigationStateRef = { current: undefined };\n _this.wrapperScrollTop = 0;\n _this.headerRef = React.createRef();\n _this.element = null;\n _this.tableElement = null;\n _this._footer = null;\n _this.forceUpdateTimeout = undefined;\n _this.isRtl = false;\n _this._gridId = guid();\n /**\n * Method to allow the scroll to be set to a specific row index.\n *\n * @param options - Object, containing the rowIndex to which is going to be scrolled.\n */\n _this.scrollIntoView = function (options) {\n if (!_this.vs.container || _this.props.scrollable === 'none') {\n return;\n }\n var rowIndex = options.rowIndex;\n if (_this.props.scrollable === 'virtual') {\n _this.vs.askedSkip = rowIndex;\n _this.vs.container.scroll(0, Math.round(_this.vs.askedSkip / _this.vs.total * _this.vs.container.scrollHeight));\n }\n else if (_this.element) {\n var selectedRow = rowIndex < 1\n ? _this.element.querySelector(\"tbody > tr:nth-child(\" + 1 + \")\")\n : _this.element.querySelector(\"tbody > tr:nth-child(\" + rowIndex + \")\");\n if (selectedRow) {\n selectedRow.scrollIntoView(true);\n }\n }\n };\n /**\n * Method to fit columns according to their content.\n *\n * @param columnIds - Array of column ids to be fitted.\n */\n _this.fitColumns = function (columnIds) {\n _this.columnResize.dblClickHandler(null, columnIds);\n };\n _this.scrollHandler = function (event) {\n if (event.target !== event.currentTarget) {\n return;\n }\n clearTimeout(_this.forceUpdateTimeout);\n var scrollLeft = event.currentTarget.scrollLeft;\n var scrollTop = event.currentTarget.scrollTop;\n if (_this.props.columnVirtualization && (!_this.vs.scrollableVirtual || scrollTop === _this.wrapperScrollTop)) {\n _this.forceUpdateTimeout = window.setTimeout(function () { _this.forceUpdate(); }, 0);\n }\n if (_this._header) {\n _this._header.setScrollLeft(scrollLeft);\n }\n if (_this._footer) {\n _this._footer.setScrollLeft(scrollLeft);\n }\n if (_this.vs) {\n _this.vs.scrollHandler(event);\n }\n dispatchEvent(_this.props.onScroll, event, _this, undefined);\n _this.wrapperScrollTop = scrollTop;\n };\n _this.onKeyDown = function (event) {\n tableKeyboardNavigation.onKeyDown(event, {\n contextStateRef: _this.contextStateRef,\n navigationStateRef: _this.navigationStateRef,\n onNavigationAction: _this.onNavigationAction\n });\n if (_this.props.onKeyDown) {\n var _a = getSelectionOptions(_this.props.selectable), mode = _a.mode, cell = _a.cell;\n _this.props.onKeyDown.call(undefined, __assign({ dataItems: _this.getLeafDataItems(), mode: mode,\n cell: cell, componentId: _this._gridId, selectedField: _this.props.selectedField }, _this.getArguments(event)));\n }\n };\n _this.onFocus = function (event) {\n tableKeyboardNavigation.onFocus(event, {\n contextStateRef: _this.contextStateRef\n });\n };\n _this.onNavigationAction = function (options) {\n if (_this.props.onNavigationAction) {\n _this.props.onNavigationAction.call(undefined, __assign({ focusElement: options.focusElement }, _this.getArguments(options.event)));\n }\n };\n _this.rowClick = function (e, item) {\n if (_this.props.onRowClick && e.target.nodeName === 'TD') {\n _this.props.onRowClick.call(undefined, __assign({ dataItem: item.dataItem }, _this.getArguments(e)));\n }\n };\n _this.rowDblClick = function (e, item) {\n if (_this.props.onRowDoubleClick && e.target.nodeName === 'TD') {\n _this.props.onRowDoubleClick.call(undefined, __assign({ dataItem: item.dataItem }, _this.getArguments(e)));\n }\n };\n _this.itemChange = function (event) {\n var itemChange = _this.props.onItemChange;\n if (event.field === _this.props.expandField || _this.props.group && event.field === undefined) {\n var expandChange = _this.props.onExpandChange;\n if (expandChange) {\n expandChange.call(undefined, __assign({}, _this.getArguments(event.syntheticEvent), { dataItem: event.dataItem, dataIndex: event.dataIndex, value: event.value }));\n }\n return;\n }\n if (itemChange) {\n itemChange.call(undefined, __assign({}, _this.getArguments(event.syntheticEvent), { dataItem: event.dataItem, field: event.field, value: event.value }));\n }\n };\n _this.onHeaderSelectionChange = function (event) {\n if (_this.props.onHeaderSelectionChange) {\n _this.props.onHeaderSelectionChange.call(undefined, {\n field: event.field,\n nativeEvent: event.syntheticEvent && event.syntheticEvent.nativeEvent,\n syntheticEvent: event.syntheticEvent,\n target: _this,\n dataItems: _this.getLeafDataItems(),\n selectedField: _this.props.selectedField\n });\n }\n };\n _this.selectionRelease = function (event) {\n if (_this.props.onSelectionChange) {\n var selectionEvent = __assign({ syntheticEvent: undefined, target: _this, selectedField: _this.props.selectedField || '', componentId: _this._gridId, dataItems: _this.getLeafDataItems(), dataItem: null }, event);\n _this.props.onSelectionChange.call(undefined, selectionEvent);\n }\n };\n _this.pageChange = function (page, syntheticEvent) {\n _this.raiseDataEvent(_this.props.onPageChange, { page: page }, { skip: page.skip, take: page.take }, syntheticEvent);\n };\n _this.pagerPageChange = function (event) {\n _this.pageChange({ skip: event.skip, take: event.take }, event.syntheticEvent);\n };\n _this.sortChange = function (sort, syntheticEvent) {\n _this.raiseDataEvent(_this.props.onSortChange, { sort: sort }, { sort: sort }, syntheticEvent);\n };\n _this.filterChange = function (filter, syntheticEvent) {\n _this.raiseDataEvent(_this.props.onFilterChange, { filter: filter }, { filter: filter, skip: 0 }, syntheticEvent);\n };\n _this.groupChange = function (groups, event) {\n var syntheticEvent = event.nativeEvent ?\n event : { nativeEvent: event.nativeEvent || event.originalEvent };\n _this.raiseDataEvent(_this.props.onGroupChange, { group: groups }, { group: groups, skip: 0 }, syntheticEvent);\n };\n _this.onResize = function (index, newWidth, oldWidth, nativeEvent, end, targetId) {\n _this.resetTableWidth();\n if (_this.props.onColumnResize) {\n _this.props.onColumnResize.call(undefined, {\n columns: _this.columns,\n nativeEvent: nativeEvent,\n targetColumnId: targetId,\n index: index,\n newWidth: newWidth,\n oldWidth: oldWidth,\n end: end,\n target: _this\n });\n }\n };\n _this.resolveTitle = function (field) {\n var column = _this._columns.find(function (c) { return c.field === field; });\n var title = column && (column.title || column.field);\n return title === undefined ? field : title;\n };\n _this.getLeafDataItems = function () {\n return _this._data.filter(function (item) { return item.rowType === 'data'; }).map(function (item) { return item.dataItem; });\n };\n validatePackage(packageMetadata);\n var groupable = _this.props.groupable === true ||\n (typeof _this.props.groupable === 'object') && _this.props.groupable.enabled !== false;\n _this.vs = new VirtualScroll(groupable || props.rowHeight === undefined || props.rowHeight === 0);\n _this.dragLogic = new CommonDragLogic(_this.columnReorder.bind(_this), _this.groupReorder.bind(_this), _this.columnToGroup.bind(_this));\n _this.columnResize = new ColumnResize(_this.onResize);\n tableKeyboardNavigation.onConstructor({\n navigatable: Boolean(props.navigatable),\n contextStateRef: _this.contextStateRef,\n navigationStateRef: _this.navigationStateRef,\n idPrefix: _this._gridId\n });\n return _this;\n }\n Object.defineProperty(Grid.prototype, \"columns\", {\n /* eslint-disable max-len */\n /**\n * A getter of the current columns. Gets the current column width or current columns, or any other [`GridColumnProps`]({% slug api_grid_gridcolumnprops %}) for each defined column. Can be used on each Grid instance. To obtain the instance of the rendered Grid, use the `ref` callback. The following example demonstrates how to reorder the columns by dragging their handlers and check the properties afterwards. You can check the result in the browser console.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * data: [\n * { 'foo': 'A1', 'bar': 'B1' },\n * { 'foo': 'A2', 'bar': 'B2' },\n * { 'foo': 'A3', 'bar': 'B2' }\n * ]\n * };\n * this.grid = null;\n * }\n * render() {\n * return (\n * <div>\n * <Grid\n * data={this.state.data}\n * reorderable={true}\n * ref={(g) => { this.grid = g; }}\n * >\n * <GridColumn field=\"foo\" />\n * <GridColumn field=\"bar\" />\n * </Grid>\n * <button onClick={() => console.log(JSON.stringify(this.grid.columns))}>\n * log current properties into browser console.\n * </button>\n * </div>\n * );\n * }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\n // tslint:enable:max-line-length\n get: function () {\n var shuffledColumns = this._columns.filter(function (q) { return q.declarationIndex >= 0 && q.parentIndex === -1; });\n return sanitizeColumns(shuffledColumns);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Grid.prototype, \"document\", {\n get: function () {\n if (!canUseDOM) {\n return;\n }\n // useful only for user actions\n return (this.element && this.element.ownerDocument) || document;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Grid.prototype, \"_header\", {\n get: function () {\n return this.headerRef.current;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Grid.prototype.componentDidMount = function () {\n setScrollbarWidth();\n var rtl = isRtl(this.element);\n this.isRtl = rtl;\n tableKeyboardNavigation.onComponentDidMount({\n scope: this.element || undefined,\n contextStateRef: this.contextStateRef,\n navigationStateRef: this.navigationStateRef\n });\n if (this.isRtl) {\n this.forceUpdate();\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getSnapshotBeforeUpdate = function () {\n tableKeyboardNavigation.onGetSnapshotBeforeUpdate({\n document: this.document,\n contextStateRef: this.contextStateRef,\n navigationStateRef: this.navigationStateRef\n });\n return null;\n };\n /**\n * @hidden\n */\n Grid.prototype.componentDidUpdate = function () {\n setScrollbarWidth();\n tableKeyboardNavigation.onComponentDidUpdate({\n scope: this.element || undefined,\n contextStateRef: this.contextStateRef,\n navigationStateRef: this.navigationStateRef\n });\n };\n /**\n * @hidden\n */\n Grid.prototype.componentWillUnmount = function () {\n clearTimeout(this.forceUpdateTimeout);\n this.columnResize.columns = [];\n this.dragLogic.columns = [];\n this._columns = [];\n };\n /**\n * @hidden\n */\n Grid.prototype.render = function () {\n var _this = this;\n var total = this.props.total || 0;\n var idPrefix = navigationTools.getIdPrefix(this.navigationStateRef);\n var propsData = [];\n if (Array.isArray(this.props.data)) {\n propsData = this.props.data;\n total = total || this.props.data.length;\n }\n else if (this.props.data) {\n propsData = this.props.data.data;\n total = total || this.props.data.total;\n }\n var groupable = this.props.groupable === true ||\n (typeof this.props.groupable === 'object') && this.props.groupable.enabled !== false;\n this.columnResize.resizable = this.props.resizable || false;\n this.dragLogic.reorderable = this.props.reorderable || false;\n this.dragLogic.groupable = groupable;\n var tableUserSelect = this.props.selectable && this.props.selectable.drag ? 'none' : undefined;\n if (total !== this.vs.total) {\n this.vs.reset();\n this.vs = new VirtualScroll(groupable || this.props.rowHeight === undefined || this.props.rowHeight === 0);\n this.vs.table = this.tableElement;\n }\n this.vs.fixedScroll = this.props.fixedScroll || false;\n this.vs.PageChange = this.pageChange;\n this.vs.realSkip = this.props.skip || 0;\n this.vs.pageSize = (this.props.take !== undefined ? this.props.take : this.props.pageSize) || 0;\n this.vs.scrollableVirtual = (this.props.scrollable === 'virtual');\n this.vs.total = total;\n this.vs.propsSkip = (this.props.skip || 0) + (this.props.scrollable === 'virtual' ?\n this.vs.topCacheCount + (this.vs.attendedSkip - (this.props.skip || 0)) : 0);\n if (this.props.rowHeight !== undefined && this.props.rowHeight > 0 && !groupable) {\n this.vs.containerHeight = Math.min(1533915, this.props.rowHeight * (total || 0));\n }\n else {\n this.vs.containerHeight = 1533915;\n }\n var groupingFooter = (typeof this.props.groupable === 'object') && this.props.groupable.footer || 'none';\n this._data = [];\n var resolvedGroupsCount = flatData(this._data, propsData, groupingFooter, { index: this.props.skip || 0 }, this.props.group !== undefined, this.props.expandField);\n var children = React.Children.toArray(this.props.children);\n this.initColumns(children.filter(function (child) { return child &&\n child.type.displayName === 'KendoReactGridColumn'; }), resolvedGroupsCount);\n var toolbar = children.filter(function (child) { return child &&\n child.type.displayName === 'KendoReactGridToolbar'; });\n var noRecords = children.filter(function (child) { return child &&\n child.type.displayName === 'KendoReactGridNoRecords'; });\n var leafColumns = this._columns.filter(function (c) { return c.children.length === 0; });\n var groupingPanel = groupable && (React.createElement(GroupPanel, { group: this.props.group || [], groupChange: this.groupChange, pressHandler: this.dragLogic.pressHandler, dragHandler: this.dragLogic.dragHandler, releaseHandler: this.dragLogic.releaseHandler, refCallback: this.dragLogic.refGroupPanelDiv, resolveTitle: this.resolveTitle }));\n var header = (React.createElement(Header, { columnResize: this.columnResize, staticHeaders: this.props.scrollable !== 'none', scrollableDataElement: function () { return _this.vs.container; }, draggable: this.props.reorderable || groupable, ref: this.headerRef, headerRow: React.createElement(HeaderRow, { sort: this.props.sort, sortable: this.props.sortable, sortChange: this.sortChange, group: this.props.group || [], groupable: groupable, groupChange: this.groupChange, filter: this.props.filter, filterable: this.props.filterable, filterOperators: this.props.filterOperators || operators, filterChange: this.filterChange, columnMenu: this.props.columnMenu, selectionChange: this.onHeaderSelectionChange, columns: this._columns, columnResize: this.columnResize, pressHandler: this.dragLogic.pressHandler, dragHandler: this.dragLogic.dragHandler, releaseHandler: this.dragLogic.releaseHandler, columnsMap: this._columnsMap, cellRender: this.props.headerCellRender, isRtl: this.isRtl, dragClue: this.dragLogic.dragClueRef, headerRef: this.headerRef, containerRef: this.vs.containerRef }), filterRow: this.props.filterable && React.createElement(FilterRow, { columns: this._columns, filter: this.props.filter, filterOperators: this.props.filterOperators || operators, filterChange: this.filterChange, sort: this.props.sort, cellRender: this.props.filterCellRender, isRtl: this.isRtl, ariaRowIndex: this._columnsMap.length + 1 }) || undefined, cols: leafColumns.map(function (column, index) { return (React.createElement(\"col\", { key: index.toString(), width: column.width !== undefined ?\n Math.floor(parseFloat(column.width.toString())) + 'px' : undefined })); }) }));\n var scrollLeft = this.vs && this.vs.container && this.vs.container.scrollLeft || 0;\n var tableWidth = parseFloat(((this.props.style || {}).width || '').toString());\n var _a = tableColumnsVirtualization({\n enabled: this.props.columnVirtualization,\n columns: leafColumns,\n tableViewPortWidth: tableWidth,\n scrollLeft: scrollLeft\n }), colSpans = _a.colSpans, isColHidden = _a.hiddenColumns;\n var dataRow = function (item, rowId, rowDataIndex) {\n var isInEdit = false;\n var selectedValue = _this.props.selectedField ? getNestedValue(_this.props.selectedField, item.dataItem) : undefined;\n return {\n row: leafColumns.map(function (column, columnIndex) {\n if (isColHidden[columnIndex]) {\n return null;\n }\n var className = \"\" + (column.className ? column.className + ' ' : '')\n + (\"\" + (column.locked ? 'k-grid-content-sticky' : ''));\n var style = column.left !== undefined\n ? !_this.isRtl\n ? { left: column.left, right: column.right }\n : { left: column.right, right: column.left }\n : {};\n var cellProps = {\n id: navigationTools.generateNavigatableId(rowId + \"-\" + String(columnIndex), idPrefix),\n colSpan: colSpans[columnIndex],\n dataItem: item.dataItem,\n field: column.field,\n editor: column.editor,\n format: column.format,\n className: className,\n render: _this.props.cellRender,\n onChange: _this.itemChange,\n selectionChange: (_this.props.onSelectionChange) ?\n (function (e) { _this.selectionChange({ event: e, dataItem: item.dataItem, dataIndex: rowDataIndex, columnIndex: columnIndex }); }) :\n undefined,\n columnIndex: columnIndex,\n columnsCount: leafColumns.length,\n rowType: item.rowType,\n level: item.level,\n expanded: item.expanded,\n dataIndex: item.dataIndex,\n style: style,\n ariaColumnIndex: column.ariaColumnIndex,\n isSelected: Array.isArray(selectedValue) && selectedValue.indexOf(columnIndex) > -1\n };\n var currentColumnIsInEdit = false;\n if (column.editable && _this.props.editField) {\n var inEdit = getNestedValue(_this.props.editField, item.dataItem);\n if (inEdit === true || inEdit === column.field) {\n isInEdit = true;\n currentColumnIsInEdit = true;\n }\n }\n if (column.cell) {\n return React.createElement(column.cell, __assign({ key: columnIndex }, cellProps));\n }\n return currentColumnIsInEdit\n ? React.createElement(GridEditCell, __assign({ key: columnIndex }, cellProps))\n : React.createElement(GridCell, __assign({ key: columnIndex }, cellProps));\n }),\n isInEdit: isInEdit,\n isSelected: typeof selectedValue === 'boolean' && selectedValue\n };\n };\n var hiddenRows = 0;\n if (this.props.scrollable === 'virtual') {\n for (var i = 0; i < this.vs.topCacheCount + this.vs.attendedSkip - (this.props.skip || 0); i++) {\n var item = this._data.shift();\n if (item) {\n this._data.push(item);\n hiddenRows++;\n if (item.rowType === 'groupHeader') {\n i--;\n }\n }\n else {\n break;\n }\n }\n }\n var hidden = function (index) {\n return (index >= _this._data.length - hiddenRows);\n };\n var absoluteDataIndex = this.vs.propsSkip || 0;\n var body = [];\n var rowIndexStart = this._columnsMap.length + (this.props.filterable ? 1 : 0) + 1;\n var currentAriaRowIndex;\n if (this._data.length) {\n var dataIndex_1 = -1;\n var detailRowCount_1 = 0;\n this._data.forEach(function (item, rowIndex) {\n if (item.rowType === 'data') {\n absoluteDataIndex++;\n dataIndex_1++;\n }\n var isAlt = absoluteDataIndex % 2 === 0;\n var dataItemKey = _this.props.dataItemKey && getter(_this.props.dataItemKey)(item.dataItem);\n var absoluteIndex = rowIndex + (_this.vs.propsSkip || 0);\n var rowId = dataItemKey ? dataItemKey : 'ai' + absoluteIndex;\n var detailRowId = rowId + '_1';\n var gridRow = dataRow(item, rowId, dataIndex_1);\n currentAriaRowIndex = absoluteIndex + rowIndexStart + detailRowCount_1;\n body.push((React.createElement(GridRow, { key: rowId, dataItem: item.dataItem, isAltRow: isAlt, isInEdit: gridRow.isInEdit, rowType: item.rowType, isHidden: hidden(rowIndex), onClick: function (e) { return _this.rowClick(e, item); }, onDoubleClick: function (e) { return _this.rowDblClick(e, item); }, selectedField: _this.props.selectedField, rowHeight: _this.props.rowHeight, render: _this.props.rowRender, ariaRowIndex: currentAriaRowIndex, dataIndex: dataIndex_1, isSelected: gridRow.isSelected }, gridRow.row)));\n if (_this.props.detail && item.rowType === 'data' && item.expanded) {\n var detailColspan = (leafColumns.length\n - (_this.props.expandField ? 1 : 0)\n - (_this.props.group ? _this.props.group.length : 0)) || 1;\n detailRowCount_1++;\n currentAriaRowIndex = absoluteIndex + rowIndexStart + detailRowCount_1;\n body.push((React.createElement(\"tr\", { key: detailRowId, className: isAlt ? 'k-detail-row k-alt' : 'k-detail-row', style: { visibility: hidden(rowIndex) ? 'hidden' : '' }, role: \"row\", \"aria-rowindex\": currentAriaRowIndex },\n _this.props.group && _this.props.group.map(function (group, idx) {\n return (React.createElement(GridGroupCell, { id: '', dataIndex: item.dataIndex, field: group.field, dataItem: item.dataItem, key: idx, style: {}, ariaColumnIndex: 1 + idx, isSelected: false }));\n }),\n _this.props.expandField &&\n React.createElement(GridDetailHierarchyCell, { id: navigationTools.generateNavigatableId(detailRowId + \"-dhcell\", idPrefix) }),\n React.createElement(GridDetailCell, { dataItem: item.dataItem, dataIndex: item.dataIndex, colSpan: detailColspan, ariaColIndex: 2 + (_this.props.group ? _this.props.group.length : 0), detail: _this.props.detail, id: navigationTools.generateNavigatableId(detailRowId + \"-dcell\", idPrefix) }))));\n }\n });\n }\n else {\n body.push((React.createElement(\"tr\", { key: \"no-records\", className: \"k-grid-norecords\", \"aria-rowindex\": rowIndexStart },\n React.createElement(\"td\", { colSpan: leafColumns.length }, noRecords.length ? noRecords : React.createElement(GridNoRecords, null)))));\n }\n var pagerProps = __assign({ className: 'k-grid-pager', onPageChange: this.pagerPageChange, total: total, skip: this.vs.propsSkip || 0, take: (this.props.take !== undefined ? this.props.take : this.props.pageSize) || 10, messagesMap: pagerMessagesMap }, (normalize(this.props.pageable || {})));\n var pager = this.props.pager ? React.createElement(this.props.pager, __assign({}, pagerProps)) : React.createElement(Pager, __assign({}, pagerProps));\n var sorted = function (field) {\n return _this.props.sort && _this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0;\n };\n var footer = this._columns.some(function (c) { return Boolean(c.footerCell); }) ? (React.createElement(Footer, { columnResize: this.columnResize, staticHeaders: this.props.scrollable !== 'none', ref: function (f) { return _this._footer = f; }, row: React.createElement(FooterRow, { columns: this._columns, isRtl: this.isRtl, ariaRowIndex: currentAriaRowIndex + 1 }), cols: leafColumns.map(function (column, index) { return (React.createElement(\"col\", { key: index.toString(), width: column.width !== undefined ?\n Math.floor(parseFloat(column.width.toString())) + 'px' : undefined })); }) })) : null;\n var colGroups = (React.createElement(\"colgroup\", { ref: function (c) {\n _this.columnResize.colGroupMain = c;\n }, role: \"presentation\" }, leafColumns.map(function (column, index) { return (React.createElement(\"col\", { key: index.toString(), className: sorted(column.field) ? 'k-sorted' : undefined, width: column.width !== undefined ?\n Math.floor(parseFloat(column.width.toString())) + 'px' : undefined })); })));\n var enableDragClues = this.dragLogic.reorderable || this.dragLogic.groupable;\n if (this.props.scrollable === 'none') {\n return (React.createElement(TableKeyboardNavigationContext.Provider, { value: this.contextStateRef.current },\n React.createElement(\"div\", __assign({ style: this.props.style, className: classNames('k-widget k-grid', this.props.className), \"aria-colcount\": leafColumns.length, \"aria-rowcount\": total, ref: function (el) { _this.element = el; }, onKeyDown: this.onKeyDown, onFocus: this.onFocus }, tableKeyboardNavigationScopeAttributes),\n toolbar,\n groupingPanel,\n React.createElement(TableSelection, { selectable: this.props.selectable, onRelease: this.selectionRelease, childRef: function (table) {\n _this.vs.table = table;\n _this.tableElement = table;\n _this.resetTableWidth();\n } },\n React.createElement(\"table\", { style: { userSelect: tableUserSelect } },\n colGroups,\n header,\n React.createElement(\"tbody\", __assign({}, tableKeyboardNavigationBodyAttributes), body),\n footer)),\n this.props.pageable && pager,\n enableDragClues && (React.createElement(React.Fragment, null,\n React.createElement(DropClue, { ref: this.dragLogic.refDropElementClue }),\n React.createElement(DragClue, { ref: this.dragLogic.refDragElementClue }))))));\n }\n var wrapperStyle = this.props.style || {};\n if (this.props.scrollable === 'virtual') {\n // Set the default height for vs if not existing.\n if (!wrapperStyle.height) {\n wrapperStyle = Object.assign({}, wrapperStyle, { height: '450px' });\n }\n }\n return (React.createElement(TableKeyboardNavigationContext.Provider, { value: this.contextStateRef.current },\n React.createElement(\"div\", __assign({ style: wrapperStyle, className: classNames('k-widget k-grid', {\n 'k-grid-virtual': this.props.scrollable === 'virtual'\n }, this.props.className), ref: function (el) {\n _this.element = el;\n _this.resetTableWidth();\n }, role: \"grid\", \"aria-colcount\": leafColumns.length, \"aria-rowcount\": total, onKeyDown: this.onKeyDown, onFocus: this.onFocus }, tableKeyboardNavigationScopeAttributes),\n toolbar,\n groupingPanel,\n header,\n React.createElement(\"div\", { className: \"k-grid-container\", role: \"presentation\" },\n React.createElement(\"div\", { ref: this.vs.containerRef, className: \"k-grid-content k-virtual-content\", onScroll: this.scrollHandler, role: \"presentation\" },\n React.createElement(\"div\", { style: { 'position': 'relative' }, role: \"presentation\" },\n React.createElement(TableSelection, { selectable: this.props.selectable, onRelease: this.selectionRelease, childRef: function (table) {\n _this.vs.table = table;\n _this.tableElement = table;\n } },\n React.createElement(\"table\", { className: 'k-grid-table', role: \"presentation\", style: { userSelect: tableUserSelect } },\n colGroups,\n React.createElement(\"tbody\", __assign({ ref: function (tableBody) {\n _this.vs.tableBody = tableBody;\n }, role: \"presentation\" }, tableKeyboardNavigationBodyAttributes), body)))),\n React.createElement(\"div\", { className: \"k-height-container\", role: \"presentation\" },\n React.createElement(\"div\", { style: this.props.scrollable === 'virtual' ?\n { 'height': (this.vs.containerHeight) + 'px' } : {} })))),\n footer,\n this.props.pageable && pager,\n enableDragClues && (React.createElement(React.Fragment, null,\n React.createElement(DropClue, { ref: this.dragLogic.refDropElementClue }),\n React.createElement(DragClue, { ref: this.dragLogic.refDragElementClue }))))));\n };\n Grid.prototype.selectionChange = function (options) {\n if (this.props.onSelectionChange) {\n var event_1 = options.event, dataItem = options.dataItem, dataIndex = options.dataIndex, columnIndex = options.columnIndex;\n var _a = getSelectionOptions(this.props.selectable), mode = _a.mode, cell = _a.cell;\n var selectionEvent = __assign({}, this.getArguments(event_1.syntheticEvent), { dataItem: dataItem, startColIndex: columnIndex, endColIndex: columnIndex, startRowIndex: dataIndex, endRowIndex: dataIndex, dataItems: this.getLeafDataItems(), altKey: false, ctrlKey: false, shiftKey: false, metaKey: false, mode: mode,\n cell: cell, isDrag: false, componentId: this._gridId, selectedField: this.props.selectedField || '' });\n this.props.onSelectionChange.call(undefined, selectionEvent);\n }\n };\n Grid.prototype.raiseDataEvent = function (handler, data, moreData, syntheticEvent) {\n var dataStateChange = this.props.onDataStateChange;\n if (handler) {\n handler.call(undefined, __assign({}, this.getArguments(syntheticEvent), data));\n }\n else if (dataStateChange) {\n dataStateChange.call(undefined, __assign({}, this.getArguments(syntheticEvent), { dataState: __assign({}, this.getDataState(), moreData) }));\n }\n };\n Grid.prototype.columnReorder = function (prev, next, nativeEvent) {\n var _this = this;\n var _a;\n var depth = this._columns[prev].depth;\n var end = function (index) {\n do {\n index++;\n } while (index < _this._columns.length && _this._columns[index].depth > depth);\n return index;\n };\n var spliced = this._columns.splice(prev, end(prev) - prev);\n (_a = this._columns).splice.apply(_a, [prev < next ? end(next - spliced.length) : next, 0].concat(spliced));\n this._columns.filter(function (q) { return q.declarationIndex >= 0; }).forEach(function (c, i) { return c.orderIndex = i; });\n var eventColumnProps = this.columns;\n this.forceUpdate();\n if (this.props.onColumnReorder) {\n this.props.onColumnReorder.call(undefined, {\n target: this,\n columns: eventColumnProps,\n nativeEvent: nativeEvent\n });\n }\n };\n Grid.prototype.groupReorder = function (prevIndex, nextIndex, nativeEvent) {\n if (this.props.group === undefined) {\n return;\n }\n var group = this.props.group.slice();\n group.splice.apply(group, [nextIndex, 0].concat(group.splice(prevIndex, 1)));\n this.groupChange(group, nativeEvent);\n };\n Grid.prototype.columnToGroup = function (columnIndex, groupIndex, nativeEvent) {\n var field = this._columns[columnIndex].field;\n if (!field) {\n return;\n }\n var group = (this.props.group || []).slice();\n group.splice(groupIndex, 0, { field: field });\n this.groupChange(group, nativeEvent);\n };\n Grid.prototype.resetTableWidth = function () {\n var totalWidth = 0;\n if (!this.columnResize.colGroupMain) {\n return;\n }\n var colElements = this.columnResize.colGroupMain.children;\n for (var i = 0; i < colElements.length; i++) {\n var width = colElements[i].width;\n if (!width) {\n return;\n }\n totalWidth += parseFloat(width.toString());\n }\n totalWidth = Math.round(totalWidth);\n if (this._header) {\n this._header.setWidth(totalWidth);\n }\n if (this._footer) {\n this._footer.setWidth(totalWidth);\n }\n if (this.vs.table) {\n this.vs.table.style.width = totalWidth + 'px';\n }\n };\n Grid.prototype.initColumns = function (columnElements, groupCount) {\n var _this = this;\n var idPrefix = navigationTools.getIdPrefix(this.navigationStateRef);\n this._columns = readColumns(columnElements, this.columns, { prevId: 0, idPrefix: idPrefix });\n if (this._columns.length === 0) {\n this._columns = autoGenerateColumns(this.props.data, this.props.group, this.props.expandField, { prevId: 0, idPrefix: idPrefix });\n }\n if (this.props.selectedField) {\n this._columns.filter(function (c) { return c.field === _this.props.selectedField; }).forEach(function (c) {\n c.width = c.width || '50px';\n c.cell = c.cell || GridSelectionCell;\n c.headerCell = c.headerCell || GridHeaderSelectionCell;\n });\n }\n var defaultServiceProps = {\n id: '',\n resizable: true,\n width: '32px',\n title: ' ',\n declarationIndex: -1,\n orderIndex: -1,\n children: [],\n parentIndex: -1,\n depth: 0,\n colSpan: 0,\n rowSpan: 0,\n left: 0,\n right: 0,\n index: 0,\n rightBorder: false,\n ariaColumnIndex: 0,\n isAccessible: true\n };\n var columnIndexOffset = 0;\n if (this.props.expandField && (this.props.onExpandChange) && this.props.detail) {\n this._columns.unshift(__assign({}, defaultServiceProps, { cell: GridHierarchyCell, field: this.props.expandField, headerClassName: 'k-hierarchy-cell k-header', id: navigationTools.generateNavigatableId(\"\" + this._columns.length, idPrefix, 'column') }));\n columnIndexOffset++;\n }\n for (var i = 0; i < groupCount; i++) {\n this._columns.unshift(__assign({}, defaultServiceProps, { isAccessible: false, cell: GridGroupCell, field: 'value' }));\n columnIndexOffset++;\n }\n this._columns.slice(columnIndexOffset).forEach(function (c) { return c.parentIndex >= 0 && (c.parentIndex += columnIndexOffset); });\n this._columnsMap = mapColumns(this._columns);\n this.columnResize.columns = this._columns;\n this.dragLogic.columns = this._columns;\n };\n Grid.prototype.getDataState = function () {\n return {\n filter: this.props.filter,\n sort: this.props.sort,\n skip: this.props.skip,\n take: (this.props.take !== undefined ? this.props.take : this.props.pageSize),\n group: this.props.group\n };\n };\n Grid.prototype.getArguments = function (syntheticEvent) {\n return {\n nativeEvent: syntheticEvent && syntheticEvent.nativeEvent,\n syntheticEvent: syntheticEvent,\n target: this\n };\n };\n /**\n * @hidden\n */\n Grid.displayName = 'KendoReactGrid';\n /**\n * @hidden\n */\n Grid.defaultProps = {\n // never use this\n };\n /**\n * @hidden\n */\n Grid.propTypes = {\n data: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.shape({\n data: PropTypes.array,\n total: PropTypes.number\n })\n ]),\n sortable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n mode: PropTypes.oneOf(['single', 'multiple']),\n allowUnsort: PropTypes.bool\n })\n ]),\n onSortChange: PropTypes.func,\n sort: PropTypes.array,\n filterable: PropTypes.bool,\n filter: PropTypes.any,\n onFilterChange: PropTypes.func,\n pageable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n buttonCount: PropTypes.number,\n info: PropTypes.bool,\n type: PropTypes.oneOf(['numeric', 'input']),\n pageSizes: PropTypes.oneOfType([PropTypes.bool, PropTypes.arrayOf(PropTypes.number)]),\n previousNext: PropTypes.bool\n })\n ]),\n pageSize: PropTypes.number,\n onPageChange: PropTypes.func,\n total: PropTypes.number,\n skip: PropTypes.number,\n take: PropTypes.number,\n fixedScroll: PropTypes.bool,\n onExpandChange: PropTypes.func,\n expandField: PropTypes.string,\n selectedField: PropTypes.string,\n onSelectionChange: PropTypes.func,\n onHeaderSelectionChange: PropTypes.func,\n resizable: PropTypes.bool,\n reorderable: PropTypes.bool,\n group: PropTypes.any,\n groupable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n enabled: PropTypes.bool,\n footer: PropTypes.oneOf(['always', 'visible', 'none'])\n })\n ]),\n onGroupChange: PropTypes.func,\n onRowClick: PropTypes.func,\n onRowDoubleClick: PropTypes.func,\n onItemChange: PropTypes.func,\n editField: PropTypes.string,\n scrollable: PropTypes.oneOf(['none', 'scrollable', 'virtual']),\n rowHeight: PropTypes.number,\n detail: PropTypes.any,\n style: PropTypes.object,\n onDataStateChange: PropTypes.func,\n onColumnResize: PropTypes.func,\n onColumnReorder: PropTypes.func,\n dataItemKey: PropTypes.string,\n navigatable: PropTypes.bool\n };\n /** @hidden */\n Grid.contextType = TableKeyboardNavigationContext;\n return Grid;\n}(React.Component));\nexport { Grid };\n","/**\n * @hidden\n */\nexport function tableColumnsVirtualization(args) {\n var enabled = args.enabled, _a = args.columns, columns = _a === void 0 ? [] : _a, tableViewPortWidth = args.tableViewPortWidth, scrollLeft = args.scrollLeft;\n var colSpans = columns.map(function () { return 1; });\n var hiddenColumns = columns.map(function () { return false; });\n if (!enabled) {\n return { colSpans: colSpans, hiddenColumns: hiddenColumns };\n }\n var widths = columns.map(function (c) { return parseFloat((c.width || '').toString()) || 10; });\n var widthOfHiddenColumns = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].locked) {\n continue;\n }\n var considerNext = (i < widths.length - 1) ? widths[i + 1] : 0;\n if (widthOfHiddenColumns + widths[i] + considerNext < scrollLeft) {\n hiddenColumns[i] = true;\n widthOfHiddenColumns += widths[i];\n }\n else {\n break;\n }\n }\n var totalWidth = widths.reduce(function (acc, current) { return acc + current; }, 0);\n widthOfHiddenColumns = 0;\n for (var i = columns.length - 1; i >= 0; i--) {\n if (columns[i].locked) {\n continue;\n }\n if (widthOfHiddenColumns + 2 * widths[i] < totalWidth - tableViewPortWidth - scrollLeft) {\n hiddenColumns[i] = true;\n widthOfHiddenColumns += widths[i];\n }\n else {\n break;\n }\n }\n var hiddenCols = hiddenColumns.slice();\n var hidden = function (value) { return value; };\n var lastVisible = hiddenCols.lastIndexOf(false);\n var anyHidden = hiddenCols.some(hidden);\n var allHidden = hiddenCols.every(hidden);\n var hiddenSeqLength;\n var updateIndex;\n while (anyHidden && hiddenCols.length && (lastVisible !== -1 || allHidden)) {\n if (lastVisible < hiddenCols.length - 1) {\n hiddenSeqLength = allHidden ? hiddenCols.length : hiddenCols.length - lastVisible - 1;\n updateIndex = hiddenCols.length - hiddenSeqLength;\n if (updateIndex === 0) {\n updateIndex = hiddenSeqLength - 1;\n }\n hiddenColumns[updateIndex] = false;\n colSpans[updateIndex] = hiddenSeqLength;\n hiddenCols.splice(lastVisible + 1, hiddenSeqLength);\n }\n while (hiddenCols.length && !hiddenCols[hiddenCols.length - 1]) {\n hiddenCols.pop();\n }\n lastVisible = hiddenCols.lastIndexOf(false);\n anyHidden = hiddenCols.some(hidden);\n allHidden = hiddenCols.every(hidden);\n }\n return { colSpans: colSpans, hiddenColumns: hiddenColumns };\n}\n","/**\n * @hidden\n */\nvar normalizeSettings = function (_a) {\n var _b = _a.buttonCount, buttonCount = _b === void 0 ? 10 : _b, _c = _a.info, info = _c === void 0 ? true : _c, _d = _a.type, type = _d === void 0 ? 'numeric' : _d, _e = _a.pageSizes, pageSizes = _e === void 0 ? undefined : _e, _f = _a.previousNext, previousNext = _f === void 0 ? true : _f;\n return ({\n buttonCount: buttonCount,\n info: info,\n pageSizes: pageSizes === true ? [5, 10, 20] : (pageSizes || undefined),\n previousNext: previousNext,\n type: type\n });\n};\n/**\n * @hidden\n */\nexport var normalize = function (settings) {\n return normalizeSettings(settings === true ? {} : settings);\n};\n","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\nexport default function useWillUnmount(fn) {\n const onUnmount = useUpdatedRef(fn);\n useEffect(() => () => onUnmount.current(), []);\n}","import { useRef } from 'react';\n\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\nexport default function useUpdatedRef(value) {\n const valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the actively focused element safely.\n *\n * @param doc the document to check\n */\n\nexport default function activeElement(doc) {\n if (doc === void 0) {\n doc = ownerDocument();\n }\n\n // Support: IE 9 only\n // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n try {\n var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n // document.activeElement from an <iframe>\n\n if (!active || !active.nodeName) return null;\n return active;\n } catch (e) {\n /* ie throws if no active element */\n return doc.body;\n }\n}","import isDocument from './isDocument';\nexport default function isWindow(node) {\n if ('window' in node && node.window === node) return node;\n if (isDocument(node)) return node.defaultView || false;\n return false;\n}","export default function isDocument(element) {\n return 'nodeType' in element && element.nodeType === document.DOCUMENT_NODE;\n}","import isWindow from 'dom-helpers/isWindow';\nimport ownerDocument from 'dom-helpers/ownerDocument';\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = isWindow(node) ? ownerDocument() : ownerDocument(node);\n var win = isWindow(node) || doc.defaultView;\n return doc.body.clientWidth < win.innerWidth;\n}\n\nexport default function isOverflowing(container) {\n var win = isWindow(container);\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}","var BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n [].forEach.call(container.children, function (node) {\n if (exclude.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nexport function ariaHidden(hide, node) {\n if (!node) return;\n\n if (hide) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\nexport function hideSiblings(container, _ref2) {\n var dialog = _ref2.dialog,\n backdrop = _ref2.backdrop;\n siblings(container, [dialog, backdrop], function (node) {\n return ariaHidden(true, node);\n });\n}\nexport function showSiblings(container, _ref3) {\n var dialog = _ref3.dialog,\n backdrop = _ref3.backdrop;\n siblings(container, [dialog, backdrop], function (node) {\n return ariaHidden(false, node);\n });\n}","import addClass from 'dom-helpers/addClass';\nimport removeClass from 'dom-helpers/removeClass';\nimport css from 'dom-helpers/css';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport isOverflowing from './isOverflowing';\nimport { ariaHidden, hideSiblings, showSiblings } from './manageAriaHidden';\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n\n return false;\n });\n return idx;\n}\n\n/**\n * Proper state management for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\nvar ModalManager = /*#__PURE__*/function () {\n function ModalManager(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n _ref$handleContainerO = _ref.handleContainerOverflow,\n handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n this.hideSiblingNodes = void 0;\n this.handleContainerOverflow = void 0;\n this.modals = void 0;\n this.containers = void 0;\n this.data = void 0;\n this.scrollbarSize = void 0;\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n this.scrollbarSize = getScrollbarSize();\n }\n\n var _proto = ModalManager.prototype;\n\n _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n var data = this.data[this.containerIndexFromModal(modal)];\n return data && data.overflowing;\n };\n\n _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n return findIndexOf(this.data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n };\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var style = {\n overflow: 'hidden'\n }; // we are only interested in the actual `style` here\n // because we will override it\n\n containerState.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (containerState.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt(css(container, 'paddingRight') || '0', 10) + this.scrollbarSize + \"px\";\n }\n\n css(container, style);\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n Object.assign(container.style, containerState.style);\n };\n\n _proto.add = function add(modal, container, className) {\n var modalIdx = this.modals.indexOf(modal);\n var containerIdx = this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = this.modals.length;\n this.modals.push(modal);\n\n if (this.hideSiblingNodes) {\n hideSiblings(container, modal);\n }\n\n if (containerIdx !== -1) {\n this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n // right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n overflowing: isOverflowing(container)\n };\n\n if (this.handleContainerOverflow) {\n this.setContainerStyle(data, container);\n }\n\n data.classes.forEach(addClass.bind(null, container));\n this.containers.push(container);\n this.data.push(data);\n return modalIdx;\n };\n\n _proto.remove = function remove(modal) {\n var modalIdx = this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = this.containerIndexFromModal(modal);\n var data = this.data[containerIdx];\n var container = this.containers[containerIdx];\n data.modals.splice(data.modals.indexOf(modal), 1);\n this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n // clean up the container\n\n if (data.modals.length === 0) {\n data.classes.forEach(removeClass.bind(null, container));\n\n if (this.handleContainerOverflow) {\n this.removeContainerStyle(data, container);\n }\n\n if (this.hideSiblingNodes) {\n showSiblings(container, modal);\n }\n\n this.containers.splice(containerIdx, 1);\n this.data.splice(containerIdx, 1);\n } else if (this.hideSiblingNodes) {\n // otherwise make sure the next top modal is visible to a SR\n var _data$modals = data.modals[data.modals.length - 1],\n backdrop = _data$modals.backdrop,\n dialog = _data$modals.dialog;\n ariaHidden(false, dialog);\n ariaHidden(false, backdrop);\n }\n };\n\n _proto.isTopModal = function isTopModal(modal) {\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n };\n\n return ModalManager;\n}();\n\nexport default ModalManager;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport { useState, useEffect } from 'react';\nexport var resolveContainerRef = function resolveContainerRef(ref) {\n var _ref;\n\n if (typeof document === 'undefined') return null;\n if (ref == null) return ownerDocument().body;\n if (typeof ref === 'function') ref = ref();\n if (ref && 'current' in ref) ref = ref.current;\n if ((_ref = ref) != null && _ref.nodeType) return ref || null;\n return null;\n};\nexport default function useWaitForDOMRef(ref, onResolved) {\n var _useState = useState(function () {\n return resolveContainerRef(ref);\n }),\n resolvedRef = _useState[0],\n setRef = _useState[1];\n\n if (!resolvedRef) {\n var earlyRef = resolveContainerRef(ref);\n if (earlyRef) setRef(earlyRef);\n }\n\n useEffect(function () {\n if (onResolved && resolvedRef) {\n onResolved(resolvedRef);\n }\n }, [onResolved, resolvedRef]);\n useEffect(function () {\n var nextRef = resolveContainerRef(ref);\n\n if (nextRef !== resolvedRef) {\n setRef(nextRef);\n }\n }, [ref, resolvedRef]);\n return resolvedRef;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\n/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/contains';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport listen from 'dom-helpers/listen';\nimport PropTypes from 'prop-types';\nimport React, { useState, useRef, useCallback, useImperativeHandle, forwardRef, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport useMounted from '@restart/hooks/useMounted';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport ModalManager from './ModalManager';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nvar manager;\n\nfunction getManager() {\n if (!manager) manager = new ModalManager();\n return manager;\n}\n\nfunction useModalManager(provided) {\n var modalManager = provided || getManager();\n var modal = useRef({\n dialog: null,\n backdrop: null\n });\n return Object.assign(modal.current, {\n add: function add(container, className) {\n return modalManager.add(modal.current, container, className);\n },\n remove: function remove() {\n return modalManager.remove(modal.current);\n },\n isTopModal: function isTopModal() {\n return modalManager.isTopModal(modal.current);\n },\n setDialogRef: useCallback(function (ref) {\n modal.current.dialog = ref;\n }, []),\n setBackdropRef: useCallback(function (ref) {\n modal.current.backdrop = ref;\n }, [])\n });\n}\n\nvar Modal = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var _ref$show = _ref.show,\n show = _ref$show === void 0 ? false : _ref$show,\n _ref$role = _ref.role,\n role = _ref$role === void 0 ? 'dialog' : _ref$role,\n className = _ref.className,\n style = _ref.style,\n children = _ref.children,\n _ref$backdrop = _ref.backdrop,\n backdrop = _ref$backdrop === void 0 ? true : _ref$backdrop,\n _ref$keyboard = _ref.keyboard,\n keyboard = _ref$keyboard === void 0 ? true : _ref$keyboard,\n onBackdropClick = _ref.onBackdropClick,\n onEscapeKeyDown = _ref.onEscapeKeyDown,\n transition = _ref.transition,\n backdropTransition = _ref.backdropTransition,\n _ref$autoFocus = _ref.autoFocus,\n autoFocus = _ref$autoFocus === void 0 ? true : _ref$autoFocus,\n _ref$enforceFocus = _ref.enforceFocus,\n enforceFocus = _ref$enforceFocus === void 0 ? true : _ref$enforceFocus,\n _ref$restoreFocus = _ref.restoreFocus,\n restoreFocus = _ref$restoreFocus === void 0 ? true : _ref$restoreFocus,\n restoreFocusOptions = _ref.restoreFocusOptions,\n renderDialog = _ref.renderDialog,\n _ref$renderBackdrop = _ref.renderBackdrop,\n renderBackdrop = _ref$renderBackdrop === void 0 ? function (props) {\n return /*#__PURE__*/React.createElement(\"div\", props);\n } : _ref$renderBackdrop,\n providedManager = _ref.manager,\n containerRef = _ref.container,\n containerClassName = _ref.containerClassName,\n onShow = _ref.onShow,\n _ref$onHide = _ref.onHide,\n onHide = _ref$onHide === void 0 ? function () {} : _ref$onHide,\n onExit = _ref.onExit,\n onExited = _ref.onExited,\n onExiting = _ref.onExiting,\n onEnter = _ref.onEnter,\n onEntering = _ref.onEntering,\n onEntered = _ref.onEntered,\n rest = _objectWithoutPropertiesLoose(_ref, [\"show\", \"role\", \"className\", \"style\", \"children\", \"backdrop\", \"keyboard\", \"onBackdropClick\", \"onEscapeKeyDown\", \"transition\", \"backdropTransition\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"renderDialog\", \"renderBackdrop\", \"manager\", \"container\", \"containerClassName\", \"onShow\", \"onHide\", \"onExit\", \"onExited\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n var container = useWaitForDOMRef(containerRef);\n var modal = useModalManager(providedManager);\n var isMounted = useMounted();\n var prevShow = usePrevious(show);\n\n var _useState = useState(!show),\n exited = _useState[0],\n setExited = _useState[1];\n\n var lastFocusRef = useRef(null);\n useImperativeHandle(ref, function () {\n return modal;\n }, [modal]);\n\n if (canUseDOM && !prevShow && show) {\n lastFocusRef.current = activeElement();\n }\n\n if (!transition && !show && !exited) {\n setExited(true);\n } else if (show && exited) {\n setExited(false);\n }\n\n var handleShow = useEventCallback(function () {\n modal.add(container, containerClassName);\n removeKeydownListenerRef.current = listen(document, 'keydown', handleDocumentKeyDown);\n removeFocusListenerRef.current = listen(document, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n // and so steals focus from it\n function () {\n return setTimeout(handleEnforceFocus);\n }, true);\n\n if (onShow) {\n onShow();\n } // autofocus after onShow to not trigger a focus event for previous\n // modals before this one is shown.\n\n\n if (autoFocus) {\n var currentActiveElement = activeElement(document);\n\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n lastFocusRef.current = currentActiveElement;\n modal.dialog.focus();\n }\n }\n });\n var handleHide = useEventCallback(function () {\n modal.remove();\n removeKeydownListenerRef.current == null ? void 0 : removeKeydownListenerRef.current();\n removeFocusListenerRef.current == null ? void 0 : removeFocusListenerRef.current();\n\n if (restoreFocus) {\n var _lastFocusRef$current;\n\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n (_lastFocusRef$current = lastFocusRef.current) == null ? void 0 : _lastFocusRef$current.focus == null ? void 0 : _lastFocusRef$current.focus(restoreFocusOptions);\n lastFocusRef.current = null;\n }\n }); // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\n // Show logic when:\n // - show is `true` _and_ `container` has resolved\n\n useEffect(function () {\n if (!show || !container) return;\n handleShow();\n }, [show, container,\n /* should never change: */\n handleShow]); // Hide cleanup logic when:\n // - `exited` switches to true\n // - component unmounts;\n\n useEffect(function () {\n if (!exited) return;\n handleHide();\n }, [exited, handleHide]);\n useWillUnmount(function () {\n handleHide();\n }); // --------------------------------\n\n var handleEnforceFocus = useEventCallback(function () {\n if (!enforceFocus || !isMounted() || !modal.isTopModal()) {\n return;\n }\n\n var currentActiveElement = activeElement();\n\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n modal.dialog.focus();\n }\n });\n var handleBackdropClick = useEventCallback(function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n onBackdropClick == null ? void 0 : onBackdropClick(e);\n\n if (backdrop === true) {\n onHide();\n }\n });\n var handleDocumentKeyDown = useEventCallback(function (e) {\n if (keyboard && e.keyCode === 27 && modal.isTopModal()) {\n onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n\n if (!e.defaultPrevented) {\n onHide();\n }\n }\n });\n var removeFocusListenerRef = useRef();\n var removeKeydownListenerRef = useRef();\n\n var handleHidden = function handleHidden() {\n setExited(true);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n onExited == null ? void 0 : onExited.apply(void 0, args);\n };\n\n var Transition = transition;\n\n if (!container || !(show || Transition && !exited)) {\n return null;\n }\n\n var dialogProps = _extends({\n role: role,\n ref: modal.setDialogRef,\n // apparently only works on the dialog role element\n 'aria-modal': role === 'dialog' ? true : undefined\n }, rest, {\n style: style,\n className: className,\n tabIndex: -1\n });\n\n var dialog = renderDialog ? renderDialog(dialogProps) : /*#__PURE__*/React.createElement(\"div\", dialogProps, /*#__PURE__*/React.cloneElement(children, {\n role: 'document'\n }));\n\n if (Transition) {\n dialog = /*#__PURE__*/React.createElement(Transition, {\n appear: true,\n unmountOnExit: true,\n \"in\": !!show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, dialog);\n }\n\n var backdropElement = null;\n\n if (backdrop) {\n var BackdropTransition = backdropTransition;\n backdropElement = renderBackdrop({\n ref: modal.setBackdropRef,\n onClick: handleBackdropClick\n });\n\n if (BackdropTransition) {\n backdropElement = /*#__PURE__*/React.createElement(BackdropTransition, {\n appear: true,\n \"in\": !!show\n }, backdropElement);\n }\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, backdropElement, dialog), container));\n});\nvar propTypes = {\n /**\n * Set the visibility of the Modal\n */\n show: PropTypes.bool,\n\n /**\n * A DOM element, a `ref` to an element, or function that returns either. The Modal is appended to it's `container` element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: PropTypes.any,\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: PropTypes.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: PropTypes.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),\n\n /**\n * A function that returns the dialog component. Useful for custom\n * rendering. **Note:** the component should make sure to apply the provided ref.\n *\n * ```js static\n * renderDialog={props => <MyDialog {...props} />}\n * ```\n */\n renderDialog: PropTypes.func,\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => <MyBackdrop {...props} />}\n * ```\n */\n renderBackdrop: PropTypes.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n *\n * If preventDefault() is called on the keyboard event, closing the modal will be cancelled.\n */\n onEscapeKeyDown: PropTypes.func,\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: PropTypes.func,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: PropTypes.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: PropTypes.bool,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the dialog component.\n */\n transition: PropTypes.elementType,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: PropTypes.elementType,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: PropTypes.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: PropTypes.bool,\n\n /**\n * Options passed to focus function when `restoreFocus` is set to `true`\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Parameters\n */\n restoreFocusOptions: PropTypes.shape({\n preventScroll: PropTypes.bool\n }),\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: PropTypes.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: PropTypes.instanceOf(ModalManager)\n};\nModal.displayName = 'Modal';\nModal.propTypes = propTypes;\nexport default Object.assign(Modal, {\n Manager: ModalManager\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport css from 'dom-helpers/css';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport ModalManager from 'react-overlays/ModalManager';\nvar Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager = /*#__PURE__*/function (_ModalManager) {\n _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n function BootstrapModalManager() {\n return _ModalManager.apply(this, arguments) || this;\n }\n\n var _proto = BootstrapModalManager.prototype;\n\n _proto.adjustAndStore = function adjustAndStore(prop, element, adjust) {\n var _css;\n\n var actual = element.style[prop]; // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\n // @ts-ignore\n\n element.dataset[prop] = actual;\n css(element, (_css = {}, _css[prop] = parseFloat(css(element, prop)) + adjust + \"px\", _css));\n };\n\n _proto.restore = function restore(prop, element) {\n var value = element.dataset[prop];\n\n if (value !== undefined) {\n var _css2;\n\n delete element.dataset[prop];\n css(element, (_css2 = {}, _css2[prop] = value, _css2));\n }\n };\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var _this = this;\n\n _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n if (!containerState.overflowing) return;\n var size = getScrollbarSize();\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this.adjustAndStore('paddingRight', el, size);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this.adjustAndStore('marginRight', el, -size);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this.adjustAndStore('marginRight', el, size);\n });\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n var _this2 = this;\n\n _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this2.restore('paddingRight', el);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this2.restore('marginRight', el);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this2.restore('marginRight', el);\n });\n };\n\n return BootstrapModalManager;\n}(ModalManager);\n\nexport { BootstrapModalManager as default };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"children\"];\n\nvar _fadeStyles;\n\nimport classNames from 'classnames';\nimport React, { useCallback } from 'react';\nimport Transition, { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[ENTERING] = 'show', _fadeStyles[ENTERED] = 'show', _fadeStyles);\nvar Fade = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var handleEnter = useCallback(function (node) {\n triggerBrowserReflow(node);\n if (props.onEnter) props.onEnter(node);\n }, [props]);\n return /*#__PURE__*/React.createElement(Transition, _extends({\n ref: ref,\n addEndListener: transitionEndListener\n }, props, {\n onEnter: handleEnter\n }), function (status, innerProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {\n className: classNames('fade', className, children.props.className, fadeStyles[status])\n }));\n });\n});\nFade.defaultProps = defaultProps;\nFade.displayName = 'Fade';\nexport default Fade;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import React from 'react';\nvar ModalContext = /*#__PURE__*/React.createContext({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onHide: function onHide() {}\n});\nexport default ModalContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"contentClassName\", \"centered\", \"size\", \"children\", \"scrollable\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar ModalDialog = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n contentClassName = _ref.contentClassName,\n centered = _ref.centered,\n size = _ref.size,\n children = _ref.children,\n scrollable = _ref.scrollable,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n var dialogClass = bsPrefix + \"-dialog\";\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\")\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(bsPrefix + \"-content\", contentClassName)\n }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"label\", \"onClick\", \"className\"];\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nvar propTypes = {\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func\n};\nvar defaultProps = {\n label: 'Close'\n};\nvar CloseButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var label = _ref.label,\n onClick = _ref.onClick,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"button\", _extends({\n ref: ref,\n type: \"button\",\n className: classNames('close', className),\n onClick: onClick\n }, props), /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"\\xD7\"), /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only\"\n }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nvar ModalHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n closeLabel = _ref.closeLabel,\n closeButton = _ref.closeButton,\n onHide = _ref.onHide,\n className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n var context = useContext(ModalContext);\n var handleClick = useEventCallback(function () {\n if (context) context.onHide();\n if (onHide) onHide();\n });\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix)\n }), children, closeButton && /*#__PURE__*/React.createElement(CloseButton, {\n label: closeLabel,\n onClick: handleClick\n }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n return /*#__PURE__*/React.forwardRef(function (p, ref) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, p, {\n ref: ref,\n className: classNames(p.className, className)\n }));\n });\n});","import createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nvar DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n Component: DivStyledAsH4\n});","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _excluded = [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"contentClassName\", \"children\", \"dialogAs\", \"aria-labelledby\", \"aria-describedby\", \"aria-label\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"onEntered\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onExited\", \"backdropClassName\", \"manager\"];\nimport classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport React, { useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport BaseModal from 'react-overlays/Modal';\nimport warning from 'warning';\nimport BootstrapModalManager from './BootstrapModalManager';\nimport Fade from './Fade';\nimport ModalBody from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport ModalFooter from './ModalFooter';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar manager;\nvar defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n animation: true,\n dialogAs: ModalDialog\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n return /*#__PURE__*/React.createElement(Fade, _extends({}, props, {\n timeout: null\n }));\n}\n\nfunction BackdropTransition(props) {\n return /*#__PURE__*/React.createElement(Fade, _extends({}, props, {\n timeout: null\n }));\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n style = _ref.style,\n dialogClassName = _ref.dialogClassName,\n contentClassName = _ref.contentClassName,\n children = _ref.children,\n Dialog = _ref.dialogAs,\n ariaLabelledby = _ref['aria-labelledby'],\n ariaDescribedby = _ref['aria-describedby'],\n ariaLabel = _ref['aria-label'],\n show = _ref.show,\n animation = _ref.animation,\n backdrop = _ref.backdrop,\n keyboard = _ref.keyboard,\n onEscapeKeyDown = _ref.onEscapeKeyDown,\n onShow = _ref.onShow,\n onHide = _ref.onHide,\n container = _ref.container,\n autoFocus = _ref.autoFocus,\n enforceFocus = _ref.enforceFocus,\n restoreFocus = _ref.restoreFocus,\n restoreFocusOptions = _ref.restoreFocusOptions,\n onEntered = _ref.onEntered,\n onExit = _ref.onExit,\n onExiting = _ref.onExiting,\n onEnter = _ref.onEnter,\n onEntering = _ref.onEntering,\n onExited = _ref.onExited,\n backdropClassName = _ref.backdropClassName,\n propsManager = _ref.manager,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useState = useState({}),\n modalStyle = _useState[0],\n setStyle = _useState[1];\n\n var _useState2 = useState(false),\n animateStaticModal = _useState2[0],\n setAnimateStaticModal = _useState2[1];\n\n var waitingForMouseUpRef = useRef(false);\n var ignoreBackdropClickRef = useRef(false);\n var removeStaticModalAnimationRef = useRef(null); // TODO: what's this type\n\n var _useCallbackRef = useCallbackRef(),\n modal = _useCallbackRef[0],\n setModalRef = _useCallbackRef[1];\n\n var handleHide = useEventCallback(onHide);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n useImperativeHandle(ref, function () {\n return {\n get _modal() {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Accessing `_modal` is not supported and will be removed in a future release') : void 0;\n return modal;\n }\n\n };\n }, [modal]);\n var modalContext = useMemo(function () {\n return {\n onHide: handleHide\n };\n }, [handleHide]);\n\n function getModalManager() {\n if (propsManager) return propsManager;\n if (!manager) manager = new BootstrapModalManager();\n return manager;\n }\n\n function updateDialogStyle(node) {\n if (!canUseDOM) return;\n var containerIsOverflowing = getModalManager().isContainerOverflowing(modal);\n var modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n setStyle({\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n });\n }\n\n var handleWindowResize = useEventCallback(function () {\n if (modal) {\n updateDialogStyle(modal.dialog);\n }\n });\n useWillUnmount(function () {\n removeEventListener(window, 'resize', handleWindowResize);\n\n if (removeStaticModalAnimationRef.current) {\n removeStaticModalAnimationRef.current();\n }\n }); // We prevent the modal from closing during a drag by detecting where the\n // the click originates from. If it starts in the modal and then ends outside\n // don't close.\n\n var handleDialogMouseDown = function handleDialogMouseDown() {\n waitingForMouseUpRef.current = true;\n };\n\n var handleMouseUp = function handleMouseUp(e) {\n if (waitingForMouseUpRef.current && modal && e.target === modal.dialog) {\n ignoreBackdropClickRef.current = true;\n }\n\n waitingForMouseUpRef.current = false;\n };\n\n var handleStaticModalAnimation = function handleStaticModalAnimation() {\n setAnimateStaticModal(true);\n removeStaticModalAnimationRef.current = transitionEnd(modal.dialog, function () {\n setAnimateStaticModal(false);\n });\n };\n\n var handleStaticBackdropClick = function handleStaticBackdropClick(e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n handleStaticModalAnimation();\n };\n\n var handleClick = function handleClick(e) {\n if (backdrop === 'static') {\n handleStaticBackdropClick(e);\n return;\n }\n\n if (ignoreBackdropClickRef.current || e.target !== e.currentTarget) {\n ignoreBackdropClickRef.current = false;\n return;\n }\n\n onHide == null ? void 0 : onHide();\n };\n\n var handleEscapeKeyDown = function handleEscapeKeyDown(e) {\n if (!keyboard && backdrop === 'static') {\n // Call preventDefault to stop modal from closing in react-overlays,\n // then play our animation.\n e.preventDefault();\n handleStaticModalAnimation();\n } else if (keyboard && onEscapeKeyDown) {\n onEscapeKeyDown(e);\n }\n };\n\n var handleEnter = function handleEnter(node, isAppearing) {\n if (node) {\n node.style.display = 'block';\n updateDialogStyle(node);\n }\n\n onEnter == null ? void 0 : onEnter(node, isAppearing);\n };\n\n var handleExit = function handleExit(node) {\n removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n onExit == null ? void 0 : onExit(node);\n };\n\n var handleEntering = function handleEntering(node, isAppearing) {\n onEntering == null ? void 0 : onEntering(node, isAppearing); // FIXME: This should work even when animation is disabled.\n\n addEventListener(window, 'resize', handleWindowResize);\n };\n\n var handleExited = function handleExited(node) {\n if (node) node.style.display = ''; // RHL removes it sometimes\n\n onExited == null ? void 0 : onExited(node); // FIXME: This should work even when animation is disabled.\n\n removeEventListener(window, 'resize', handleWindowResize);\n };\n\n var renderBackdrop = useCallback(function (backdropProps) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, backdropProps, {\n className: classNames(bsPrefix + \"-backdrop\", backdropClassName, !animation && 'show')\n }));\n }, [animation, backdropClassName, bsPrefix]);\n\n var baseModalStyle = _extends({}, style, modalStyle); // Sets `display` always block when `animation` is false\n\n\n if (!animation) {\n baseModalStyle.display = 'block';\n }\n\n var renderDialog = function renderDialog(dialogProps) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"dialog\"\n }, dialogProps, {\n style: baseModalStyle,\n className: classNames(className, bsPrefix, animateStaticModal && bsPrefix + \"-static\"),\n onClick: backdrop ? handleClick : undefined,\n onMouseUp: handleMouseUp,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby\n }), /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n onMouseDown: handleDialogMouseDown,\n className: dialogClassName,\n contentClassName: contentClassName\n }), children));\n };\n\n return /*#__PURE__*/React.createElement(ModalContext.Provider, {\n value: modalContext\n }, /*#__PURE__*/React.createElement(BaseModal, {\n show: show,\n ref: setModalRef,\n backdrop: backdrop,\n container: container,\n keyboard: true // Always set true - see handleEscapeKeyDown\n ,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus,\n restoreFocus: restoreFocus,\n restoreFocusOptions: restoreFocusOptions,\n onEscapeKeyDown: handleEscapeKeyDown,\n onShow: onShow,\n onHide: onHide,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: onEntered,\n onExit: handleExit,\n onExiting: onExiting,\n onExited: handleExited,\n manager: getModalManager(),\n containerClassName: bsPrefix + \"-open\",\n transition: animation ? DialogTransition : undefined,\n backdropTransition: animation ? BackdropTransition : undefined,\n renderBackdrop: renderBackdrop,\n renderDialog: renderDialog\n }));\n});\nModal.displayName = 'Modal';\nModal.defaultProps = defaultProps;\nModal.Body = ModalBody;\nModal.Header = ModalHeader;\nModal.Title = ModalTitle;\nModal.Footer = ModalFooter;\nModal.Dialog = ModalDialog;\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\nexport default Modal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"className\", \"type\", \"tooltip\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string,\n\n /** Display feedback as a tooltip. */\n tooltip: PropTypes.bool,\n as: PropTypes.elementType\n};\nvar Feedback = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'valid' : _ref$type,\n _ref$tooltip = _ref.tooltip,\n tooltip = _ref$tooltip === void 0 ? false : _ref$tooltip,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, type + \"-\" + (tooltip ? 'tooltip' : 'feedback'))\n }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","import React from 'react'; // TODO\n\nvar FormContext = /*#__PURE__*/React.createContext({\n controlId: undefined\n});\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"type\", \"isValid\", \"isInvalid\", \"isStatic\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n isStatic = _ref.isStatic,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control-input'] : [bsPrefix, 'form-check-input'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n type: type,\n id: id || controlId,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control-label'] : [bsPrefix, 'form-check-label'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix)\n }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheck = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n _ref$inline = _ref.inline,\n inline = _ref$inline === void 0 ? false : _ref$inline,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n _ref$feedbackTooltip = _ref.feedbackTooltip,\n feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n _ref$title = _ref.title,\n title = _ref$title === void 0 ? '' : _ref$title,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n label = _ref.label,\n children = _ref.children,\n propCustom = _ref.custom,\n _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var custom = type === 'switch' ? true : propCustom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control'] : [bsPrefix, 'form-check'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = custom || label != null && label !== false && !children;\n var input = /*#__PURE__*/React.createElement(FormCheckInput, _extends({}, props, {\n type: type === 'switch' ? 'checkbox' : type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n isStatic: !hasLabel,\n disabled: disabled,\n as: as\n }));\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: style,\n className: classNames(className, bsPrefix, custom && \"custom-\" + type, inline && bsPrefix + \"-inline\")\n }, children || /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormCheckLabel, {\n title: title\n }, label), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid',\n tooltip: feedbackTooltip\n }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"isValid\", \"isInvalid\", \"lang\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n lang = _ref.lang,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var type = 'file';\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-file-input'] : [bsPrefix, 'form-control-file'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n id: id || controlId,\n type: type,\n lang: lang,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n }));\n});\nFormFileInput.displayName = 'FormFileInput';\nexport default FormFileInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-file-label'] : [bsPrefix, 'form-file-label'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix),\n \"data-browse\": props['data-browse']\n }));\n});\nFormFileLabel.displayName = 'FormFileLabel';\nexport default FormFileLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"label\", \"children\", \"custom\", \"lang\", \"data-browse\", \"as\", \"inputAs\"];\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport all from 'prop-types-extra/lib/all';\nimport Feedback from './Feedback';\nimport FormFileInput from './FormFileInput';\nimport FormFileLabel from './FormFileLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n _ref$feedbackTooltip = _ref.feedbackTooltip,\n feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n label = _ref.label,\n children = _ref.children,\n custom = _ref.custom,\n lang = _ref.lang,\n dataBrowse = _ref['data-browse'],\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n _ref$inputAs = _ref.inputAs,\n inputAs = _ref$inputAs === void 0 ? 'input' : _ref$inputAs,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-file'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n var type = 'file';\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = label != null && label !== false && !children;\n var input = /*#__PURE__*/React.createElement(FormFileInput, _extends({}, props, {\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n disabled: disabled,\n as: inputAs,\n lang: lang\n }));\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, /*#__PURE__*/React.createElement(Component, {\n style: style,\n className: classNames(className, bsPrefix, custom && \"custom-\" + type)\n }, children || /*#__PURE__*/React.createElement(React.Fragment, null, custom ? /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, {\n \"data-browse\": dataBrowse\n }, label)) : /*#__PURE__*/React.createElement(React.Fragment, null, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, null, label), input), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid',\n tooltip: feedbackTooltip\n }, feedback))));\n});\nFormFile.displayName = 'FormFile';\nFormFile.Input = FormFileInput;\nFormFile.Label = FormFileLabel;\nexport default FormFile;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"type\", \"size\", \"htmlSize\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n type = _ref.type,\n size = _ref.size,\n htmlSize = _ref.htmlSize,\n id = _ref.id,\n className = _ref.className,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n plaintext = _ref.plaintext,\n readOnly = _ref.readOnly,\n custom = _ref.custom,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-control'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n var classes;\n\n if (plaintext) {\n var _classes;\n\n classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n } else if (type === 'file') {\n var _classes2;\n\n classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n } else if (type === 'range') {\n var _classes3;\n\n classes = (_classes3 = {}, _classes3[bsPrefix + \"-range\"] = true, _classes3);\n } else if (Component === 'select' && custom) {\n var _classes4;\n\n classes = (_classes4 = {}, _classes4[bsPrefix + \"-select\"] = true, _classes4[bsPrefix + \"-select-\" + size] = size, _classes4);\n } else {\n var _classes5;\n\n classes = (_classes5 = {}, _classes5[bsPrefix] = true, _classes5[bsPrefix + \"-\" + size] = size, _classes5);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n type: type,\n size: htmlSize,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n }));\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n Feedback: Feedback\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n controlId = _ref.controlId,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n var context = useMemo(function () {\n return {\n controlId: controlId\n };\n }, [controlId]);\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n column: false,\n srOnly: false\n};\nvar FormLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'label' : _ref$as,\n bsPrefix = _ref.bsPrefix,\n column = _ref.column,\n srOnly = _ref.srOnly,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n var columnClass = 'col-form-label';\n if (typeof column === 'string') columnClass = columnClass + \" \" + columnClass + \"-\" + column;\n var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && columnClass);\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return /*#__PURE__*/React.createElement(Col, _extends({\n ref: ref,\n as: \"label\",\n className: classes,\n htmlFor: htmlFor\n }, props));\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n React.createElement(Component, _extends({\n ref: ref,\n className: classes,\n htmlFor: htmlFor\n }, props))\n );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\", \"muted\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'small' : _ref$as,\n muted = _ref.muted,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport FormCheck from './FormCheck';\nvar Switch = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(FormCheck, _extends({}, props, {\n ref: ref,\n type: \"switch\"\n }));\n});\nSwitch.displayName = 'Switch';\nSwitch.Input = FormCheck.Input;\nSwitch.Label = FormCheck.Label;\nexport default Switch;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport FormCheck from './FormCheck';\nimport FormFile from './FormFile';\nimport FormControl from './FormControl';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar FormRow = createWithBsPrefix('form-row');\nvar defaultProps = {\n inline: false\n};\nvar FormImpl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n className = _ref.className,\n validated = _ref.validated,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'form' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n }));\n});\nFormImpl.displayName = 'Form';\nFormImpl.defaultProps = defaultProps;\nFormImpl.Row = FormRow;\nFormImpl.Group = FormGroup;\nFormImpl.Control = FormControl;\nFormImpl.Check = FormCheck;\nFormImpl.File = FormFile;\nFormImpl.Switch = Switch;\nFormImpl.Label = FormLabel;\nFormImpl.Text = FormText;\nexport default FormImpl;","export enum FormMode {\r\n New,\r\n Edit,\r\n Transfer,\r\n Merge,\r\n Delete,\r\n Error,\r\n None\r\n }\r\n\r\n export interface IDropDownValue {\r\n id: string;\r\n text: string;\r\n }\r\n \r\n // export interface IVendorDropDownValue {\r\n // id: string;\r\n // text: string;\r\n // }\r\n // export interface IProductDropDownValue {\r\n // id: string;\r\n // text: string;\r\n // }\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport messageService from '../../../services/AnnouncementService';\r\nimport IMessage from '../../../model/IAnnouncement'\r\nimport { Grid, GridColumn, GridFilterChangeEvent, GridToolbar, GridColumn as Column, \r\n GridColumnMenuFilter,\r\n GridColumnMenuCheckboxFilter,\r\n GridColumnMenuProps,\r\n } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor, } from \"@progress/kendo-data-query\";\r\nimport { Modal, Button, Dropdown, Form, Row, DropdownButton } from 'react-bootstrap';\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-alpine.css';\r\nimport { FormMode } from '../../../services/Utility'\r\nimport axios from \"axios\";\r\nimport Moment from 'moment';\r\n\r\nexport default function AnnouncementManage() {\r\n\r\n const mountedRef = useRef(true);\r\n const [gridApi, setGridApi] = useState(null);\r\n const [gridColumnApi, setGridColumnApi] = useState([]);\r\n const [rowData, setRowData] = useState<IMessage[]>([]);\r\n\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [formValue, setFormValue] = useState<IMessage>({\r\n description: '',\r\n effectiveDate: new Date(),\r\n expirationDate: new Date(),\r\n isActive: true\r\n });\r\n\r\n const initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n };\r\n const [filter, setFilter] = useState(initialFilter);\r\n\r\n const handleChange = (event: any) => {\r\n const target = event.target //as HTMLSelectElement\r\n const value = target.type === 'checkbox' ? target.checked : target.value\r\n setFormValue({ ...formValue, [target.name]: value });\r\n };\r\n\r\n const post = (event: any) => {\r\n let message: IMessage = {\r\n description: formValue.description,\r\n effectiveDate: formValue.effectiveDate,\r\n expirationDate: formValue.expirationDate,\r\n isActive: formValue.isActive,\r\n };\r\n messageService.post(message).then(response => {\r\n // Display Success message\r\n })\r\n event.preventDefault();\r\n }\r\n\r\n const onFormAction = (messageId: number, actionType: FormMode) => {\r\n setErrors({\r\n descriptionError: '',\r\n effectiveDateError: '',\r\n expirationDateError: ''\r\n });\r\n switch (actionType) {\r\n case FormMode.New:\r\n setFormMode(FormMode.New)\r\n let resetMessage: IMessage = {\r\n description: '',\r\n effectiveDate: new Date(),\r\n expirationDate: new Date(),\r\n isActive: false,\r\n };\r\n setFormValue(resetMessage)\r\n //Clear Existing vlues\r\n break;\r\n case FormMode.Edit:\r\n setFormMode(FormMode.Edit)\r\n messageService.getById(messageId).then(response => {\r\n setFormValue(response.data)\r\n })\r\n break;\r\n case FormMode.Delete:\r\n setFormMode(FormMode.Delete)\r\n messageService.getById(messageId).then(response => {\r\n setFormValue(response.data)\r\n })\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const onSave = (event: any, actionType: FormMode) => {\r\n let message: IMessage = {\r\n id: formValue.id,\r\n description: formValue.description,\r\n effectiveDate: formValue.effectiveDate,\r\n expirationDate: formValue.expirationDate,\r\n isActive: formValue.isActive,\r\n };\r\n switch (actionType) {\r\n case FormMode.New:\r\n event.preventDefault();\r\n if (validate()) {\r\n message.isActive = true\r\n messageService.post(message).then(response => {\r\n getAnnouncementData();\r\n setFormMode(FormMode.None)\r\n })\r\n }\r\n\r\n //Clear Existing vlues\r\n break;\r\n case FormMode.Edit:\r\n event.preventDefault();\r\n if (validate()) {\r\n messageService.edit(message).then(response => {\r\n getAnnouncementData();\r\n setFormMode(FormMode.None)\r\n })\r\n }\r\n break;\r\n case FormMode.Delete:\r\n setFormMode(FormMode.Delete)\r\n messageService.delete(Number(formValue.id)).then(response => {\r\n getAnnouncementData();\r\n setFormMode(FormMode.None)\r\n })\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const getAnnouncementData = () => {\r\n messageService.getData().then(response => {\r\n setRowData(response.data)\r\n })\r\n }\r\n useEffect(() => {\r\n const CancelToken = axios.CancelToken;\r\n const source = CancelToken.source();\r\n getAnnouncementData();\r\n //return () => { source.cancel(); };\r\n return () => { mountedRef.current = false }\r\n }, []);\r\n\r\n const [errors, setErrors] = useState({\r\n descriptionError: '',\r\n effectiveDateError: '',\r\n expirationDateError: ''\r\n })\r\n const validate = () => {\r\n let error = {\r\n descriptionError: '',\r\n effectiveDateError: '',\r\n expirationDateError: ''\r\n };\r\n\r\n if (formMode == FormMode.New || formMode == FormMode.Edit) {\r\n if (!formValue.description) { error.descriptionError = \"Description is required\"; }\r\n if (!formValue.effectiveDate) { error.effectiveDateError = \"Effective date is required\"; }\r\n if (!formValue.expirationDate) { error.expirationDateError = \"Expiration date is required\"; }\r\n if (Moment(formValue.expirationDate).format('YYYY-MM-DD') < Moment(formValue.effectiveDate).format('YYYY-MM-DD')) { error.expirationDateError = \"Expiration date must not be less than effective date.\" }\r\n\r\n setErrors(error);\r\n if (error.descriptionError || error.effectiveDateError || error.expirationDateError) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n const ColumnMenuFilter = (props: GridColumnMenuProps) => {\r\n return (\r\n <div>\r\n <GridColumnMenuFilter {...props} expanded={true} />\r\n </div>\r\n );\r\n };\r\n\r\n \r\n \r\n \r\n\r\n const GridColumnButton = (props: any) => {\r\n return (\r\n <td style={{ overflow: 'visible' }}>\r\n\r\n <DropdownButton\r\n menuAlign=\"right\"\r\n title={<i className='fas fa-bars'></i>}\r\n id=\"dropdown-menu-align-right\"\r\n size=\"sm\"\r\n variant=\"outline-primary\"\r\n className=\"menu-bars\"\r\n >\r\n <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Edit) }}>Edit</Dropdown.Item>\r\n <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Delete) }}>Delete</Dropdown.Item>\r\n </DropdownButton>\r\n\r\n </td>)\r\n }\r\n\r\n const GridDescriptionCell = (props: any) => {\r\n return (\r\n <td>\r\n <div className=\"d-flex\">\r\n <i className=\"far fa-comment-alt mr-3 text-blue-gray\" style={{\"fontSize\" : \"30px\"}}></i>\r\n <div>\r\n {props.dataItem.description}\r\n </div>\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n const GridDateCell = (props: any) => {\r\n {Moment.locale('en')}\r\n return (\r\n <td>\r\n \r\n {Moment(props.dataItem.effectiveDate).format('MMM D')} to {Moment(props.dataItem.expirationDate).format('MMM D, YYYY')}\r\n </td>\r\n )\r\n }\r\n const GridActiveCell = (props: any) => {\r\n \r\n return (\r\n <td>\r\n {props.dataItem.isActive}\r\n </td>\r\n )\r\n\r\n // if (props.dataItem.IsActive == \"True\") {\r\n // return (\r\n // <td className=\"text-success\">\r\n // Active\r\n // </td>\r\n // )\r\n // } else {\r\n // return (\r\n \r\n // <td>\r\n // Inactive\r\n // </td>\r\n // )\r\n // }\r\n \r\n }\r\n\r\n return (\r\n <div className=\"announcement-page\">\r\n <Modal size=\"lg\" animation={false} show={formMode == FormMode.Edit || formMode == FormMode.New} onHide={() => { setFormMode(FormMode.None) }}>\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>{formMode == FormMode.Edit ? \"Edit\" : \"Add\"} Announcement</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <Form>\r\n <input type=\"hidden\" name=\"id\" value={formValue.id ?? ''} onChange={handleChange} />\r\n <Row>\r\n <Form.Group controlId=\"description\" className=\"col-sm-12\">\r\n <Form.Label>Announcement</Form.Label>\r\n <Form.Control as=\"textarea\" rows={5} name=\"description\" value={formValue.description ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.descriptionError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"effectiveDate\" className=\"col-sm-4\">\r\n <Form.Label>Effective</Form.Label>\r\n <Form.Control type=\"date\" name=\"effectiveDate\" value={Moment(formValue.effectiveDate).format('YYYY-MM-DD') ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.effectiveDateError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"expirationDate\" className=\"col-sm-4\">\r\n <Form.Label>Expires</Form.Label>\r\n <Form.Control type=\"date\" name=\"expirationDate\" value={Moment(formValue.expirationDate).format('YYYY-MM-DD') ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.expirationDateError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group hidden={formMode == FormMode.New} controlId=\"isActive\" className=\"col-sm-4 mt-sm-5 mt-0 text-left text-sm-right\">\r\n <Form.Check type=\"checkbox\" name=\"isActive\" label=\"Active\" checked={formValue?.isActive} onChange={handleChange} />\r\n {/* <Form.Text className=\"text-danger\">{errors.expirationDateError}</Form.Text> */}\r\n </Form.Group>\r\n </Row>\r\n </Form>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={() => { setFormMode(FormMode.None) }}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n <Modal\r\n show={formMode == FormMode.Delete}\r\n onHide={() => { setFormMode(FormMode.None) }}\r\n animation={false}\r\n backdrop=\"static\"\r\n keyboard={false}>\r\n\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Delete Message</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n Are you sure you want to delete the message?\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n <Button variant=\"primary\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n <div className=\"text-right mb-2 mt-2\">\r\n <Button type=\"button\" variant=\"primary\" onClick={(e) => { onFormAction(0, FormMode.New) }}>\r\n <i className=\"fas fa-plus\"></i>\r\n </Button>\r\n </div>\r\n <Grid data={filterBy(rowData, filter)}\r\n filter={filter}\r\n filterable={false}\r\n pageable={true}\r\n sortable={true}\r\n scrollable={\"none\"}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n >\r\n\r\n <GridColumn field=\"description\" title=\"Announcements\" cell={GridDescriptionCell} columnMenu={ColumnMenuFilter} />\r\n <GridColumn field=\"effectiveDate\" title=\"Effective\" cell={GridDateCell} columnMenu={ColumnMenuFilter} width={225} />\r\n <GridColumn field=\"isActive\" title=\"Active\" columnMenu={ColumnMenuFilter} />\r\n <GridColumn field=\"AnnouncementId\" filterable={false} title=\" \" className=\"text-right\" cell={GridColumnButton} width={60} />\r\n </Grid>\r\n </div>\r\n )\r\n}\r\n\r\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport announcementService from '../../services/AnnouncementService';\r\nimport IAnnouncement from '../../model/IAnnouncement'\r\nimport AdminManageIcon from './AdminManageIcon'\r\nimport { ErrorContext, IErrorContext } from '../../services/AppContext';\r\n\r\nexport default function AnnouncementDisplay() {\r\n const [announcementData, setAnnouncementData] = useState<IAnnouncement[]>([]);\r\n const { errorMessages , setErrorMessages } = useContext<IErrorContext>(ErrorContext);\r\n\r\n useEffect(() => {\r\n announcementService.getRecent().then(response => {\r\n setAnnouncementData(response.data) \r\n }).catch((e) =>{\r\n setErrorMessages([...errorMessages, 'Data did not load correctly. Try to refresh the page. ' + e])\r\n })\r\n }, []);\r\n\r\n let annNo = announcementData.length;\r\n if (announcementData.length > 0) {\r\n return (\r\n <div className=\"card mb-4 shadow-sm\">\r\n <div className=\"card-header bg-warning\">\r\n <div className=\"h3 mb-0 font-weight-normal\">\r\n Announcements\r\n </div>\r\n {/* <AdminManageIcon/> */}\r\n </div>\r\n <ul className=\"list-group list-group-flush\">\r\n {\r\n announcementData.sort().slice((announcementData.length-3) >= 3 \r\n ?(announcementData.length-3) : 0,\r\n announcementData.length).map(data =>\r\n <li className=\"list-group-item list-group-item-warning d-flex align-items-top\" key={data.id}><i className=\"far fa-comment-alt fa-2x mr-2\"></i> {data.description}</li>\r\n )\r\n }\r\n </ul>\r\n </div>\r\n )\r\n } else {\r\n return (<></>)\r\n }\r\n \r\n}\r\n\r\n","export var ARC = \"arc\";\nexport var AXIS_LABEL_CLICK = \"axisLabelClick\";\nexport var BLACK = \"#000\";\nexport var BOTTOM = \"bottom\";\nexport var CENTER = \"center\";\nexport var CIRCLE = \"circle\";\nexport var COORD_PRECISION = 3;\nexport var CROSS = \"cross\";\nexport var DATE = \"date\";\nexport var DEFAULT_FONT = \"12px sans-serif\";\nexport var DEFAULT_HEIGHT = 400;\nexport var DEFAULT_PRECISION = 10;\nexport var DEFAULT_WIDTH = 600;\nexport var END = \"end\";\nexport var FORMAT_REGEX = /\\{\\d+:?/;\nexport var HEIGHT = \"height\";\nexport var HIGHLIGHT_ZINDEX = 100;\nexport var INSIDE = \"inside\";\nexport var INHERIT = \"inherit\";\nexport var LEFT = \"left\";\nexport var MAX_VALUE = Number.MAX_VALUE;\nexport var MIN_VALUE = -Number.MAX_VALUE;\nexport var NONE = \"none\";\nexport var NOTE_CLICK = \"noteClick\";\nexport var NOTE_HOVER = \"noteHover\";\nexport var NOTE_LEAVE = \"noteLeave\";\nexport var OBJECT = \"object\";\nexport var OUTSIDE = \"outside\";\nexport var RIGHT = \"right\";\nexport var ROUNDED_RECT = \"roundedRect\";\nexport var START = \"start\";\nexport var STRING = \"string\";\nexport var TOP = \"top\";\nexport var TRIANGLE = \"triangle\";\nexport var VALUE = \"value\";\nexport var WHITE = \"#fff\";\nexport var WIDTH = \"width\";\nexport var X = \"x\";\nexport var Y = \"y\";\nexport var DEFAULT_SERIES_OPACITY = 1;\n","export default function isArray(value) {\n return Array.isArray(value);\n}","import isArray from './is-array';\n\nexport default function addClass(element, classes) {\n var classArray = isArray(classes) ? classes : [ classes ];\n\n for (var idx = 0; idx < classArray.length; idx++) {\n var className = classArray[idx];\n if (element.className.indexOf(className) === -1) {\n element.className += \" \" + className;\n }\n }\n}","var SPACE_REGEX = /\\s+/g;\n\nexport default function removeClass(element, className) {\n if (element && element.className) {\n element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n }\n}","var UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","import { drawing } from '@progress/kendo-drawing';\n\nexport default function alignPathToPixel(path) {\n var offset = 0.5;\n if (path.options.stroke && drawing.util.defined(path.options.stroke.width)) {\n if (path.options.stroke.width % 2 === 0) {\n offset = 0;\n }\n }\n\n for (var i = 0; i < path.segments.length; i++) {\n path.segments[i].anchor().round(0).translate(offset, offset);\n }\n\n return path;\n}","export default function clockwise(angle1, angle2) {\n // True if angle2 is clockwise of angle1\n // assuming angles grow in clock-wise direction\n // (as in the pie and radar charts)\n return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n}","export default function isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n}","import { STRING } from './constants';\n\nexport default function isString(value) {\n return typeof value === STRING;\n}","import isNumber from './is-number';\nimport isString from './is-string';\n\nexport default function convertableToNumber(value) {\n return isNumber(value) || (isString(value) && isFinite(value));\n}","export default function isFunction(fn) {\n return typeof fn === \"function\";\n}","import isFunction from './is-function';\n\nvar OBJECT = \"object\";\nvar UNDEFINED = \"undefined\";\n\nfunction deepExtendOne(destination, source) {\n\n for (var property in source) {\n var propValue = source[property];\n var propType = typeof propValue;\n\n var propInit = (void 0);\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit && propInit !== Array) {\n\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n var destProp = destination[property];\n if (typeof (destProp) === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n\n return destination;\n}\n\nexport default function deepExtend(destination) {\n var arguments$1 = arguments;\n\n var length = arguments.length;\n\n for (var i = 1; i < length; i++) {\n deepExtendOne(destination, arguments$1[i]);\n }\n\n return destination;\n}","export default function isObject(value) {\n return typeof value === \"object\";\n}","import isNumber from './is-number';\n\nexport default function styleValue(value) {\n if (isNumber(value)) {\n return value + \"px\";\n }\n return value;\n}","import isObject from './is-object';\nimport isArray from './is-array';\nimport isString from './is-string';\nimport styleValue from './style-value';\n\nvar SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\nfunction isSizeField(field) {\n return SIZE_STYLES_REGEX.test(field);\n}\n\nexport default function elementStyles(element, styles) {\n var stylesArray = isString(styles) ? [ styles ] : styles;\n\n if (isArray(stylesArray)) {\n var result = {};\n var style = window.getComputedStyle(element);\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n }\n\n return result;\n } else if (isObject(styles)) {\n for (var field$1 in styles) {\n element.style[field$1] = styleValue(styles[field$1]);\n }\n }\n}","import { TOP, BOTTOM, LEFT, RIGHT } from './constants';\n\nexport default function getSpacing(value, defaultSpacing) {\n if ( defaultSpacing === void 0 ) defaultSpacing = 0;\n\n var spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n if (typeof(value) === \"number\") {\n spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n } else {\n spacing[TOP] = value[TOP] || defaultSpacing;\n spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n spacing[LEFT] = value[LEFT] || defaultSpacing;\n }\n\n return spacing;\n}","var current = {\n compile: function(template) {\n return template;\n }\n};\n\nvar TemplateService = function TemplateService () {};\n\nTemplateService.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nTemplateService.compile = function compile (template, options) {\n return current.compile(template, options);\n};\n\nexport default TemplateService;\n","import TemplateService from '../services/template-service';\nimport isFunction from './is-function';\n\nexport default function getTemplate(options) {\n if ( options === void 0 ) options = {};\n\n var template;\n if (options.template) {\n options.template = template = TemplateService.compile(options.template);\n } else if (isFunction(options.content)) {\n template = options.content;\n }\n\n return template;\n}\n","import { drawing } from '@progress/kendo-drawing';\n\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nvar getterCache = {};\n\ngetterCache['undefined'] = function(obj) {\n return obj;\n};\n\nexport default function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n fields.push(drawing.util.defined(index) ? index : (indexAccessor || field));\n });\n\n getterCache[field] = function(obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n\n return result;\n };\n\n return getterCache[field];\n}","export default function grep(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (callback(array[idx])) {\n result .push(array[idx]);\n }\n }\n\n return result;\n}","export default function hasClasses(element, classNames) {\n if (element.className) {\n var names = classNames.split(\" \");\n for (var idx = 0; idx < names.length; idx++) {\n if (element.className.indexOf && element.className.indexOf(names[idx]) !== -1) {\n return true;\n }\n }\n }\n}\n","// TODO: Remove and replace with Map/WeakMap.\nvar HashMap = function HashMap() {\n this._map = new Map();\n};\n\nHashMap.prototype.get = function get (key) {\n return this._map.get(key);\n};\n\nHashMap.prototype.set = function set (key, value) {\n this._map.set(key, value);\n};\n\nexport default HashMap;\n","export default function inArray(value, array) {\n if (array) {\n return array.indexOf(value) !== -1;\n }\n}","function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n}\n\nexport default function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n}","import { drawing } from '@progress/kendo-drawing';\nimport { COORD_PRECISION } from './constants';\n\nexport default function interpolateValue(start, end, progress) {\n return drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n}","import deepExtend from './deep-extend';\n\nvar TRIGGER = 'trigger';\n\nvar InstanceObserver = function InstanceObserver(observer, handlers) {\n this.observer = observer;\n this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n};\n\nInstanceObserver.prototype.trigger = function trigger (name, args) {\n var ref = this;\n var observer = ref.observer;\n var handlerMap = ref.handlerMap;\n var isDefaultPrevented;\n if (handlerMap[name]) {\n isDefaultPrevented = this.callObserver(handlerMap[name], args);\n } else if (observer[TRIGGER]) {\n isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n }\n\n return isDefaultPrevented;\n};\n\nInstanceObserver.prototype.callObserver = function callObserver (fnName) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n return this.observer[fnName].apply(this.observer, args);\n};\n\nInstanceObserver.prototype.requiresHandlers = function requiresHandlers (names) {\n var this$1 = this;\n\n if (this.observer.requiresHandlers) {\n return this.observer.requiresHandlers(names);\n }\n\n for (var idx = 0; idx < names.length; idx++) {\n if (this$1.handlerMap[names[idx]]) {\n return true;\n }\n }\n};\n\nexport default InstanceObserver;","import { drawing } from '@progress/kendo-drawing';\n\nexport default function map(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n var value = callback(array[idx]);\n if (drawing.util.defined(value)) {\n result.push(value);\n }\n }\n return result;\n}","function matchUserAgent(userAgent) {\n var browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+))/i\n };\n\n var browser = {};\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n var match = userAgent.match(browserRxs[agent]);\n if (match) {\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n}\n\nvar browser = null;\n\nvar support = {\n get browser() {\n if (typeof window === 'undefined' || browser) {\n return browser;\n }\n\n browser = matchUserAgent(window.navigator.userAgent);\n return browser;\n }\n};\n\nexport default support;\n","import { support } from '@progress/kendo-drawing';\n\nvar browser = support.browser || {};\n\nexport default function mousewheelDelta(e) {\n var delta = 0;\n\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n\n if (browser.webkit) {\n // Webkit browsers scale the delta by twice the device resolution.\n // Possibly related to https://bugs.webkit.org/show_bug.cgi?id=196339\n //\n // Low device resolutions (e.g. zoom-out to 30%) also behave strangely.\n delta = delta / (2 * Math.max(window.devicePixelRatio, 0.625));\n }\n } else if (e.detail) {\n delta = e.detail / 3;\n }\n\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\n return delta;\n}\n","var Class = function Class () {};\n\nexport default Class;\n","/* eslint-disable no-console */\n\nexport default function logToConsole(message) {\n var console = window.console;\n\n if (typeof(console) != \"undefined\" && console.log) {\n console.log(message);\n }\n}","export default function append(first, second) {\n first.push.apply(first, second);\n return first;\n}","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nvar literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n var values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n var roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n}\n","export default function createPromise() {\n var resolveFn, rejectFn;\n var promise = new Promise(function (resolve, reject) {\n resolveFn = function (data) {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n rejectFn = function (data) {\n promise._state = \"rejected\";\n reject(data);\n\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n promise.state = function () { return promise._state; };\n\n return promise;\n}\n","var defId = 1;\n\nexport default function definitionId() {\n return \"kdef\" + defId++;\n}","var DEG_TO_RAD = Math.PI / 180;\nvar MAX_NUM = Number.MAX_VALUE;\nvar MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","var fromCharCode = String.fromCharCode;\n\nexport var BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n var hi = code;\n var low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n}\n\nfunction encodeUnit(codeUnit) {\n return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n var output = '';\n\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n\n if (c < 0xFFFF) {\n output += encodeUnit(c);\n } else {\n var lead = ((c - 0x10000) >> 10) + 0xD800;\n var trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n output += encodeUnit(lead);\n output += encodeUnit(trail);\n }\n }\n\n return output;\n}\n","import { encodeUTF8 } from './encode-utf';\n\nvar KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n var output = \"\";\n var i = 0;\n\n var utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n\n var enc1 = chr1 >> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n var enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","import defined from './defined';\n\nexport default function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n}","export default function eventElement(e) {\n if ( e === void 0 ) e = {};\n\n return e.touch ? e.touch.initialTouch : e.target;\n}","import defined from './defined';\n\nexport default function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n}","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n}","var now = Date.now || function() {\n return new Date().getTime();\n};\n\nexport default now;\n","export default function promiseAll(promises) {\n return Promise.all(promises);\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\n}\n","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","export default function bindEvents(element, events) {\n for (var eventName in events) {\n var eventNames = eventName.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n}","export default function elementOffset(element) {\n var box = element.getBoundingClientRect();\n\n var documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n}","export default function elementStyles(element, styles) {\n var result = {};\n var style = window.getComputedStyle(element) || {};\n var stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n}","import elementStyles from './element-styles';\nimport defined from './defined';\n\nfunction getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n}\n\nexport default function elementSize(element, size) {\n if (size) {\n var width = size.width;\n var height = size.height;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n var size$1 = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size$1.width, 10),\n height: parseInt(size$1.height, 10)\n };\n }\n}","export default function unbindEvents(element, events) {\n if ( events === void 0 ) events = {};\n\n for (var name in events) {\n var eventNames = name.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n}","import { default as elementStyles } from './element-styles';\n\nexport default function elementPadding(element) {\n var ref = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n}\n","import { Class } from '../common';\nimport defined from '../util/defined';\nimport rad from '../util/rad';\nimport round from '../util/round';\n\nvar Matrix = (function (Class) {\n function Matrix(a, b, c, d, e, f) {\n if ( a === void 0 ) a = 0;\n if ( b === void 0 ) b = 0;\n if ( c === void 0 ) c = 0;\n if ( d === void 0 ) d = 0;\n if ( e === void 0 ) e = 0;\n if ( f === void 0 ) f = 0;\n\n Class.call(this);\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n if ( Class ) Matrix.__proto__ = Class;\n Matrix.prototype = Object.create( Class && Class.prototype );\n Matrix.prototype.constructor = Matrix;\n\n Matrix.prototype.multiplyCopy = function multiplyCopy (matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n };\n\n Matrix.prototype.invert = function invert () {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n };\n\n Matrix.prototype.clone = function clone () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n\n Matrix.prototype.equals = function equals (other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n };\n\n Matrix.prototype.round = function round$1 (precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n };\n\n Matrix.prototype.toArray = function toArray (precision) {\n var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n };\n\n Matrix.prototype.toString = function toString (precision, separator) {\n if ( separator === void 0 ) separator = \",\";\n\n return this.toArray(precision).join(separator);\n };\n\n Matrix.translate = function translate (x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n\n Matrix.unit = function unit () {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n\n Matrix.rotate = function rotate (angle, x, y) {\n var matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n };\n\n Matrix.scale = function scale (scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n\n return Matrix;\n}(Class));\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;\n","import Matrix from '../geometry/matrix';\n\nvar matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n}\n\nfunction transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import { Class } from '../common';\n\nvar LRUCache = (function (Class) {\n function LRUCache(size) {\n Class.call(this);\n\n this._size = size;\n this._length = 0;\n this._map = {};\n }\n\n if ( Class ) LRUCache.__proto__ = Class;\n LRUCache.prototype = Object.create( Class && Class.prototype );\n LRUCache.prototype.constructor = LRUCache;\n\n LRUCache.prototype.put = function put (key, value) {\n var map = this._map;\n var entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n };\n\n LRUCache.prototype.get = function get (key) {\n var entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n };\n\n return LRUCache;\n}(Class));\n\nexport default LRUCache;","var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nvar SPACE = ' ';\n\nfunction normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n var hash = 0x811C9DC5;\n\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n}\n\nvar DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\n\nvar defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.setProperty(\"position\", \"absolute\", \"important\");\n defaultMeasureBox.style.setProperty(\"top\", \"-4000px\", \"important\");\n defaultMeasureBox.style.setProperty(\"width\", \"auto\", \"important\");\n defaultMeasureBox.style.setProperty(\"height\", \"auto\", \"important\");\n defaultMeasureBox.style.setProperty(\"padding\", \"0\", \"important\");\n defaultMeasureBox.style.setProperty(\"margin\", \"0\", \"important\");\n defaultMeasureBox.style.setProperty(\"border\", \"0\", \"important\");\n defaultMeasureBox.style.setProperty(\"line-height\", \"normal\", \"important\");\n defaultMeasureBox.style.setProperty(\"visibility\", \"hidden\", \"important\");\n defaultMeasureBox.style.setProperty(\"white-space\", \"pre\", \"important\");\n}\n\nvar TextMetrics = (function (Class) {\n function TextMetrics(options) {\n Class.call(this);\n\n this._cache = new LRUCache(1000);\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n }\n\n if ( Class ) TextMetrics.__proto__ = Class;\n TextMetrics.prototype = Object.create( Class && Class.prototype );\n TextMetrics.prototype.constructor = TextMetrics;\n\n TextMetrics.prototype.measure = function measure (text, style, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (var key in style) {\n var value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n };\n\n TextMetrics.prototype._baselineMarker = function _baselineMarker () {\n var marker = document.createElement(\"div\");\n marker.style.display = \"inline-block\";\n marker.style.verticalAlign = \"baseline\";\n marker.style.width = this.options.baselineMarkerSize + \"px\";\n marker.style.height = this.options.baselineMarkerSize + \"px\";\n marker.style.overflow = \"hidden\";\n\n return marker;\n };\n\n return TextMetrics;\n}(Class));\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;\n","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}\n","import {\n drawing,\n Class,\n logToConsole\n} from '@progress/kendo-drawing';\n\nvar ref = drawing.util;\nvar append = ref.append;\nvar bindEvents = ref.bindEvents;\nvar defined = ref.defined;\nvar deg = ref.deg;\nvar elementOffset = ref.elementOffset;\nvar elementSize = ref.elementSize;\nvar eventCoordinates = ref.eventCoordinates;\nvar eventElement = ref.eventElement;\nvar hashKey = ref.hashKey;\nvar last = ref.last;\nvar limitValue = ref.limitValue;\nvar objectKey = ref.objectKey;\nvar rad = ref.rad;\nvar round = ref.round;\nvar unbindEvents = ref.unbindEvents;\nvar valueOrDefault = ref.valueOrDefault;\n\nexport {\n append,\n bindEvents,\n Class,\n defined,\n deg,\n elementOffset,\n elementSize,\n eventCoordinates,\n eventElement,\n hashKey,\n last,\n limitValue,\n logToConsole,\n objectKey,\n rad,\n round,\n unbindEvents,\n valueOrDefault\n};\n","import { logToConsole } from '../drawing-utils';\n\nvar FontLoader = function FontLoader () {};\n\nFontLoader.fetchFonts = function fetchFonts (options, fonts, state) {\n if ( state === void 0 ) state = { depth: 0 };\n\n var MAX_DEPTH = 5;\n\n if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n return;\n }\n\n Object.keys(options).forEach(function(key) {\n var value = options[key];\n if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n return;\n }\n\n if (key === \"font\") {\n fonts.push(value);\n } else if (typeof value === \"object\") {\n state.depth++;\n FontLoader.fetchFonts(value, fonts, state);\n state.depth--;\n }\n });\n};\n\nFontLoader.loadFonts = function loadFonts (fonts, callback) {\n var promises = [];\n\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function(font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n // Silence font-loading errors\n logToConsole(e);\n }\n\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n};\n\nFontLoader.preloadFonts = function preloadFonts (options, callback) {\n var fonts = [];\n FontLoader.fetchFonts(options, fonts);\n\n FontLoader.loadFonts(fonts, callback);\n};\n\nexport default FontLoader;","import deepExtend from './deep-extend';\n\nexport default function setDefaultOptions(type, options) {\n var proto = type.prototype;\n if (proto.options) {\n proto.options = deepExtend({}, proto.options, options);\n } else {\n proto.options = options;\n }\n}","import isObject from './is-object';\nimport isPlainObject from './is-plain-object';\nimport isString from './is-string';\nimport deepExtend from './deep-extend';\nimport setDefaultOptions from './set-default-options';\nimport addClass from './add-class';\nimport removeClass from './remove-class';\n\nvar KICON = 'k-icon';\nvar KI_PREFFIX = 'k-i-';\nvar KSVGICON = 'k-svg-icon';\nvar KSVG_PREFFIX = 'k-svg-i-';\n\nvar HTMLBaseIcon = function HTMLBaseIcon(element, options) {\n this.element = element;\n this.options = deepExtend({}, this.options, options);\n\n this.wrapper();\n};\n\nHTMLBaseIcon.prototype.wrapper = function wrapper () {\n this.addClasses();\n};\n\nHTMLBaseIcon.prototype.addClasses = function addClasses () {\n};\n\nHTMLBaseIcon.prototype.html = function html () {\n return this.element.outerHTML;\n};\n\nsetDefaultOptions(HTMLBaseIcon, {\n name: '',\n size: 'none',\n themeColor: 'none',\n flip: 'default',\n iconClass: '',\n stylingOptions: [ 'size', 'themeColor', 'fill' ]\n});\n\nvar HTMLFontIcon = (function (HTMLBaseIcon) {\n function HTMLFontIcon(element, options) {\n HTMLBaseIcon.call(this, element, options);\n }\n\n if ( HTMLBaseIcon ) HTMLFontIcon.__proto__ = HTMLBaseIcon;\n HTMLFontIcon.prototype = Object.create( HTMLBaseIcon && HTMLBaseIcon.prototype );\n HTMLFontIcon.prototype.constructor = HTMLFontIcon;\n\n HTMLFontIcon.prototype.wrapper = function wrapper () {\n // Find if there is an existing k-i- class appended to the element.\n var currentIconClass = this.element.className.split(\" \").find(function (x) { return x.startsWith(KI_PREFFIX); });\n var className = this.options.icon ? (\"\" + (this.options.icon.startsWith(KI_PREFFIX) ? \"\" : KI_PREFFIX) + (this.options.icon)) : \"\";\n\n this._className = className;\n\n addClass(this.element, KICON);\n removeClass(this.element, currentIconClass); // Remove any existing icons.\n addClass(this.element, className);\n addClass(this.element, this.options.iconClass || '');\n\n HTMLBaseIcon.prototype.wrapper.call(this);\n };\n\n return HTMLFontIcon;\n}(HTMLBaseIcon));\n\nsetDefaultOptions(HTMLFontIcon, {\n name: 'HTMLFontIcon',\n icon: null\n});\n\nvar HTMLSvgIcon = (function (HTMLBaseIcon) {\n function HTMLSvgIcon(element, options) {\n // Ensure that the inner contents of the wrapping span element are always removed for re-rendering purposes.\n element.innerHTML = \"\";\n\n HTMLBaseIcon.call(this, element, options);\n }\n\n if ( HTMLBaseIcon ) HTMLSvgIcon.__proto__ = HTMLBaseIcon;\n HTMLSvgIcon.prototype = Object.create( HTMLBaseIcon && HTMLBaseIcon.prototype );\n HTMLSvgIcon.prototype.constructor = HTMLSvgIcon;\n\n HTMLSvgIcon.prototype.wrapper = function wrapper () {\n var icon = this.options.icon;\n var iconClass = this.options.iconClass;\n var currentIconClass = this.element.className.split(\" \").find(function (x) { return x.startsWith(KSVG_PREFFIX); });\n\n if (!icon && iconClass) {\n // match k-i-(some-icon-name)\n var regex = /k-i-(\\w+(?:-\\w+)*)/;\n var iconNameMatch = iconClass.match(regex);\n if (iconNameMatch) {\n icon = iconNameMatch[1];\n iconClass = iconClass.replace(iconNameMatch[0], \"\");\n }\n }\n\n if (isString(icon)) {\n icon = icon.replace(\"k-i-\", \"\").replace(/-./g, function (x) { return x[1].toUpperCase(); });\n icon = this.options.svgIcons[icon] || this.options.svgIcons[(icon + \"Icon\")];\n }\n\n var className = icon && icon.name ? (\"\" + KSVG_PREFFIX + (icon.name)) : \"\";\n this._className = className;\n\n addClass(this.element, KSVGICON);\n removeClass(this.element, currentIconClass);\n addClass(this.element, className);\n addClass(this.element, iconClass || \"\");\n this.element.setAttribute(\"aria-hidden\", \"true\");\n\n if (icon && isPlainObject(icon)) {\n var svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgElement.setAttribute(\"viewBox\", icon.viewBox || \"\");\n svgElement.setAttribute(\"focusable\", \"false\");\n svgElement.innerHTML = icon.content || \"\";\n\n this.element.appendChild(svgElement);\n }\n\n HTMLBaseIcon.prototype.wrapper.call(this);\n };\n\n return HTMLSvgIcon;\n}(HTMLBaseIcon));\n\nsetDefaultOptions(HTMLSvgIcon, {\n name: 'HTMLSvgIcon',\n icon: null,\n svgIcons: {}\n});\n\nvar ICON_TYPES = {\n 'svg': HTMLSvgIcon,\n 'font': HTMLFontIcon\n};\n\nexport default function renderIcon(iconElement, iconOptions) {\n var element = iconElement;\n var options = iconOptions;\n\n if (!element\n || (isObject(element) && !(element instanceof HTMLElement))\n || isString(element)) {\n options = element;\n element = document.createElement(\"span\");\n }\n\n if (isString(options)) {\n options = {\n icon: options\n };\n }\n\n if (!options.type) {\n options.type = 'svg';\n }\n\n if (!ICON_TYPES[options.type]) {\n return null;\n }\n\n return (new ICON_TYPES[options.type](element, options).html());\n}\n","export default function isPlainObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}","import { MIN_VALUE, MAX_VALUE } from './constants';\n\nexport default function sparseArrayLimits(arr) {\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var idx = 0, length = arr.length; idx < length; idx++) {\n var value = arr[idx];\n if (value !== null && isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n return {\n min: min === MAX_VALUE ? undefined : min,\n max: max === MIN_VALUE ? undefined : max\n };\n}","export default function find(array, predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n}\n","import { geometry } from '@progress/kendo-drawing';\n\nvar Matrix = geometry.Matrix;\nvar matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n}\n\nfunction transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","var namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nvar browser = support.browser;\n\nvar matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = function (color) { return regexp.exec(color); };\n\n return regexp.exec(color);\n};\n\nvar BaseColor = (function (Class) {\n function BaseColor() { Class.call(this); }\n\n if ( Class ) BaseColor.__proto__ = Class;\n BaseColor.prototype = Object.create( Class && Class.prototype );\n BaseColor.prototype.constructor = BaseColor;\n BaseColor.prototype.toHSV = function toHSV () { return this; };\n\n BaseColor.prototype.toRGB = function toRGB () { return this; };\n\n BaseColor.prototype.toHex = function toHex (options) { return this.toBytes().toHex(options); };\n\n BaseColor.prototype.toBytes = function toBytes () { return this; };\n\n BaseColor.prototype.toCss = function toCss (options) { return \"#\" + this.toHex(options); };\n\n BaseColor.prototype.toCssRgba = function toCssRgba () {\n var rgb = this.toBytes();\n return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n };\n\n BaseColor.prototype.toDisplay = function toDisplay () {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n };\n\n BaseColor.prototype.equals = function equals (c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n };\n\n BaseColor.prototype.diff = function diff (other) {\n if (other === null) {\n return NaN;\n }\n\n var c1 = this.toBytes();\n var c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n };\n\n BaseColor.prototype.clone = function clone () {\n var c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n };\n\n return BaseColor;\n}(Class));\n\nvar RGB = (function (BaseColor) {\n function RGB(r, g, b, a) {\n BaseColor.call(this);\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n if ( BaseColor ) RGB.__proto__ = BaseColor;\n RGB.prototype = Object.create( BaseColor && BaseColor.prototype );\n RGB.prototype.constructor = RGB;\n\n RGB.prototype.toHSV = function toHSV () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n };\n\n RGB.prototype.toHSL = function toHSL () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n };\n\n RGB.prototype.toBytes = function toBytes () {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n };\n\n return RGB;\n}(BaseColor));\n\nvar Bytes = (function (RGB) {\n function Bytes(r, g, b, a) {\n RGB.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n }\n\n if ( RGB ) Bytes.__proto__ = RGB;\n Bytes.prototype = Object.create( RGB && RGB.prototype );\n Bytes.prototype.constructor = Bytes;\n\n Bytes.prototype.toRGB = function toRGB () {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n };\n\n Bytes.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n Bytes.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n Bytes.prototype.toHex = function toHex (options) {\n var value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n };\n\n Bytes.prototype.toBytes = function toBytes () {\n return this;\n };\n\n return Bytes;\n}(RGB));\n\nfunction hex(n, width, pad) {\n if ( pad === void 0 ) pad = \"0\";\n\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nvar HSV = (function (BaseColor) {\n function HSV(h, s, v, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n\n if ( BaseColor ) HSV.__proto__ = BaseColor;\n HSV.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSV.prototype.constructor = HSV;\n\n HSV.prototype.toRGB = function toRGB () {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSV.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n HSV.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSV;\n}(BaseColor));\n\nvar HSL = (function (BaseColor) {\n function HSL(h, s, l, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n\n if ( BaseColor ) HSL.__proto__ = BaseColor;\n HSL.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSL.prototype.constructor = HSL;\n\n HSL.prototype.toRGB = function toRGB () {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSL.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n HSL.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSL;\n}(BaseColor));\n\nfunction hue2rgb(p, q, s) {\n var t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nfunction alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n var m, ret;\n\n if (!value || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n var color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n } else if ((m = /^color\\(\\s*srgb\\s*([0-9]*\\.?[0-9]+)\\s+([0-9]*\\.?[0-9]+)\\s+([0-9]*\\.?[0-9]+)\\s*(\\/\\s+([0-9]*\\.?[0-9]+))?\\)/.exec(color))) {\n ret = new RGB(\n parseFloat(m[1]),\n parseFloat(m[2]),\n parseFloat(m[3]),\n parseFloat(m[5] || '1'));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nvar DARK_TRESHOLD = 180;\n\nvar Color = (function (Class) {\n function Color(value) {\n var this$1 = this;\n\n Class.call(this);\n\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n var channels = processor(parts);\n this$1.r = channels[0];\n this$1.g = channels[1];\n this$1.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n }\n\n if ( Class ) Color.__proto__ = Class;\n Color.prototype = Object.create( Class && Class.prototype );\n Color.prototype.constructor = Color;\n\n Color.prototype.toHex = function toHex () {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n };\n\n Color.prototype.resolveColor = function resolveColor (value) {\n var color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n };\n\n Color.prototype.normalizeByte = function normalizeByte (value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n };\n\n Color.prototype.padDigit = function padDigit (value) {\n return (value.length === 1) ? \"0\" + value : value;\n };\n\n Color.prototype.brightness = function brightness (value) {\n var round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n };\n\n Color.prototype.percBrightness = function percBrightness () {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n };\n\n Color.prototype.isDark = function isDark () {\n return this.percBrightness() < DARK_TRESHOLD;\n };\n\n Color.fromBytes = function fromBytes (r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n };\n\n Color.fromRGB = function fromRGB (r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n };\n\n Color.fromHSV = function fromHSV (h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n };\n\n Color.fromHSL = function fromHSL (h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n };\n\n return Color;\n}(Class));\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","import { Color } from '@progress/kendo-drawing';\nimport { WHITE, BLACK } from './constants';\n\nfunction autoTextColor(color) {\n var isDark = new Color(color).isDark();\n if (isDark) {\n return WHITE;\n }\n\n return BLACK;\n}\n\nexport default autoTextColor;\n","var DELETED = {};\n\nvar LegacySet = function LegacySet(values) {\n var this$1 = this;\n\n this._index = {};\n this._values = values ? values.slice(0) : [];\n\n for (var i = 0; i < this._values.length; i++) {\n this$1._index[this$1._values[i]] = i;\n }\n};\n\nvar prototypeAccessors = { size: { configurable: true } };\n\nLegacySet.prototype.values = function values () {\n return this._values.filter(function (item) { return item !== DELETED; });\n};\n\nLegacySet.prototype.has = function has (value) {\n return this._index[value] !== undefined;\n};\n\nLegacySet.prototype.add = function add (value) {\n if (!this.has(value)) {\n this._index[value] = this._values.length;\n this._values.push(value);\n }\n};\n\nLegacySet.prototype.delete = function delete$1 (value) {\n var index = this._index[value];\n if (index !== undefined) {\n this._values[index] = DELETED;\n delete this._index[value];\n }\n};\n\nLegacySet.prototype.clear = function clear () {\n this._index = {};\n this._values = [];\n};\n\nprototypeAccessors.size.get = function () {\n return this._values.length;\n};\n\nObject.defineProperties( LegacySet.prototype, prototypeAccessors );\n\nvar SetWrapper = function SetWrapper(values) {\n this._set = new Set(values);\n};\n\nvar prototypeAccessors$1 = { size: { configurable: true } };\n\nSetWrapper.prototype.values = function values () {\n return Array.from(this._set);\n};\n\nSetWrapper.prototype.has = function has (value) {\n return this._set.has(value);\n};\n\nSetWrapper.prototype.add = function add (value) {\n this._set.add(value);\n};\n\nSetWrapper.prototype.delete = function delete$2 (value) {\n this._set.delete(value);\n};\n\nSetWrapper.prototype.clear = function clear () {\n this._set.clear();\n};\n\nprototypeAccessors$1.size.get = function () {\n return this._set.size;\n};\n\nObject.defineProperties( SetWrapper.prototype, prototypeAccessors$1 );\n\n// TODO: Drop LegacySet when removing support for IE10\nvar supportsSet = function () {\n var supported = false;\n\n if (typeof Set === 'function') {\n var set = new Set([1]);\n supported = set.has(1);\n }\n\n return supported;\n};\n\nexport default function createHashSet(values) {\n if (supportsSet()) {\n return new SetWrapper(values);\n }\n\n return new LegacySet(values);\n}\n","export default function defaultErrorHandler(error) {\n throw error;\n}\n","var keys = {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n};\n\nexport default keys;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function autoMajorUnit(min, max) {\n var diff = round(max - min, DEFAULT_PRECISION - 1);\n\n if (diff === 0) {\n if (max === 0) {\n return 0.1;\n }\n\n diff = Math.abs(max);\n }\n\n var scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n var relativeValue = round((diff / scale), DEFAULT_PRECISION);\n var scaleMultiplier = 1;\n\n if (relativeValue < 1.904762) {\n scaleMultiplier = 0.2;\n } else if (relativeValue < 4.761904) {\n scaleMultiplier = 0.5;\n } else if (relativeValue < 9.523809) {\n scaleMultiplier = 1;\n } else {\n scaleMultiplier = 2;\n }\n\n return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n}","import { COORD_PRECISION } from '../common/constants';\nimport { Class, rad, round } from '../common';\n\nvar Point = (function (Class) {\n function Point(x, y) {\n Class.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n if ( Class ) Point.__proto__ = Class;\n Point.prototype = Object.create( Class && Class.prototype );\n Point.prototype.constructor = Point;\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.equals = function equals (point) {\n return point && this.x === point.x && this.y === point.y;\n };\n\n Point.prototype.rotate = function rotate (center, degrees) {\n var theta = rad(degrees);\n var cosT = Math.cos(theta);\n var sinT = Math.sin(theta);\n var cx = center.x;\n var cy = center.y;\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = round(\n cx + (x - cx) * cosT + (y - cy) * sinT,\n COORD_PRECISION\n );\n\n this.y = round(\n cy + (y - cy) * cosT - (x - cx) * sinT,\n COORD_PRECISION\n );\n\n return this;\n };\n\n Point.prototype.multiply = function multiply (a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.onCircle = function onCircle (center, angle, radius) {\n var radians = rad(angle);\n\n return new Point(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n };\n\n return Point;\n}(Class));\n\n\nexport default Point;","import { Class } from '../common';\n\nvar HasObservers = (function (Class) {\n function HasObservers () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) HasObservers.__proto__ = Class;\n HasObservers.prototype = Object.create( Class && Class.prototype );\n HasObservers.prototype.constructor = HasObservers;\n\n HasObservers.prototype.observers = function observers () {\n this._observers = this._observers || [];\n return this._observers;\n };\n\n HasObservers.prototype.addObserver = function addObserver (element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n };\n\n HasObservers.prototype.removeObserver = function removeObserver (element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n };\n\n HasObservers.prototype.trigger = function trigger (methodName, event) {\n var observers = this._observers;\n\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n };\n\n HasObservers.prototype.optionsChange = function optionsChange (e) {\n if ( e === void 0 ) e = {};\n\n e.element = this;\n this.trigger(\"optionsChange\", e);\n };\n\n HasObservers.prototype.geometryChange = function geometryChange () {\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n HasObservers.prototype.suspend = function suspend () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n };\n\n HasObservers.prototype.resume = function resume () {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n };\n\n HasObservers.prototype._observerField = function _observerField (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n };\n\n return HasObservers;\n}(Class));\n\nexport default HasObservers;\n\n","function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n}\n\nfunction getAccessor(field) {\n return function() {\n return this[field];\n };\n}\n\nfunction defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}\n\nvar withAccessors = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withAccessors;\n","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import withAccessors from '../mixins/with-accessors';\nimport HasObservers from '../core/has-observers';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\n\nvar Point = (function (superclass) {\n function Point(x, y) {\n superclass.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n if ( superclass ) Point.__proto__ = superclass;\n Point.prototype = Object.create( superclass && superclass.prototype );\n Point.prototype.constructor = Point;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Point.prototype.equals = function equals (other) {\n return other && other.x === this.x && other.y === this.y;\n };\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n };\n\n Point.prototype.translate = function translate (x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.translateWith = function translateWith (point) {\n return this.translate(point.x, point.y);\n };\n\n Point.prototype.move = function move (x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n };\n\n Point.prototype.scale = function scale (scaleX, scaleY) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n };\n\n Point.prototype.transform = function transform (transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.transformCopy = function transformCopy (transformation) {\n var point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.prototype.round = function round$1 (digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n };\n\n Point.prototype.toString = function toString (digits, separator) {\n if ( separator === void 0 ) separator = \" \";\n\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n };\n\n Point.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n };\n\n Point.min = function min () {\n var arguments$1 = arguments;\n\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n };\n\n Point.max = function max () {\n var arguments$1 = arguments;\n\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n };\n\n Point.minPoint = function minPoint () {\n return new Point(MIN_NUM, MIN_NUM);\n };\n\n Point.maxPoint = function maxPoint () {\n return new Point(MAX_NUM, MAX_NUM);\n };\n\n staticAccessors.ZERO.get = function () {\n return new Point(0, 0);\n };\n\n Object.defineProperties( Point, staticAccessors );\n\n return Point;\n}(withAccessors(HasObservers, [ \"x\", \"y\" ])));\n\nexport default Point;\n","import HasObservers from '../core/has-observers';\nimport withAccessors from '../mixins/with-accessors';\nimport { defined, round } from '../util';\n\n\nvar Size = (function (superclass) {\n function Size(width, height) {\n superclass.call(this);\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n if ( superclass ) Size.__proto__ = superclass;\n Size.prototype = Object.create( superclass && superclass.prototype );\n Size.prototype.constructor = Size;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Size.prototype.equals = function equals (other) {\n return other && other.width === this.width && other.height === this.height;\n };\n\n Size.prototype.clone = function clone () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n };\n\n Size.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n };\n\n staticAccessors.ZERO.get = function () {\n return new Size(0, 0);\n };\n\n Object.defineProperties( Size, staticAccessors );\n\n return Size;\n}(withAccessors(HasObservers, [ \"width\", \"height\" ])));\n\nexport default Size;\n","import HasObservers from '../core/has-observers';\nimport Point from './point';\nimport Size from './size';\n\nvar Rect = (function (HasObservers) {\n function Rect(origin, size, cornerRadius) {\n if ( origin === void 0 ) origin = new Point();\n if ( size === void 0 ) size = new Size();\n if ( cornerRadius === void 0 ) cornerRadius = 0;\n\n HasObservers.call(this);\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n if ( HasObservers ) Rect.__proto__ = HasObservers;\n Rect.prototype = Object.create( HasObservers && HasObservers.prototype );\n Rect.prototype.constructor = Rect;\n\n Rect.prototype.clone = function clone () {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n };\n\n Rect.prototype.equals = function equals (other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n };\n\n Rect.prototype.setOrigin = function setOrigin (value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getOrigin = function getOrigin () {\n return this.origin;\n };\n\n Rect.prototype.setCornerRadius = function setCornerRadius (radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getCornerRadius = function getCornerRadius () {\n return this.cornerRadius;\n };\n\n Rect.prototype.setSize = function setSize (value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getSize = function getSize () {\n return this.size;\n };\n\n Rect.prototype.width = function width () {\n return this.size.width;\n };\n\n Rect.prototype.height = function height () {\n return this.size.height;\n };\n\n Rect.prototype.topLeft = function topLeft () {\n return this.origin.clone();\n };\n\n Rect.prototype.bottomRight = function bottomRight () {\n return this.origin.clone().translate(this.width(), this.height());\n };\n\n Rect.prototype.topRight = function topRight () {\n return this.origin.clone().translate(this.width(), 0);\n };\n\n Rect.prototype.bottomLeft = function bottomLeft () {\n return this.origin.clone().translate(0, this.height());\n };\n\n Rect.prototype.center = function center () {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n };\n\n Rect.prototype.bbox = function bbox (matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n };\n\n Rect.prototype.transformCopy = function transformCopy (m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n };\n\n Rect.prototype.expand = function expand (x, y) {\n if ( y === void 0 ) y = x;\n\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n };\n\n Rect.prototype.expandCopy = function expandCopy (x, y) {\n return this.clone().expand(x, y);\n };\n\n Rect.prototype.containsPoint = function containsPoint (point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n };\n\n Rect.fromPoints = function fromPoints () {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n };\n\n Rect.union = function union (a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n };\n\n Rect.intersect = function intersect (a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n var rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n };\n\n return Rect;\n}(HasObservers));\n\nexport default Rect;\n","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Point from './point';\n\nimport { X, Y, TOP, BOTTOM, LEFT, RIGHT, CENTER, WIDTH, HEIGHT } from '../common/constants';\nimport { Class, defined, getSpacing, inArray, isArray, rad } from '../common';\n\nvar Box = (function (Class) {\n function Box(x1, y1, x2, y2) {\n Class.call(this);\n\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n }\n\n if ( Class ) Box.__proto__ = Class;\n Box.prototype = Object.create( Class && Class.prototype );\n Box.prototype.constructor = Box;\n\n Box.prototype.equals = function equals (box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n };\n\n Box.prototype.width = function width () {\n return this.x2 - this.x1;\n };\n\n Box.prototype.height = function height () {\n return this.y2 - this.y1;\n };\n\n Box.prototype.translate = function translate (dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n\n return this;\n };\n\n Box.prototype.move = function move (x, y) {\n var height = this.height();\n var width = this.width();\n\n if (defined(x)) {\n this.x1 = x;\n this.x2 = this.x1 + width;\n }\n\n if (defined(y)) {\n this.y1 = y;\n this.y2 = this.y1 + height;\n }\n\n return this;\n };\n\n Box.prototype.wrap = function wrap (targetBox) {\n this.x1 = Math.min(this.x1, targetBox.x1);\n this.y1 = Math.min(this.y1, targetBox.y1);\n this.x2 = Math.max(this.x2, targetBox.x2);\n this.y2 = Math.max(this.y2, targetBox.y2);\n\n return this;\n };\n\n Box.prototype.wrapPoint = function wrapPoint (point) {\n var arrayPoint = isArray(point);\n var x = arrayPoint ? point[0] : point.x;\n var y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box(x, y, x, y));\n\n return this;\n };\n\n Box.prototype.snapTo = function snapTo (targetBox, axis) {\n\n if (axis === X || !axis) {\n this.x1 = targetBox.x1;\n this.x2 = targetBox.x2;\n }\n\n if (axis === Y || !axis) {\n this.y1 = targetBox.y1;\n this.y2 = targetBox.y2;\n }\n\n return this;\n };\n\n Box.prototype.alignTo = function alignTo (targetBox, anchor) {\n var height = this.height();\n var width = this.width();\n var axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n var offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n var targetCenter = targetBox.center();\n var center = this.center();\n\n this.x1 += targetCenter.x - center.x;\n this.y1 += targetCenter.y - center.y;\n } else if (anchor === TOP || anchor === LEFT) {\n this[axis + 1] = targetBox[axis + 1] - offset;\n } else {\n this[axis + 1] = targetBox[axis + 2];\n }\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n };\n\n Box.prototype.shrink = function shrink (dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n };\n\n Box.prototype.expand = function expand (dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n };\n\n Box.prototype.pad = function pad (padding) {\n var spacing = getSpacing(padding);\n\n this.x1 -= spacing.left;\n this.x2 += spacing.right;\n this.y1 -= spacing.top;\n this.y2 += spacing.bottom;\n\n return this;\n };\n\n Box.prototype.unpad = function unpad (padding) {\n var spacing = getSpacing(padding);\n\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n\n return this.pad(spacing);\n };\n\n Box.prototype.clone = function clone () {\n return new Box(this.x1, this.y1, this.x2, this.y2);\n };\n\n Box.prototype.center = function center () {\n return new Point(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n };\n\n Box.prototype.containsPoint = function containsPoint (point) {\n\n return point.x >= this.x1 && point.x <= this.x2 &&\n point.y >= this.y1 && point.y <= this.y2;\n };\n\n Box.prototype.points = function points () {\n return [\n new Point(this.x1, this.y1),\n new Point(this.x2, this.y1),\n new Point(this.x2, this.y2),\n new Point(this.x1, this.y2)\n ];\n };\n\n Box.prototype.getHash = function getHash () {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n };\n\n Box.prototype.overlaps = function overlaps (box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n };\n\n Box.prototype.rotate = function rotate (rotation) {\n var width = this.width();\n var height = this.height();\n var ref = this.center();\n var cx = ref.x;\n var cy = ref.y;\n\n var r1 = rotatePoint(0, 0, cx, cy, rotation);\n var r2 = rotatePoint(width, 0, cx, cy, rotation);\n var r3 = rotatePoint(width, height, cx, cy, rotation);\n var r4 = rotatePoint(0, height, cx, cy, rotation);\n\n width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n };\n\n Box.prototype.toRect = function toRect () {\n return new geom.Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n };\n\n Box.prototype.hasSize = function hasSize () {\n return this.width() !== 0 && this.height() !== 0;\n };\n\n Box.prototype.align = function align (targetBox, axis, alignment) {\n var c1 = axis + 1;\n var c2 = axis + 2;\n var sizeFunc = axis === X ? WIDTH : HEIGHT;\n var size = this[sizeFunc]();\n\n if (inArray(alignment, [ LEFT, TOP ])) {\n this[c1] = targetBox[c1];\n this[c2] = this[c1] + size;\n } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n this[c2] = targetBox[c2];\n this[c1] = this[c2] - size;\n } else if (alignment === CENTER) {\n this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n this[c2] = this[c1] + size;\n }\n };\n\n return Box;\n}(Class));\n\nfunction rotatePoint(x, y, cx, cy, angle) {\n var theta = rad(angle);\n\n return new Point(\n cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n );\n}\n\nexport default Box;\n","import Box from './box';\nimport Point from './point';\nimport { COORD_PRECISION, MAX_VALUE, MIN_VALUE } from '../common/constants';\nimport { Class, clockwise, rad, round } from '../common';\n\nvar Ring = (function (Class) {\n function Ring(center, innerRadius, radius, startAngle, angle) {\n Class.call(this);\n\n this.center = center;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.startAngle = startAngle;\n this.angle = angle;\n }\n\n if ( Class ) Ring.__proto__ = Class;\n Ring.prototype = Object.create( Class && Class.prototype );\n Ring.prototype.constructor = Ring;\n\n Ring.prototype.clone = function clone () {\n return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n };\n\n Ring.prototype.middle = function middle () {\n return this.startAngle + this.angle / 2;\n };\n\n Ring.prototype.setRadius = function setRadius (newRadius, innerRadius) {\n if (innerRadius) {\n this.innerRadius = newRadius;\n } else {\n this.radius = newRadius;\n }\n\n return this;\n };\n\n // TODO: Remove and replace with Point.onCircle\n Ring.prototype.point = function point (angle, innerRadius) {\n var radianAngle = rad(angle);\n var ax = Math.cos(radianAngle);\n var ay = Math.sin(radianAngle);\n var radius = innerRadius ? this.innerRadius : this.radius;\n var x = round(this.center.x - (ax * radius), COORD_PRECISION);\n var y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n return new Point(x, y);\n };\n\n Ring.prototype.adjacentBox = function adjacentBox (distance, width, height) {\n var sector = this.clone().expand(distance);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n var hw = width / 2;\n var hh = height / 2;\n var sa = Math.sin(rad(midAndle));\n var ca = Math.cos(rad(midAndle));\n var x = midPoint.x - hw;\n var y = midPoint.y - hh;\n\n if (Math.abs(sa) < 0.9) {\n x += hw * -ca / Math.abs(ca);\n }\n\n if (Math.abs(ca) < 0.9) {\n y += hh * -sa / Math.abs(sa);\n }\n\n return new Box(x, y, x + width, y + height);\n };\n\n Ring.prototype.containsPoint = function containsPoint (p) {\n var center = this.center;\n var innerRadius = this.innerRadius;\n var radius = this.radius;\n var startAngle = this.startAngle;\n var endAngle = this.startAngle + this.angle;\n var dx = p.x - center.x;\n var dy = p.y - center.y;\n var vector = new Point(dx, dy);\n var startPoint = this.point(startAngle);\n var startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n var endPoint = this.point(endAngle);\n var endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n var dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n !clockwise(endVector, vector) &&\n dist >= innerRadius * innerRadius && dist <= radius * radius;\n };\n\n Ring.prototype.getBBox = function getBBox () {\n var this$1 = this;\n\n var box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n var startAngle = round(this.startAngle % 360);\n var endAngle = round((startAngle + this.angle) % 360);\n var innerRadius = this.innerRadius;\n var allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n var startAngleIndex = allAngles.indexOf(startAngle);\n var endAngleIndex = allAngles.indexOf(endAngle);\n var angles;\n\n if (startAngle === endAngle) {\n angles = allAngles;\n } else {\n if (startAngleIndex < endAngleIndex) {\n angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n } else {\n angles = [].concat(\n allAngles.slice(0, endAngleIndex + 1),\n allAngles.slice(startAngleIndex, allAngles.length)\n );\n }\n }\n\n for (var i = 0; i < angles.length; i++) {\n var point = this$1.point(angles[i]);\n box.wrapPoint(point);\n box.wrapPoint(point, innerRadius);\n }\n\n if (!innerRadius) {\n box.wrapPoint(this.center);\n }\n\n return box;\n };\n\n Ring.prototype.expand = function expand (value) {\n this.radius += value;\n return this;\n };\n\n return Ring;\n}(Class));\n\nfunction numericComparer(a, b) {\n return a - b;\n}\n\nexport default Ring;","import Ring from './ring';\n\nvar Sector = (function (Ring) {\n function Sector(center, radius, startAngle, angle) {\n Ring.call(this, center, 0, radius, startAngle, angle);\n }\n\n if ( Ring ) Sector.__proto__ = Ring;\n Sector.prototype = Object.create( Ring && Ring.prototype );\n Sector.prototype.constructor = Sector;\n\n Sector.prototype.expand = function expand (value) {\n return Ring.prototype.expand.call(this, value);\n };\n\n Sector.prototype.clone = function clone () {\n return new Sector(this.center, this.radius, this.startAngle, this.angle);\n };\n\n Sector.prototype.setRadius = function setRadius (newRadius) {\n this.radius = newRadius;\n\n return this;\n };\n\n return Sector;\n}(Ring));\n\nexport default Sector;","var PRECISION = 10;\n\nexport { PRECISION };","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance) {\n if ( tolerance === void 0 ) tolerance = PRECISION;\n\n return round(Math.abs(a - b), tolerance) === 0;\n}","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n}","import HasObservers from '../core/has-observers';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nvar Transformation = (function (HasObservers) {\n function Transformation(matrix) {\n if ( matrix === void 0 ) matrix = Matrix.unit();\n\n HasObservers.call(this);\n\n this._matrix = matrix;\n }\n\n if ( HasObservers ) Transformation.__proto__ = HasObservers;\n Transformation.prototype = Object.create( HasObservers && HasObservers.prototype );\n Transformation.prototype.constructor = Transformation;\n\n Transformation.prototype.clone = function clone () {\n return new Transformation(\n this._matrix.clone()\n );\n };\n\n Transformation.prototype.equals = function equals (other) {\n return other &&\n other._matrix.equals(this._matrix);\n };\n\n Transformation.prototype.translate = function translate (x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n if ( origin === void 0 ) origin = null;\n\n var originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.multiply = function multiply (transformation) {\n var matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.matrix = function matrix (value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n };\n\n Transformation.prototype._optionsChange = function _optionsChange () {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n };\n\n return Transformation;\n}(HasObservers));\n\nexport default Transformation;\n","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n}","import HasObservers from '../core/has-observers';\nimport { deg, rad, round } from '../util';\nimport withAccessors from '../mixins/with-accessors';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\n\nvar MAX_INTERVAL = 45;\nvar pow = Math.pow;\nvar accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\nvar Arc = (function (superclass) {\n function Arc(center, options) {\n if ( center === void 0 ) center = new Point();\n if ( options === void 0 ) options = {};\n\n superclass.call(this);\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n if ( superclass ) Arc.__proto__ = superclass;\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n\n Arc.prototype.clone = function clone () {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n };\n\n Arc.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Arc.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Arc.prototype.pointAt = function pointAt (angle) {\n var center = this.center;\n var radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n };\n\n Arc.prototype.curvePoints = function curvePoints () {\n var this$1 = this;\n\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [ this.pointAt(startAngle) ];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n };\n\n Arc.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = (void 0);\n if (currentAngleX < endAngle) {\n currentPointX = this$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n var currentPointY = (void 0);\n if (currentAngleY < endAngle) {\n currentPointY = this$1.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Arc.prototype._arcInterval = function _arcInterval () {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n\n if (anticlockwise) {\n var oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n };\n\n Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n };\n\n Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n var radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n };\n\n Arc.prototype.containsPoint = function containsPoint (point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n\n Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n var arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n };\n\n return Arc;\n}(withAccessors(HasObservers, accessors)));\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation; if ( rotation === void 0 ) rotation = 0;\n\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n var sign = largeArc !== swipe ? 1 : -1;\n\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n\n var delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n var cxT = constT * (rx * yT) / ry;\n var cyT = - constT * (ry * xT) / rx;\n\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n}\n\nfunction bboxStartAngle(angle, start) {\n var startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n}\n\nexport default Arc;\n","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n}","import HasObservers from '../core/has-observers';\n\nvar push = [].push;\nvar pop = [].pop;\nvar splice = [].splice;\nvar shift = [].shift;\nvar slice = [].slice;\nvar unshift = [].unshift;\n\nvar ElementsArray = (function (HasObservers) {\n function ElementsArray(array) {\n if ( array === void 0 ) array = [];\n\n HasObservers.call(this);\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n if ( HasObservers ) ElementsArray.__proto__ = HasObservers;\n ElementsArray.prototype = Object.create( HasObservers && HasObservers.prototype );\n ElementsArray.prototype.constructor = ElementsArray;\n\n ElementsArray.prototype.elements = function elements (value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n };\n\n ElementsArray.prototype.push = function push$1 () {\n var elements = arguments;\n var result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.slice = function slice$1 () {\n return slice.call(this);\n };\n\n ElementsArray.prototype.pop = function pop$1 () {\n var length = this.length;\n var result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.splice = function splice (index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n };\n\n ElementsArray.prototype.shift = function shift$1 () {\n var length = this.length;\n var result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.unshift = function unshift$1 () {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.indexOf = function indexOf (element) {\n var this$1 = this;\n\n var length = this.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (this$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n };\n\n ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n };\n\n ElementsArray.prototype._add = function _add (elements) {\n this._setObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._remove = function _remove (elements) {\n this._clearObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._setObserver = function _setObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1);\n }\n };\n\n ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1);\n }\n };\n\n ElementsArray.prototype._change = function _change () {};\n\n return ElementsArray;\n}(HasObservers));\n\nexport default ElementsArray;\n","import ElementsArray from './elements-array';\n\nvar GeometryElementsArray = (function (ElementsArray) {\n function GeometryElementsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) GeometryElementsArray.__proto__ = ElementsArray;\n GeometryElementsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n\n GeometryElementsArray.prototype._change = function _change () {\n this.geometryChange();\n };\n\n return GeometryElementsArray;\n}(ElementsArray));\n\nexport default GeometryElementsArray;","import { Class } from '../common';\nimport HasObservers from './has-observers';\nimport { defined } from '../util';\n\n\nvar toString = {}.toString;\n\nvar OptionsStore = (function (HasObservers) {\n function OptionsStore(options, prefix) {\n var this$1 = this;\n if ( prefix === void 0 ) prefix = \"\";\n\n HasObservers.call(this);\n\n this.prefix = prefix;\n\n for (var field in options) {\n var member = options[field];\n member = this$1._wrap(member, field);\n this$1[field] = member;\n }\n }\n\n if ( HasObservers ) OptionsStore.__proto__ = HasObservers;\n OptionsStore.prototype = Object.create( HasObservers && HasObservers.prototype );\n OptionsStore.prototype.constructor = OptionsStore;\n\n OptionsStore.prototype.get = function get (field) {\n var parts = field.split(\".\");\n var result = this;\n\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n\n return result;\n };\n\n OptionsStore.prototype.set = function set (field, value) {\n var current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n };\n\n OptionsStore.prototype._set = function _set (field, value) {\n var this$1 = this;\n\n var composite = field.indexOf(\".\") >= 0;\n var parentObj = this;\n var fieldName = field;\n\n if (composite) {\n var parts = fieldName.split(\".\");\n var prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n var obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n };\n\n OptionsStore.prototype._clear = function _clear (field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n };\n\n OptionsStore.prototype._wrap = function _wrap (object, field) {\n var type = toString.call(object);\n var wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n };\n\n return OptionsStore;\n}(HasObservers));\n\nexport default OptionsStore;\n","var DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n};\n\nvar SOLID = \"solid\";\nvar BUTT = \"butt\";\nvar PATTERN = \"Pattern\";\n\nexport { DASH_ARRAYS, SOLID, BUTT, PATTERN };\n","import OptionsStore from '../core/options-store';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\nimport { PATTERN } from '../core/constants';\n\nvar Element = (function (HasObservers) {\n function Element(options) {\n HasObservers.call(this);\n\n this._initOptions(options);\n }\n\n if ( HasObservers ) Element.__proto__ = HasObservers;\n Element.prototype = Object.create( HasObservers && HasObservers.prototype );\n Element.prototype.constructor = Element;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Element.prototype._initOptions = function _initOptions (options) {\n if ( options === void 0 ) options = {};\n\n var clip = options.clip;\n var transform = options.transform;\n\n if (transform) {\n options.transform = createTransform(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n };\n\n Element.prototype.transform = function transform (value) {\n if (defined(value)) {\n this.options.set(\"transform\", createTransform(value));\n } else {\n return this.options.get(\"transform\");\n }\n };\n\n Element.prototype.parentTransform = function parentTransform () {\n var element = this;\n var parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return createTransform(parentMatrix);\n }\n };\n\n Element.prototype.currentTransform = function currentTransform (parentTransform) {\n if ( parentTransform === void 0 ) parentTransform = this.parentTransform();\n\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return createTransform(combinedMatrix);\n }\n };\n\n Element.prototype.visible = function visible (value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n };\n\n Element.prototype.clip = function clip (value) {\n var options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n };\n\n Element.prototype.opacity = function opacity (value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n };\n\n Element.prototype.className = function className (value) {\n if (defined(value)) {\n this.options.set(\"className\", value);\n return this;\n }\n\n return this.options.get(\"className\");\n };\n\n Element.prototype.clippedBBox = function clippedBBox (transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n };\n\n Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var transform = this.currentTransform(parentTransform);\n var transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n };\n\n Element.prototype._hasFill = function _hasFill () {\n var fill = this.options.fill;\n return fill && (fill.nodeType === PATTERN || !isTransparent(fill.color));\n };\n\n Element.prototype._hasStroke = function _hasStroke () {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n };\n\n Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n return this.bbox(transformation);\n };\n\n Object.defineProperties( Element.prototype, prototypeAccessors );\n\n return Element;\n}(HasObservers));\n\nexport default Element;\n","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n}","export default function calculateCurveAt(t, field, points) {\n var t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n}","export default function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nvar ComplexNumber = (function (Class) {\n function ComplexNumber(real, img) {\n if ( real === void 0 ) real = 0;\n if ( img === void 0 ) img = 0;\n\n Class.call(this);\n\n this.real = real;\n this.img = img;\n }\n\n if ( Class ) ComplexNumber.__proto__ = Class;\n ComplexNumber.prototype = Object.create( Class && Class.prototype );\n ComplexNumber.prototype.constructor = ComplexNumber;\n\n ComplexNumber.prototype.add = function add (cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n };\n\n ComplexNumber.prototype.addConstant = function addConstant (value) {\n return new ComplexNumber(this.real + value, this.img);\n };\n\n ComplexNumber.prototype.negate = function negate () {\n return new ComplexNumber(-this.real, -this.img);\n };\n\n ComplexNumber.prototype.multiply = function multiply (cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n };\n\n ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n return new ComplexNumber(this.real * value, this.img * value);\n };\n\n ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n var rad = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n };\n\n ComplexNumber.prototype.equals = function equals (cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n };\n\n ComplexNumber.prototype.isReal = function isReal () {\n return this.img === 0;\n };\n\n return ComplexNumber;\n}(Class));\n\nexport default ComplexNumber;","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0,1);\n var b3a = -b / (3 * a);\n var x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n var result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n\n for (var idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n}","export default function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n}","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}\n\nvar withPoints = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n definePointAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withPoints;\n","import HasObservers from '../core/has-observers';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\nimport withPoints from '../mixins/with-points';\n\n\nvar points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\nvar Segment = (function (superclass) {\n function Segment(anchor, controlIn, controlOut) {\n superclass.call(this);\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n if ( superclass ) Segment.__proto__ = superclass;\n Segment.prototype = Object.create( superclass && superclass.prototype );\n Segment.prototype.constructor = Segment;\n\n Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n };\n\n Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n return Rect.fromPoints(p1, p2);\n };\n\n Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n var points = [ p1, cp1, cp2, p2 ];\n var extremesX = this._curveExtremesFor(points, \"x\");\n var extremesY = this._curveExtremesFor(points, \"y\");\n var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n var yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n };\n\n Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n var extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n };\n\n Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = - 2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n var max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n var intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n };\n\n Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n var points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n var rotation = transform().rotate(45, point);\n var rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n };\n\n Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n };\n\n Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n var isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n };\n\n return Segment;\n}(withPoints(HasObservers, points)));\n\nfunction arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n\n for (var i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexport default Segment;\n","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, \"x\");\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n}","import { Point, Segment } from '../../geometry';\nimport { last, round } from '../../util';\n\nvar WEIGHT = 0.333;\nvar EXTREMUM_ALLOWED_DEVIATION = 0.01;\nvar X = \"x\";\nvar Y = \"y\";\n\nexport function pointsToCurve(pointsIn, closed) {\n var points = pointsIn.slice(0);\n var segments = [];\n var length = points.length;\n\n if (length > 2) {\n removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = getTangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = getControlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = getTangent(p0, p1, X,Y);\n initialControlPoint = firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = getControlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = getControlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = getTangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n}\n\nexport function pointsToClosedCurve(pointsIn) {\n return pointsToCurve(pointsIn, true);\n}\n\nexport function removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n}\n\nexport function invertAxis(p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = lineFunction(p0,p1);\n var y2 = calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n}\n\nexport function isLine(p0, p1, p2) {\n var fn = lineFunction(p0, p1);\n var y2 = calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n}\n\nexport function lineFunction(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n}\n\nexport function getControlPoints(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (isLine(p0, p1, p2)) {\n tangent = getTangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: isMonotonicByField(p0, p1, p2, X),\n y: isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = getTangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstCP = firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n restrictControlPoint(p0, p1, secondCP, tangent);\n restrictControlPoint(p1, p2, firstCP, tangent);\n }\n\n return [ secondCP, firstCP ];\n}\n\nexport function restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n}\n\nexport function getTangent(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n}\n\nexport function isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n}\n\nexport function firstControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n}\n\nexport function secondControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n}\n\nexport function point(xValue, yValue, xField, yField) {\n var controlPoint = new Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n}\n\nexport function calculateFunction(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n}\n\nexport function numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n","import { defined } from '../util';\n\nvar GRADIENT = \"Gradient\";\n\nvar paintable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.fill = function fill (color, opacity) {\n var options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n };\n\n anonymous.prototype.stroke = function stroke (color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default paintable;\n","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nvar IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nvar measurable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n var strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n };\n\n anonymous.prototype.geometryChange = function geometryChange () {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default measurable;","import Point from '../geometry/point';\nimport { last } from '../util';\n\nvar ShapeMap = {\n l: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 2) {\n var point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = (void 0);\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n var lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (var i = 0; i < parameters.length; i += 2) {\n var endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n}\n\nfunction reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n}\n\nvar third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n}\n\nexport default ShapeMap;","import Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nvar SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nvar SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nvar MOVE = \"m\";\nvar CLOSE = \"z\";\n\nfunction parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n}\n\nfunction parsePath(pathInstance, str) {\n var position = new Point();\n var previousCommand;\n\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n}\n\nexport default parsePath;\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport { pointsToCurve } from './utils/points-to-curve';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport parsePath from '../parsing/parse-path';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport limitValue from '../util/limit-value';\n\nvar SPACE = ' ';\nvar printPoints = function (precision) { return function () {\n var points = [], len = arguments.length;\n while ( len-- ) points[ len ] = arguments[ len ];\n\n return points.map(function (p) { return p.toString(precision); }).join(SPACE);\n; } };\nvar segmentType = function (segmentStart, segmentEnd) { return segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L'; };\n\nexport var Path = (function (superclass) {\n function Path(options) {\n superclass.call(this, options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n }\n\n if ( superclass ) Path.__proto__ = superclass;\n Path.prototype = Object.create( superclass && superclass.prototype );\n Path.prototype.constructor = Path;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return 'Path';\n };\n\n Path.prototype.moveTo = function moveTo (x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n };\n\n Path.prototype.lineTo = function lineTo (x, y) {\n var point = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point);\n\n this.segments.push(segment);\n\n return this;\n };\n\n Path.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n };\n\n Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n var arc = new Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n };\n\n Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n };\n\n Path.prototype._addArcSegments = function _addArcSegments (arc) {\n var this$1 = this;\n\n this.suspend();\n\n var curvePoints = arc.curvePoints();\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n };\n\n Path.prototype.close = function close () {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n };\n\n Path.prototype.rawBBox = function rawBBox () {\n return this._bbox();\n };\n\n Path.prototype.toString = function toString (digits) {\n var output = '';\n\n var segments = this.segments;\n var length = segments.length;\n if (length > 0) {\n var parts = [];\n var print = printPoints(digits);\n var currentType;\n\n for (var i = 1; i < length; i++) {\n var type = segmentType(segments[i - 1], segments[i]);\n if (type !== currentType) {\n currentType = type;\n parts.push(type);\n }\n\n if (type === 'L') {\n parts.push(print(segments[i].anchor()));\n } else {\n parts.push(print(\n segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()\n ));\n }\n }\n\n output = 'M' + print(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (this.options.closed) {\n output += 'Z';\n }\n }\n\n return output;\n };\n\n Path.prototype._containsPoint = function _containsPoint (point) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n\n return intersectionsCount % 2 !== 0;\n };\n\n Path.prototype._isOnPath = function _isOnPath (point, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, 'start')) {\n return true;\n }\n\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n };\n\n Path.prototype._bbox = function _bbox (matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n };\n\n Path.parse = function parse (str, options) {\n return MultiPath.parse(str, options);\n };\n\n Path.fromRect = function fromRect (rect, options) {\n var path = new Path(options);\n var ref = rect.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n var origin = rect.origin;\n var x = origin.x;\n var y = origin.y;\n var width = rect.width();\n var height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n };\n\n Path.fromPoints = function fromPoints (points, options) {\n if (points) {\n var path = new Path(options);\n\n for (var i = 0; i < points.length; i++) {\n var point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n\n return path;\n }\n };\n\n Path.curveFromPoints = function curveFromPoints (points, options) {\n if (points) {\n var segments = pointsToCurve(points);\n var path = new Path(options);\n path.segments.push.apply(path.segments, segments);\n\n return path;\n }\n };\n\n Path.fromArc = function fromArc (arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n };\n\n Object.defineProperties( Path.prototype, prototypeAccessors );\n\n return Path;\n}(paintable(measurable(Element))));\n\nexport var MultiPath = (function (superclass) {\n function MultiPath(options) {\n superclass.call(this, options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n\n if ( superclass ) MultiPath.__proto__ = superclass;\n MultiPath.prototype = Object.create( superclass && superclass.prototype );\n MultiPath.prototype.constructor = MultiPath;\n\n var prototypeAccessors$1 = { nodeType: { configurable: true } };\n\n MultiPath.parse = function parse (str, options) {\n var instance = new MultiPath(options);\n return parsePath(instance, str);\n };\n\n MultiPath.prototype.toString = function toString (digits) {\n var paths = this.paths;\n var output = '';\n\n if (paths.length > 0) {\n var result = [];\n\n for (var i = 0; i < paths.length; i++) {\n result.push(paths[i].toString(digits));\n }\n\n output = result.join(SPACE);\n }\n\n return output;\n };\n\n prototypeAccessors$1.nodeType.get = function () {\n return 'MultiPath';\n };\n\n MultiPath.prototype.moveTo = function moveTo (x, y) {\n var path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n };\n\n MultiPath.prototype.lineTo = function lineTo (x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n };\n\n MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n\n return this;\n };\n\n MultiPath.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n };\n\n MultiPath.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n };\n\n MultiPath.prototype.close = function close () {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n };\n\n MultiPath.prototype._bbox = function _bbox (matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n };\n\n MultiPath.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.paths, false);\n };\n\n MultiPath.prototype._containsPoint = function _containsPoint (point) {\n var paths = this.paths;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._isOnPath = function _isOnPath (point) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n\n Object.defineProperties( MultiPath.prototype, prototypeAccessors$1 );\n\n return MultiPath;\n}(paintable(measurable(Element))));\n\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\nimport { Class } from '../common';\n\nvar DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\nvar ShapeBuilder = (function (Class) {\n function ShapeBuilder () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) ShapeBuilder.__proto__ = Class;\n ShapeBuilder.prototype = Object.create( Class && Class.prototype );\n ShapeBuilder.prototype.constructor = ShapeBuilder;\n\n ShapeBuilder.prototype.createRing = function createRing (sector, options) {\n var startAngle = sector.startAngle + 180;\n var endAngle = sector.angle + startAngle;\n\n //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n if (sector.angle > 0 && startAngle === endAngle) {\n endAngle += DIRECTION_ANGLE;\n }\n\n var center = new geom.Point(sector.center.x, sector.center.y);\n var radius = Math.max(sector.radius, 0);\n var innerRadius = Math.max(sector.innerRadius, 0);\n var arc = new geom.Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radius,\n radiusY: radius\n });\n var path = draw.Path.fromArc(arc, options).close();\n\n if (innerRadius) {\n arc.radiusX = arc.radiusY = innerRadius;\n var innerEnd = arc.pointAt(endAngle);\n path.lineTo(innerEnd.x, innerEnd.y);\n path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n } else {\n path.lineTo(center.x, center.y);\n }\n\n return path;\n };\n\n return ShapeBuilder;\n}(Class));\n\nShapeBuilder.current = new ShapeBuilder();\n\nexport default ShapeBuilder;","import withAccessors from '../mixins/with-accessors';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport HasObservers from '../core/has-observers';\nimport { rad } from '../util';\n\n\nvar PI_DIV_2 = Math.PI / 2;\n\nvar Circle = (function (superclass) {\n function Circle(center, radius) {\n if ( center === void 0 ) center = new Point();\n if ( radius === void 0 ) radius = 0;\n\n superclass.call(this);\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n if ( superclass ) Circle.__proto__ = superclass;\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n\n Circle.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Circle.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Circle.prototype.equals = function equals (other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n };\n\n Circle.prototype.clone = function clone () {\n return new Circle(this.center.clone(), this.radius);\n };\n\n Circle.prototype.pointAt = function pointAt (angle) {\n return this._pointAt(rad(angle));\n };\n\n Circle.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Circle.prototype._pointAt = function _pointAt (angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n };\n\n Circle.prototype.containsPoint = function containsPoint (point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n\n return Circle;\n}(withAccessors(HasObservers, [ \"radius\" ])));\n\nexport default Circle;\n","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}\n\nvar withGeometry = function (TBase, names) {\n if ( names === void 0 ) names = [ \"geometry\" ];\n\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withGeometry;\n","import GeometryCircle from '../geometry/circle';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport { defined } from '../util';\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Circle = (function (superclass) {\n function Circle(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryCircle();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if ( superclass ) Circle.__proto__ = superclass;\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Circle\";\n };\n\n Circle.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Circle.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Circle.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Circle.prototype, prototypeAccessors );\n\n return Circle;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Circle;\n","var traversable = function (TBase, childrenField) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.traverse = function traverse (callback) {\n var children = this[childrenField];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default traversable;\n","import Element from './element';\nimport traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\n\nvar Group = (function (superclass) {\n function Group(options) {\n superclass.call(this, options);\n this.children = [];\n }\n\n if ( superclass ) Group.__proto__ = superclass;\n Group.prototype = Object.create( superclass && superclass.prototype );\n Group.prototype.constructor = Group;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Group\";\n };\n\n Group.prototype.childrenChange = function childrenChange (action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n };\n\n Group.prototype.append = function append$1 () {\n append(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n };\n\n Group.prototype.insert = function insert (index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n };\n\n Group.prototype.insertAt = function insertAt (element, index) {\n return this.insert(index, element);\n };\n\n Group.prototype.remove = function remove (element) {\n var index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.removeAt = function removeAt (index) {\n if (0 <= index && index < this.children.length) {\n var element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.clear = function clear () {\n var items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n };\n\n Group.prototype.bbox = function bbox (transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n };\n\n Group.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.children, false);\n };\n\n Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n };\n\n Group.prototype.currentTransform = function currentTransform (transformation) {\n return Element.prototype.currentTransform.call(this, transformation) || null;\n };\n\n Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n };\n\n Group.prototype._reparent = function _reparent (elements, newParent) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1 && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n };\n\n Object.defineProperties( Group.prototype, prototypeAccessors );\n\n return Group;\n}(traversable(Element, \"children\")));\n\nexport default Group;","export function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n}\n\nexport function linear(position) {\n return position;\n}\n\nexport function easeOutElastic(position, time, start, diff) {\n var s = 1.70158,\n p = 0,\n a = diff;\n\n if (position === 0) {\n return start;\n }\n\n if (position === 1) {\n return start + diff;\n }\n\n if (!p) {\n p = 0.5;\n }\n\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n\n return a * Math.pow(2, -10 * position) *\n Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n}\n","var animationFrameProxy = function (callback) {\n var wnd = typeof window !== \"undefined\" ? window : {};\n var animationFrame = wnd.requestAnimationFrame ||\n wnd.webkitRequestAnimationFrame ||\n wnd.mozRequestAnimationFrame ||\n wnd.oRequestAnimationFrame ||\n wnd.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n animationFrameProxy = function (callback) { return animationFrame.call(wnd, callback); };\n animationFrameProxy(callback);\n};\n\nexport default animationFrameProxy;\n","import { Class } from '../common';\n\nvar instance;\n\nvar AnimationFactory = (function (Class) {\n function AnimationFactory() {\n Class.call(this);\n\n this._items = [];\n }\n\n if ( Class ) AnimationFactory.__proto__ = Class;\n AnimationFactory.prototype = Object.create( Class && Class.prototype );\n AnimationFactory.prototype.constructor = AnimationFactory;\n\n var staticAccessors = { current: { configurable: true } };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new AnimationFactory();\n }\n\n return instance;\n };\n\n AnimationFactory.prototype.register = function register (name, type) {\n this._items.push({\n name: name,\n type: type\n });\n };\n\n AnimationFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match;\n\n if (options && options.type) {\n var type = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n };\n\n Object.defineProperties( AnimationFactory, staticAccessors );\n\n return AnimationFactory;\n}(Class));\n\nexport default AnimationFactory;\n","import * as easingFunctions from './easing-functions';\nimport { limitValue, now } from '../util';\nimport { animationFrame, Class } from '../common';\nimport AnimationFactory from './animation-factory';\n\nvar Animation = (function (Class) {\n function Animation(element, options) {\n Class.call(this);\n\n this.options = Object.assign({}, this.options, options);\n this.element = element;\n }\n\n if ( Class ) Animation.__proto__ = Class;\n Animation.prototype = Object.create( Class && Class.prototype );\n Animation.prototype.constructor = Animation;\n\n var prototypeAccessors = { options: { configurable: true } };\n\n Animation.create = function create (type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n };\n\n prototypeAccessors.options.get = function () {\n return this._options || {\n duration: 500,\n easing: \"swing\"\n };\n };\n\n prototypeAccessors.options.set = function (value) {\n this._options = value;\n };\n\n Animation.prototype.setup = function setup () {};\n Animation.prototype.step = function step () {};\n\n Animation.prototype.play = function play () {\n var this$1 = this;\n\n var options = this.options;\n var duration = options.duration;\n var delay = options.delay; if ( delay === void 0 ) delay = 0;\n var easing = easingFunctions[options.easing];\n var start = now() + delay;\n var finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(function () {\n var loop = function () {\n if (this$1._stopped) {\n return;\n }\n\n var wallTime = now();\n\n var time = limitValue(wallTime - start, 0, duration);\n var position = time / duration;\n var easingPosition = easing(position, time, 0, 1, duration);\n\n this$1.step(easingPosition);\n\n if (wallTime < finish) {\n animationFrame(loop);\n } else {\n this$1.abort();\n }\n };\n\n loop();\n }, delay);\n }\n };\n\n Animation.prototype.abort = function abort () {\n this._stopped = true;\n };\n\n Animation.prototype.destroy = function destroy () {\n this.abort();\n };\n\n Object.defineProperties( Animation.prototype, prototypeAccessors );\n\n return Animation;\n}(Class));\n\nexport default Animation;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { WHITE } from '../common/constants';\nimport { Class, deepExtend, defined, valueOrDefault } from '../common';\n\nvar ChartElement = (function (Class) {\n function ChartElement(options) {\n Class.call(this);\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n }\n\n if ( Class ) ChartElement.__proto__ = Class;\n ChartElement.prototype = Object.create( Class && Class.prototype );\n ChartElement.prototype.constructor = ChartElement;\n\n ChartElement.prototype.initUserOptions = function initUserOptions (options) {\n return options;\n };\n\n ChartElement.prototype.reflow = function reflow (targetBox) {\n var children = this.children;\n var box;\n\n for (var i = 0; i < children.length; i++) {\n var currentChild = children[i];\n currentChild.reflow(targetBox);\n\n box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n }\n\n this.box = box || targetBox;\n };\n\n ChartElement.prototype.destroy = function destroy () {\n var children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n };\n\n ChartElement.prototype.getRoot = function getRoot () {\n var parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n };\n\n ChartElement.prototype.getSender = function getSender () {\n var service = this.getService();\n if (service) {\n return service.sender;\n }\n };\n\n ChartElement.prototype.getService = function getService () {\n var element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n };\n\n ChartElement.prototype.translateChildren = function translateChildren (dx, dy) {\n var children = this.children;\n var childrenCount = children.length;\n\n for (var i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n };\n\n ChartElement.prototype.append = function append () {\n var arguments$1 = arguments;\n var this$1 = this;\n\n for (var i = 0; i < arguments.length; i++) {\n var item = arguments$1[i];\n this$1.children.push(item);\n item.parent = this$1;\n }\n };\n\n ChartElement.prototype.renderVisual = function renderVisual () {\n if (this.options.visible === false) {\n return;\n }\n\n this.createVisual();\n\n this.addVisual();\n\n this.renderChildren();\n\n this.createAnimation();\n this.renderComplete();\n };\n\n ChartElement.prototype.addVisual = function addVisual () {\n if (this.visual) {\n this.visual.chartElement = this;\n\n if (this.parent) {\n this.parent.appendVisual(this.visual);\n }\n }\n };\n\n ChartElement.prototype.renderChildren = function renderChildren () {\n var children = this.children;\n var length = children.length;\n for (var i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n };\n\n ChartElement.prototype.createVisual = function createVisual () {\n this.visual = new draw.Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n };\n\n ChartElement.prototype.createAnimation = function createAnimation () {\n if (this.visual && this.options.animation) {\n this.animation = draw.Animation.create(\n this.visual, this.options.animation\n );\n }\n };\n\n ChartElement.prototype.appendVisual = function appendVisual (childVisual) {\n if (!childVisual.chartElement) {\n childVisual.chartElement = this;\n }\n\n if (childVisual.options.noclip) {\n this.clipRoot().visual.append(childVisual);\n } else if (defined(childVisual.options.zIndex)) {\n this.stackRoot().stackVisual(childVisual);\n } else if (this.isStackRoot) {\n this.stackVisual(childVisual);\n } else if (this.visual) {\n this.visual.append(childVisual);\n } else {\n // Allow chart elements without visuals to\n // pass through child visuals\n this.parent.appendVisual(childVisual);\n }\n };\n\n ChartElement.prototype.clipRoot = function clipRoot () {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n };\n\n ChartElement.prototype.stackRoot = function stackRoot () {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n };\n\n ChartElement.prototype.stackVisual = function stackVisual (childVisual) {\n var zIndex = childVisual.options.zIndex || 0;\n var visuals = this.visual.children;\n var length = visuals.length;\n var pos;\n\n for (pos = 0; pos < length; pos++) {\n var sibling = visuals[pos];\n var here = valueOrDefault(sibling.options.zIndex, 0);\n if (here > zIndex) {\n break;\n }\n }\n\n this.visual.insert(pos, childVisual);\n };\n\n ChartElement.prototype.traverse = function traverse (callback) {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n var child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n };\n\n ChartElement.prototype.closest = function closest (match) {\n var element = this;\n var matched = false;\n\n while (element && !matched) {\n matched = match(element);\n\n if (!matched) {\n element = element.parent;\n }\n }\n\n if (matched) {\n return element;\n }\n };\n\n ChartElement.prototype.renderComplete = function renderComplete () {};\n\n ChartElement.prototype.hasHighlight = function hasHighlight () {\n var options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false) || this.visible === false);\n };\n\n ChartElement.prototype.toggleHighlight = function toggleHighlight (show, opacity) {\n var this$1 = this;\n\n var options = (this.options || {}).highlight || {};\n var customVisual = options.visual;\n var highlight = this._highlight;\n\n if (!highlight) {\n var highlightOptions = {\n fill: {\n color: WHITE,\n opacity: opacity || 0.2\n },\n stroke: {\n color: WHITE,\n width: 1,\n opacity: opacity || 0.2\n }\n };\n\n if (customVisual) {\n highlight = this._highlight = customVisual(\n Object.assign(this.highlightVisualArgs(), {\n createVisual: function () { return this$1.createHighlight(highlightOptions); },\n sender: this.getSender(),\n series: this.series,\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n runningTotal: this.runningTotal,\n total: this.total\n }\n ));\n\n if (!highlight) {\n return;\n }\n } else {\n highlight = this._highlight = this.createHighlight(highlightOptions);\n }\n\n if (!defined(highlight.options.zIndex)) {\n highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n }\n\n this.appendVisual(highlight);\n }\n\n highlight.visible(show);\n };\n\n ChartElement.prototype.createGradientOverlay = function createGradientOverlay (element, options, gradientOptions) {\n var overlay = new draw.Path(Object.assign({\n stroke: {\n color: \"none\"\n },\n fill: this.createGradient(gradientOptions),\n closed: element.options.closed\n }, options));\n\n overlay.segments.elements(element.segments.elements());\n\n return overlay;\n };\n\n ChartElement.prototype.createGradient = function createGradient (options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n };\n\n ChartElement.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return true;\n };\n\n return ChartElement;\n}(Class));\n\nChartElement.prototype.options = { };\n\nexport default ChartElement;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { BLACK, LEFT, TOP, X, Y } from '../common/constants';\nimport { getSpacing, setDefaultOptions, valueOrDefault } from '../common';\n\nvar BoxElement = (function (ChartElement) {\n function BoxElement(options) {\n ChartElement.call(this, options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n }\n\n if ( ChartElement ) BoxElement.__proto__ = ChartElement;\n BoxElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n BoxElement.prototype.constructor = BoxElement;\n\n BoxElement.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var shrinkToFit = options.shrinkToFit;\n var hasSetSize = width && height;\n var margin = options.margin;\n var padding = options.padding;\n var borderWidth = options.border.width;\n var box;\n\n var reflowPaddingBox = function () {\n this$1.align(targetBox, X, options.align);\n this$1.align(targetBox, Y, options.vAlign);\n this$1.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n var contentBox = targetBox.clone();\n if (hasSetSize) {\n contentBox.x2 = contentBox.x1 + width;\n contentBox.y2 = contentBox.y1 + height;\n }\n\n if (shrinkToFit) {\n contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n }\n\n ChartElement.prototype.reflow.call(this, contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box(0, 0, width, height);\n } else {\n box = this.box;\n }\n\n if (shrinkToFit && hasSetSize) {\n reflowPaddingBox();\n contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n } else {\n contentBox = this.contentBox = box.clone();\n box.pad(padding).pad(borderWidth).pad(margin);\n reflowPaddingBox();\n }\n\n this.translateChildren(\n box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n );\n\n var children = this.children;\n for (var i = 0; i < children.length; i++) {\n var item = children[i];\n item.reflow(item.box);\n }\n };\n\n BoxElement.prototype.align = function align (targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n };\n\n BoxElement.prototype.hasBox = function hasBox () {\n var options = this.options;\n return options.border.width || options.background;\n };\n\n BoxElement.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(draw.Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n };\n\n BoxElement.prototype.visualStyle = function visualStyle () {\n var options = this.options;\n var border = options.border || {};\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n };\n\n return BoxElement;\n}(ChartElement));\n\nsetDefaultOptions(BoxElement, {\n align: LEFT,\n vAlign: TOP,\n margin: {},\n padding: {},\n border: {\n color: BLACK,\n width: 0\n },\n background: \"\",\n shrinkToFit: false,\n width: 0,\n height: 0,\n visible: true\n});\n\nexport default BoxElement;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport { round, setDefaultOptions } from '../common';\nimport { CENTER, CIRCLE, COORD_PRECISION, CROSS, ROUNDED_RECT, TRIANGLE } from '../common/constants';\nimport { valueOrDefault } from '../drawing-utils';\nimport BoxElement from './box-element';\n\nvar ShapeElement = (function (BoxElement) {\n function ShapeElement(options, pointData) {\n BoxElement.call(this, options);\n\n this.pointData = pointData;\n }\n\n if ( BoxElement ) ShapeElement.__proto__ = BoxElement;\n ShapeElement.prototype = Object.create( BoxElement && BoxElement.prototype );\n ShapeElement.prototype.constructor = ShapeElement;\n\n ShapeElement.prototype.getElement = function getElement () {\n var ref = this;\n var options = ref.options;\n var box = ref.paddingBox;\n var type = options.type;\n var rotation = options.rotation;\n var center = box.center();\n var halfWidth = box.width() / 2;\n var halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n var style = this.visualStyle();\n var element;\n\n if (type === CIRCLE) {\n element = new draw.Circle(\n new geom.Circle([\n round(box.x1 + halfWidth, COORD_PRECISION),\n round(box.y1 + halfHeight, COORD_PRECISION)\n ], Math.min(halfWidth, halfHeight)),\n style\n );\n } else if (type === TRIANGLE) {\n element = draw.Path.fromPoints([\n [ box.x1 + halfWidth, box.y1 ],\n [ box.x1, box.y2 ],\n [ box.x2, box.y2 ]\n ], style).close();\n } else if (type === CROSS) {\n element = new draw.MultiPath(style);\n\n element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n } else {\n var rect = box.toRect();\n if (type === ROUNDED_RECT) {\n var borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = draw.Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(geom.transform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n };\n\n ShapeElement.prototype.createElement = function createElement () {\n var this$1 = this;\n\n var customVisual = this.options.visual;\n var pointData = this.pointData || {};\n var visual;\n\n if (customVisual) {\n visual = customVisual({\n value: pointData.value,\n dataItem: pointData.dataItem,\n sender: this.getSender(),\n series: pointData.series,\n category: pointData.category,\n rect: this.paddingBox.toRect(),\n options: this.visualOptions(),\n createVisual: function () { return this$1.getElement(); }\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n };\n\n ShapeElement.prototype.visualOptions = function visualOptions () {\n var options = this.options;\n return {\n background: options.background,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n type: options.type,\n size: options.width,\n visible: options.visible\n };\n };\n\n ShapeElement.prototype.createVisual = function createVisual () {\n this.visual = this.createElement();\n };\n\n return ShapeElement;\n}(BoxElement));\n\nsetDefaultOptions(ShapeElement, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n});\n\nexport default ShapeElement;\n","import ElementsArray from '../shapes/elements-array';\n\nvar StopsArray = (function (ElementsArray) {\n function StopsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) StopsArray.__proto__ = ElementsArray;\n StopsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n StopsArray.prototype.constructor = StopsArray;\n\n StopsArray.prototype._change = function _change () {\n this.optionsChange({\n field: \"stops\"\n });\n };\n\n return StopsArray;\n}(ElementsArray));\n\nexport default StopsArray;","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n}\n\nfunction defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}\n\nvar withOptions = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withOptions;\n","import OptionsStore from '../core/options-store';\nimport withOptions from '../mixins/with-options';\nimport HasObservers from '../core/has-observers';\nimport { defined } from '../util';\n\n\nvar options = [ \"offset\", \"color\", \"opacity\" ];\n\nvar GradientStop = (function (superclass) {\n function GradientStop(offset, color, opacity) {\n superclass.call(this);\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n if ( superclass ) GradientStop.__proto__ = superclass;\n GradientStop.prototype = Object.create( superclass && superclass.prototype );\n GradientStop.prototype.constructor = GradientStop;\n\n GradientStop.create = function create (arg) {\n if (defined(arg)) {\n var stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n };\n\n return GradientStop;\n}(withOptions(HasObservers, options)));\n\nexport default GradientStop;\n","import StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId } from '../util';\n\nvar Gradient = (function (HasObservers) {\n function Gradient(options) {\n if ( options === void 0 ) options = {};\n\n HasObservers.call(this);\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n if ( HasObservers ) Gradient.__proto__ = HasObservers;\n Gradient.prototype = Object.create( HasObservers && HasObservers.prototype );\n Gradient.prototype.constructor = Gradient;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Gradient\";\n };\n\n Gradient.prototype.userSpace = function userSpace (value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n };\n\n Gradient.prototype._createStops = function _createStops (stops) {\n if ( stops === void 0 ) stops = [];\n\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n };\n\n Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n };\n\n Gradient.prototype.removeStop = function removeStop (stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n\n Gradient.prototype.optionsChange = function optionsChange (e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n };\n\n Gradient.prototype.geometryChange = function geometryChange () {\n this.optionsChange();\n };\n\n Object.defineProperties( Gradient.prototype, prototypeAccessors );\n\n return Gradient;\n}(HasObservers));\n\nexport default Gradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\n\nvar points = [ \"start\", \"end\" ];\n\nvar LinearGradient = (function (superclass) {\n function LinearGradient(options) {\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n\n if ( superclass ) LinearGradient.__proto__ = superclass;\n LinearGradient.prototype = Object.create( superclass && superclass.prototype );\n LinearGradient.prototype.constructor = LinearGradient;\n\n return LinearGradient;\n}(withPoints(Gradient, points)));\n\nexport default LinearGradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\n\nvar RadialGradient = (function (superclass) {\n function RadialGradient(options) {\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n if ( superclass ) RadialGradient.__proto__ = superclass;\n RadialGradient.prototype = Object.create( superclass && superclass.prototype );\n RadialGradient.prototype.constructor = RadialGradient;\n\n RadialGradient.prototype.radius = function radius (value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n };\n\n RadialGradient.prototype.fallbackFill = function fallbackFill (value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n };\n\n return RadialGradient;\n}(withPoints(Gradient, [ \"center\" ])));\n\nexport default RadialGradient;\n","import { WHITE } from '../common/constants';\n\nvar LINEAR = \"linear\";\nvar RADIAL = \"radial\";\n\nvar GRADIENTS = {\n glass: {\n type: LINEAR,\n rotation: 0,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.25,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 1,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.55\n }, {\n offset: 0.65,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0.25\n } ]\n },\n roundedBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0.33,\n color: WHITE,\n opacity: 0.06\n }, {\n offset: 0.83,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0\n } ]\n },\n roundedGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.5,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.15,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.17,\n color: WHITE,\n opacity: 0.35\n }, {\n offset: 0.85,\n color: WHITE,\n opacity: 0.05\n }, {\n offset: 0.87,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n bubbleShadow: {\n type: RADIAL,\n center: [ 0.5, 0.5 ],\n radius: 0.5\n }\n};\n\nexport default GRADIENTS;","import Box from '../box';\nimport { grep } from '../../common';\n\nexport default function boxDiff(r, s) {\n if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n return s;\n }\n\n var a = Math.min(r.x1, s.x1);\n var b = Math.max(r.x1, s.x1);\n var c = Math.min(r.x2, s.x2);\n var d = Math.max(r.x2, s.x2);\n var e = Math.min(r.y1, s.y1);\n var f = Math.max(r.y1, s.y1);\n var g = Math.min(r.y2, s.y2);\n var h = Math.max(r.y2, s.y2);\n var boxes = [];\n\n // X = intersection, 0-7 = possible difference areas\n // h +-+-+-+\n // . |5|6|7|\n // g +-+-+-+\n // . |3|X|4|\n // f +-+-+-+\n // . |0|1|2|\n // e +-+-+-+\n // . a b c d\n\n // we'll always have rectangles 1, 3, 4 and 6\n boxes[0] = new Box(b, e, c, f);\n boxes[1] = new Box(a, f, b, g);\n boxes[2] = new Box(c, f, d, g);\n boxes[3] = new Box(b, g, c, h);\n\n // decide which corners\n if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n boxes[4] = new Box(a, e, b, f);\n boxes[5] = new Box(c, g, d, h);\n } else { // corners 2 and 5\n boxes[4] = new Box(c, e, d, f);\n boxes[5] = new Box(a, g, b, h);\n }\n\n return grep(boxes, function(box) {\n return box.height() > 0 && box.width() > 0;\n })[0];\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport GRADIENTS from './gradients';\nimport Box from './box';\n\nimport boxDiff from './utils/box-diff';\n\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT, WHITE, BLACK } from '../common/constants';\nimport { getSpacing, objectKey, setDefaultOptions } from '../common';\n\nvar RootElement = (function (ChartElement) {\n function RootElement(options) {\n ChartElement.call(this, options);\n\n var rootOptions = this.options;\n rootOptions.width = parseInt(rootOptions.width, 10);\n rootOptions.height = parseInt(rootOptions.height, 10);\n\n this.gradients = {};\n }\n\n if ( ChartElement ) RootElement.__proto__ = ChartElement;\n RootElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n RootElement.prototype.constructor = RootElement;\n\n RootElement.prototype.reflow = function reflow () {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var currentBox = new Box(0, 0, options.width, options.height);\n\n this.box = currentBox.unpad(options.margin);\n\n for (var i = 0; i < children.length; i++) {\n children[i].reflow(currentBox);\n currentBox = boxDiff(currentBox, children[i].box) || new Box();\n }\n };\n\n RootElement.prototype.createVisual = function createVisual () {\n this.visual = new draw.Group();\n this.createBackground();\n };\n\n RootElement.prototype.createBackground = function createBackground () {\n var options = this.options;\n var border = options.border || {};\n var box = this.box.clone().pad(options.margin).unpad(border.width);\n\n var background = draw.Path.fromRect(box.toRect(), {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n zIndex: -10\n });\n\n this.visual.append(background);\n };\n\n RootElement.prototype.getRoot = function getRoot () {\n return this;\n };\n\n RootElement.prototype.createGradient = function createGradient (options) {\n var gradients = this.gradients;\n var hashCode = objectKey(options);\n var gradient = GRADIENTS[options.gradient];\n var drawingGradient;\n\n if (gradients[hashCode]) {\n drawingGradient = gradients[hashCode];\n } else {\n var gradientOptions = Object.assign({}, gradient, options);\n if (gradient.type === \"linear\") {\n drawingGradient = new draw.LinearGradient(gradientOptions);\n } else {\n if (options.innerRadius) {\n gradientOptions.stops = innerRadialStops(gradientOptions);\n }\n drawingGradient = new draw.RadialGradient(gradientOptions);\n drawingGradient.supportVML = gradient.supportVML !== false;\n }\n gradients[hashCode] = drawingGradient;\n }\n\n return drawingGradient;\n };\n\n RootElement.prototype.cleanGradients = function cleanGradients () {\n var gradients = this.gradients;\n for (var hashCode in gradients) {\n gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n }\n };\n\n RootElement.prototype.size = function size () {\n var options = this.options;\n return new Box(0, 0, options.width, options.height);\n };\n\n return RootElement;\n}(ChartElement));\n\nsetDefaultOptions(RootElement, {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n background: WHITE,\n border: {\n color: BLACK,\n width: 0\n },\n margin: getSpacing(5),\n zIndex: -2\n});\n\nfunction innerRadialStops(options) {\n var stops = options.stops;\n var usedSpace = ((options.innerRadius / options.radius) * 100);\n var length = stops.length;\n var currentStops = [];\n\n for (var i = 0; i < length; i++) {\n var currentStop = Object.assign({}, stops[i]);\n currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n currentStops.push(currentStop);\n }\n\n return currentStops;\n}\n\nexport default RootElement;","import ChartElement from './chart-element';\nimport Box from './box';\n\nimport { X, Y, WIDTH, HEIGHT, RIGHT, BOTTOM, CENTER } from '../common/constants';\nimport { round, setDefaultOptions } from '../common';\n\nvar FloatElement = (function (ChartElement) {\n function FloatElement(options) {\n ChartElement.call(this, options);\n this._initDirection();\n }\n\n if ( ChartElement ) FloatElement.__proto__ = ChartElement;\n FloatElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n FloatElement.prototype.constructor = FloatElement;\n\n FloatElement.prototype._initDirection = function _initDirection () {\n var options = this.options;\n if (options.vertical) {\n this.groupAxis = X;\n this.elementAxis = Y;\n this.groupSizeField = WIDTH;\n this.elementSizeField = HEIGHT;\n this.groupSpacing = options.spacing;\n this.elementSpacing = options.vSpacing;\n } else {\n this.groupAxis = Y;\n this.elementAxis = X;\n this.groupSizeField = HEIGHT;\n this.elementSizeField = WIDTH;\n this.groupSpacing = options.vSpacing;\n this.elementSpacing = options.spacing;\n }\n };\n\n FloatElement.prototype.reflow = function reflow (targetBox) {\n this.box = targetBox.clone();\n this.reflowChildren();\n };\n\n FloatElement.prototype.reflowChildren = function reflowChildren () {\n var this$1 = this;\n\n var ref = this;\n var box = ref.box;\n var elementAxis = ref.elementAxis;\n var groupAxis = ref.groupAxis;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var ref$1 = this.groupOptions();\n var groups = ref$1.groups;\n var groupsSize = ref$1.groupsSize;\n var maxGroupElementsSize = ref$1.maxGroupElementsSize;\n var groupsCount = groups.length;\n var groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n if (groupsCount) {\n var groupStart = groupsStart;\n\n for (var groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n var group = groups[groupIdx];\n var groupElements = group.groupElements;\n var elementStart = box[elementAxis + 1];\n var groupElementsCount = groupElements.length;\n\n for (var idx = 0; idx < groupElementsCount; idx++) {\n var element = groupElements[idx];\n var elementSize = this$1.elementSize(element);\n var groupElementStart = groupStart + this$1.alignStart(elementSize[groupSizeField], group.groupSize);\n\n var elementBox = new Box();\n elementBox[groupAxis + 1] = groupElementStart;\n elementBox[groupAxis + 2] = groupElementStart + elementSize[groupSizeField];\n elementBox[elementAxis + 1] = elementStart;\n elementBox[elementAxis + 2] = elementStart + elementSize[elementSizeField];\n\n element.reflow(elementBox);\n\n elementStart += elementSize[elementSizeField] + this$1.elementSpacing;\n }\n groupStart += group.groupSize + this$1.groupSpacing;\n }\n box[groupAxis + 1] = groupsStart;\n box[groupAxis + 2] = groupsStart + groupsSize;\n box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n }\n };\n\n FloatElement.prototype.alignStart = function alignStart (size, maxSize) {\n var start = 0;\n var align = this.options.align;\n if (align === RIGHT || align === BOTTOM) {\n start = maxSize - size;\n } else if (align === CENTER) {\n start = (maxSize - size) / 2;\n }\n return start;\n };\n\n FloatElement.prototype.groupOptions = function groupOptions () {\n var this$1 = this;\n\n var ref = this;\n var box = ref.box;\n var children = ref.children;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var elementSpacing = ref.elementSpacing;\n var groupSpacing = ref.groupSpacing;\n var maxSize = round(box[elementSizeField]());\n var childrenCount = children.length;\n var groups = [];\n\n var groupSize = 0;\n var groupElementsSize = 0;\n var groupsSize = 0;\n var maxGroupElementsSize = 0;\n var groupElements = [];\n\n for (var idx = 0; idx < childrenCount; idx++) {\n var element = children[idx];\n if (!element.box) {\n element.reflow(box);\n }\n\n var elementSize = this$1.elementSize(element);\n if (this$1.options.wrap && round(groupElementsSize + elementSpacing + elementSize[elementSizeField]) > maxSize) {\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSpacing + groupSize;\n groupSize = 0;\n groupElementsSize = 0;\n groupElements = [];\n }\n groupSize = Math.max(groupSize, elementSize[groupSizeField]);\n if (groupElementsSize > 0) {\n groupElementsSize += elementSpacing;\n }\n groupElementsSize += elementSize[elementSizeField];\n groupElements.push(element);\n }\n\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSize;\n\n return {\n groups: groups,\n groupsSize: groupsSize,\n maxGroupElementsSize: maxGroupElementsSize\n };\n };\n\n FloatElement.prototype.elementSize = function elementSize (element) {\n return {\n width: element.box.width(),\n height: element.box.height()\n };\n };\n\n FloatElement.prototype.createVisual = function createVisual () {};\n\n return FloatElement;\n}(ChartElement));\n\nsetDefaultOptions(FloatElement, {\n vertical: true,\n wrap: true,\n vSpacing: 0,\n spacing: 0\n});\n\nexport default FloatElement;","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport paintable from '../mixins/paintable';\nimport withPoints from '../mixins/with-points';\nimport { defined, measureText } from '../util';\n\n\nvar DEFAULT_FONT = \"12px sans-serif\";\nvar DEFAULT_FILL = \"#000\";\n\nvar Text = (function (superclass) {\n function Text(content, position, options) {\n if ( position === void 0 ) position = new Point();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n if ( superclass ) Text.__proto__ = superclass;\n Text.prototype = Object.create( superclass && superclass.prototype );\n Text.prototype.constructor = Text;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Text\";\n };\n\n Text.prototype.content = function content (value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n };\n\n Text.prototype.measure = function measure () {\n var metrics = measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n };\n\n Text.prototype.rect = function rect () {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n };\n\n Text.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n };\n\n Text.prototype.rawBBox = function rawBBox () {\n return this.rect().bbox();\n };\n\n Text.prototype._containsPoint = function _containsPoint (point) {\n return this.rect().containsPoint(point);\n };\n\n Object.defineProperties( Text.prototype, prototypeAccessors );\n\n return Text;\n}(paintable(withPoints(Element, [ \"position\" ]))));\n\nexport default Text;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { DEFAULT_FONT, BLACK } from '../common/constants';\nimport { setDefaultOptions } from '../common';\n\nvar DrawingText = draw.Text;\n\nvar Text = (function (ChartElement) {\n function Text(content, options) {\n ChartElement.call(this, options);\n\n this.content = content;\n\n // Calculate size\n this.reflow(new Box());\n }\n\n if ( ChartElement ) Text.__proto__ = ChartElement;\n Text.prototype = Object.create( ChartElement && ChartElement.prototype );\n Text.prototype.constructor = Text;\n\n Text.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var size = options.size = draw.util.measureText(this.content, { font: options.font });\n\n this.baseline = size.baseline;\n\n this.box = new Box(targetBox.x1, targetBox.y1,\n targetBox.x1 + size.width, targetBox.y1 + size.height);\n };\n\n Text.prototype.createVisual = function createVisual () {\n var ref = this.options;\n var font = ref.font;\n var color = ref.color;\n var opacity = ref.opacity;\n var cursor = ref.cursor;\n\n this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n font: font,\n fill: { color: color, opacity: opacity },\n cursor: cursor\n });\n };\n\n return Text;\n}(ChartElement));\n\nsetDefaultOptions(Text, {\n font: DEFAULT_FONT,\n color: BLACK\n});\n\nexport default Text;\n","import Box from '../box';\n\nexport default function rectToBox(rect) {\n var origin = rect.origin;\n var bottomRight = rect.bottomRight();\n\n return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport FloatElement from './float-element';\nimport Text from './text';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { getSpacing, deepExtend, defined } from '../common';\nimport { X, Y } from '../common/constants';\n\nvar ROWS_SPLIT_REGEX = /\\n/m;\n\nvar TextBox = (function (BoxElement) {\n function TextBox(content, options, data) {\n BoxElement.call(this, options);\n this.content = content;\n this.data = data;\n\n this._initContainer();\n if (this.options._autoReflow !== false) {\n this.reflow(new Box());\n }\n }\n\n if ( BoxElement ) TextBox.__proto__ = BoxElement;\n TextBox.prototype = Object.create( BoxElement && BoxElement.prototype );\n TextBox.prototype.constructor = TextBox;\n\n TextBox.prototype._initContainer = function _initContainer () {\n var options = this.options;\n var rows = String(this.content).split(ROWS_SPLIT_REGEX);\n var floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n var textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n this.container = floatElement;\n this.append(floatElement);\n\n for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n var text = new Text(rows[rowIdx].trim(), textOptions);\n floatElement.append(text);\n }\n };\n\n TextBox.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var visualFn = options.visual;\n this.container.options.align = options.align;\n\n if (visualFn && !this._boxReflow) {\n var visualBox = targetBox;\n if (!visualBox.hasSize()) {\n this._boxReflow = true;\n this.reflow(visualBox);\n this._boxReflow = false;\n visualBox = this.box;\n }\n var visual = this.visual = visualFn(this.visualContext(visualBox));\n\n if (visual) {\n visualBox = rectToBox(visual.clippedBBox() || new geom.Rect());\n\n visual.options.zIndex = options.zIndex;\n }\n\n this.box = this.contentBox = this.paddingBox = visualBox;\n } else {\n BoxElement.prototype.reflow.call(this, targetBox);\n\n if (options.rotation) {\n var margin = getSpacing(options.margin);\n var box = this.box.unpad(margin);\n\n this.targetBox = targetBox;\n this.normalBox = box.clone();\n\n box = this.rotate();\n box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n this.rotatedBox = box.clone();\n\n box.pad(margin);\n }\n }\n };\n\n TextBox.prototype.createVisual = function createVisual () {\n var options = this.options;\n\n this.visual = new draw.Group({\n transform: this.rotationTransform(),\n zIndex: options.zIndex,\n noclip: options.noclip\n });\n\n if (this.hasBox()) {\n var box = draw.Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n this.visual.append(box);\n }\n };\n\n TextBox.prototype.renderVisual = function renderVisual () {\n if (!this.options.visible) {\n return;\n }\n\n if (this.options.visual) {\n var visual = this.visual;\n if (visual && !defined(visual.options.noclip)) {\n visual.options.noclip = this.options.noclip;\n }\n this.addVisual();\n this.createAnimation();\n } else {\n BoxElement.prototype.renderVisual.call(this);\n }\n };\n\n TextBox.prototype.visualContext = function visualContext (targetBox) {\n var this$1 = this;\n\n var context = {\n text: this.content,\n rect: targetBox.toRect(),\n sender: this.getSender(),\n options: this.options,\n createVisual: function () {\n this$1._boxReflow = true;\n this$1.reflow(targetBox);\n this$1._boxReflow = false;\n return this$1.getDefaultVisual();\n }\n };\n if (this.data) {\n Object.assign(context, this.data);\n }\n\n return context;\n };\n\n TextBox.prototype.getDefaultVisual = function getDefaultVisual () {\n this.createVisual();\n this.renderChildren();\n var visual = this.visual;\n delete this.visual;\n return visual;\n };\n\n TextBox.prototype.rotate = function rotate () {\n var options = this.options;\n this.box.rotate(options.rotation);\n this.align(this.targetBox, X, options.align);\n this.align(this.targetBox, Y, options.vAlign);\n return this.box;\n };\n\n TextBox.prototype.rotationTransform = function rotationTransform () {\n var rotation = this.options.rotation;\n if (!rotation) {\n return null;\n }\n\n var ref = this.normalBox.center();\n var cx = ref.x;\n var cy = ref.y;\n var boxCenter = this.rotatedBox.center();\n\n return geom.transform()\n .translate(boxCenter.x - cx, boxCenter.y - cy)\n .rotate(rotation, [ cx, cy ]);\n };\n\n return TextBox;\n}(BoxElement));\n\nexport default TextBox;","import ChartElement from './chart-element';\nimport TextBox from './text-box';\n\nimport { X, BLACK, TOP, CENTER, BOTTOM } from '../common/constants';\nimport { getSpacing, setDefaultOptions } from '../common';\n\nvar Title = (function (ChartElement) {\n function Title(options) {\n ChartElement.call(this, options);\n\n this._textBox = new TextBox(this.options.text, Object.assign({}, this.options, {\n vAlign: this.options.position\n }));\n\n this.append(this._textBox);\n }\n\n if ( ChartElement ) Title.__proto__ = ChartElement;\n Title.prototype = Object.create( ChartElement && ChartElement.prototype );\n Title.prototype.constructor = Title;\n\n Title.prototype.reflow = function reflow (targetBox) {\n ChartElement.prototype.reflow.call(this, targetBox);\n this.box.snapTo(targetBox, X);\n };\n\n Title.buildTitle = function buildTitle (options, defaultOptions) {\n var titleOptions = options;\n\n if (typeof options === \"string\") {\n titleOptions = { text: options };\n }\n\n titleOptions = Object.assign({ visible: true }, defaultOptions, titleOptions);\n\n var title;\n if (titleOptions && titleOptions.visible && titleOptions.text) {\n title = new Title(titleOptions);\n }\n\n return title;\n };\n\n Title.orderTitles = function orderTitles (titles) {\n var items = [].concat(titles);\n var top = items.filter(function (item) { return item && item.options.position !== BOTTOM; });\n var bottom = items.filter(function (item) { return item && item.options.position === BOTTOM; });\n\n collapseVerticalMargins(top);\n collapseVerticalMargins(bottom);\n\n bottom.reverse();\n return top.concat(bottom);\n };\n\n return Title;\n}(ChartElement));\n\nfunction collapseVerticalMargins(items) {\n for (var i = 1; i < items.length; i++) {\n var box = items[i]._textBox;\n var prevBox = items[i - 1]._textBox;\n prevBox.options.margin = Object.assign(getSpacing(prevBox.options.margin), { bottom: 0 });\n box.options.margin = Object.assign(getSpacing(box.options.margin), { top: 0 });\n }\n}\n\nsetDefaultOptions(Title, {\n color: BLACK,\n position: TOP,\n align: CENTER,\n margin: getSpacing(5),\n padding: getSpacing(5)\n});\n\nexport default Title;\n","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport TextBox from './text-box';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { AXIS_LABEL_CLICK, CENTER, TOP, BOTTOM, LEFT, DEFAULT_PRECISION, X, Y } from '../common/constants';\n\nimport { eventElement, round, setDefaultOptions } from '../common';\n\nvar AxisLabel = (function (TextBox) {\n function AxisLabel(value, text, index, dataItem, options) {\n TextBox.call(this, text, options);\n\n this.text = text;\n this.value = value;\n this.index = index;\n this.dataItem = dataItem;\n this.reflow(new Box());\n }\n\n if ( TextBox ) AxisLabel.__proto__ = TextBox;\n AxisLabel.prototype = Object.create( TextBox && TextBox.prototype );\n AxisLabel.prototype.constructor = AxisLabel;\n\n AxisLabel.prototype.visualContext = function visualContext (targetBox) {\n var context = TextBox.prototype.visualContext.call(this, targetBox);\n\n context.value = this.value;\n context.dataItem = this.dataItem;\n context.format = this.options.format;\n context.culture = this.options.culture;\n\n return context;\n };\n\n AxisLabel.prototype.click = function click (widget, e) {\n\n widget.trigger(AXIS_LABEL_CLICK, {\n element: eventElement(e),\n value: this.value,\n text: this.text,\n index: this.index,\n dataItem: this.dataItem,\n axis: this.parent.options\n });\n };\n\n AxisLabel.prototype.rotate = function rotate () {\n if (this.options.alignRotation !== CENTER) {\n var box = this.normalBox.toRect();\n var transform = this.rotationTransform();\n\n this.box = rectToBox(box.bbox(transform.matrix()));\n } else {\n TextBox.prototype.rotate.call(this);\n }\n\n return this.box;\n };\n\n AxisLabel.prototype.rotationTransform = function rotationTransform () {\n var options = this.options;\n var rotation = options.rotation;\n if (!rotation) {\n return null;\n }\n\n if (options.alignRotation === CENTER) {\n return TextBox.prototype.rotationTransform.call(this);\n }\n\n var rotationMatrix = geom.transform().rotate(rotation).matrix();\n var box = this.normalBox.toRect();\n var rect = this.targetBox.toRect();\n\n var rotationOrigin = options.rotationOrigin || TOP;\n var alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n var distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n var axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n var topLeft = box.topLeft().transformCopy(rotationMatrix);\n var topRight = box.topRight().transformCopy(rotationMatrix);\n var bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n var bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n var rotatedBox = geom.Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n var translate = {};\n translate[distanceAxis] = rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis];\n\n var distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n var distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n var alignStart, alignEnd;\n\n if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n alignStart = topLeft;\n alignEnd = topRight;\n } else if (distanceRight < distanceLeft) {\n alignStart = topRight;\n alignEnd = bottomRight;\n } else {\n alignStart = topLeft;\n alignEnd = bottomLeft;\n }\n\n var alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n return geom.transform()\n .translate(translate.x, translate.y)\n .rotate(rotation);\n };\n\n return AxisLabel;\n}(TextBox));\n\nsetDefaultOptions(AxisLabel, {\n _autoReflow: false\n});\n\nexport default AxisLabel;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport TextBox from './text-box';\nimport ShapeElement from './shape-element';\nimport Box from './box';\n\nimport { CIRCLE, TOP, BOTTOM, LEFT, RIGHT, CENTER, INSIDE, OUTSIDE, NOTE_CLICK, NOTE_HOVER, NOTE_LEAVE } from '../common/constants';\nimport { alignPathToPixel, defined, deepExtend, eventElement, getTemplate, inArray, setDefaultOptions } from '../common';\n\nvar DEFAULT_ICON_SIZE = 7;\nvar DEFAULT_LABEL_COLOR = \"#fff\";\n\nvar Note = (function (BoxElement) {\n function Note(fields, options, chartService) {\n BoxElement.call(this, options);\n\n this.fields = fields;\n this.chartService = chartService;\n\n this.render();\n }\n\n if ( BoxElement ) Note.__proto__ = BoxElement;\n Note.prototype = Object.create( BoxElement && BoxElement.prototype );\n Note.prototype.constructor = Note;\n\n Note.prototype.hide = function hide () {\n this.options.visible = false;\n };\n\n Note.prototype.show = function show () {\n this.options.visible = true;\n };\n\n Note.prototype.render = function render () {\n var this$1 = this;\n\n var options = this.options;\n\n if (options.visible) {\n var label = options.label;\n var icon = options.icon;\n var box = new Box();\n var childAlias = function () { return this$1; };\n var size = icon.size;\n var text = this.fields.text;\n var width, height;\n\n if (defined(label) && label.visible) {\n var noteTemplate = getTemplate(label);\n if (noteTemplate) {\n text = noteTemplate(this.fields);\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n }\n\n this.label = new TextBox(text, deepExtend({}, label));\n this.label.aliasFor = childAlias;\n\n if (label.position === INSIDE && !defined(size)) {\n if (icon.type === CIRCLE) {\n size = Math.max(this.label.box.width(), this.label.box.height());\n } else {\n width = this.label.box.width();\n height = this.label.box.height();\n }\n box.wrap(this.label.box);\n }\n }\n\n icon.width = width || size || DEFAULT_ICON_SIZE;\n icon.height = height || size || DEFAULT_ICON_SIZE;\n\n var marker = new ShapeElement(deepExtend({}, icon));\n marker.aliasFor = childAlias;\n\n this.marker = marker;\n this.append(marker);\n\n if (this.label) {\n this.append(this.label);\n }\n\n marker.reflow(new Box());\n this.wrapperBox = box.wrap(marker.box);\n }\n };\n\n Note.prototype.reflow = function reflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var marker = ref.marker;\n var wrapperBox = ref.wrapperBox;\n var center = targetBox.center();\n var length = options.line.length;\n var position = options.position;\n\n // TODO: Review\n if (options.visible) {\n var lineStart, box, contentBox;\n\n if (inArray(position, [ LEFT, RIGHT ])) {\n if (position === LEFT) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x1, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x2, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x2, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x1, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n } else {\n if (position === BOTTOM) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y2 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y1 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y1 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y2 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n }\n\n if (marker) {\n marker.reflow(contentBox);\n }\n\n if (label) {\n label.reflow(contentBox);\n if (marker) {\n if (options.label.position === OUTSIDE) {\n label.box.alignTo(marker.box, position);\n }\n label.reflow(label.box);\n }\n }\n\n this.contentBox = contentBox;\n this.targetBox = targetBox;\n this.box = box || contentBox;\n }\n };\n\n Note.prototype.createVisual = function createVisual () {\n BoxElement.prototype.createVisual.call(this);\n this.visual.options.noclip = this.options.noclip;\n\n if (this.options.visible) {\n this.createLine();\n }\n };\n\n Note.prototype.renderVisual = function renderVisual () {\n var this$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n if (options.visible && customVisual) {\n this.visual = customVisual(Object.assign(this.fields, {\n sender: this.getSender(),\n rect: this.targetBox.toRect(),\n options: {\n background: options.background,\n border: options.background,\n icon: options.icon,\n label: options.label,\n line: options.line,\n position: options.position,\n visible: options.visible\n },\n createVisual: function () {\n this$1.createVisual();\n this$1.renderChildren();\n var defaultVisual = this$1.visual;\n delete this$1.visual;\n return defaultVisual;\n }\n }));\n this.addVisual();\n } else {\n BoxElement.prototype.renderVisual.call(this);\n }\n };\n\n Note.prototype.createLine = function createLine () {\n var options = this.options.line;\n\n if (this.linePoints) {\n var path = draw.Path.fromPoints(this.linePoints, {\n stroke: {\n color: options.color,\n width: options.width,\n dashType: options.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n };\n\n Note.prototype.click = function click (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_CLICK, args)) {\n e.preventDefault();\n }\n };\n\n Note.prototype.over = function over (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_HOVER, args)) {\n e.preventDefault();\n }\n };\n\n Note.prototype.out = function out (widget, e) {\n var args = this.eventArgs(e);\n\n widget.trigger(NOTE_LEAVE, args);\n };\n\n Note.prototype.eventArgs = function eventArgs (e) {\n var options = this.options;\n\n return Object.assign(this.fields, {\n element: eventElement(e),\n text: defined(options.label) ? options.label.text : \"\",\n visual: this.visual\n });\n };\n\n return Note;\n}(BoxElement));\n\nsetDefaultOptions(Note, {\n icon: {\n visible: true,\n type: CIRCLE\n },\n label: {\n position: INSIDE,\n visible: true,\n align: CENTER,\n vAlign: CENTER\n },\n line: {\n visible: true\n },\n visible: true,\n position: TOP,\n zIndex: 2\n});\n\nexport default Note;","var defaultImplementation = {\n format: function (format, value) { return value; },\n\n toString: function (value) { return value; },\n\n parseDate: function (value) { return new Date(value); },\n\n firstDay: function () { return 0; }\n};\n\nvar current = defaultImplementation;\n\nvar IntlService = function IntlService () {};\n\nvar staticAccessors = { implementation: { configurable: true } };\n\nIntlService.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nstaticAccessors.implementation.get = function () {\n return current;\n};\n\nObject.defineProperties( IntlService, staticAccessors );\n\nexport default IntlService;\n","import IntlService from './intl-service';\nimport { FORMAT_REGEX } from '../common/constants';\nimport { isString } from '../common';\n\nvar FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nvar FormatService = function FormatService(intlService) {\n this._intlService = intlService;\n};\n\nvar prototypeAccessors = { intl: { configurable: true } };\n\nprototypeAccessors.intl.get = function () {\n return this._intlService || IntlService.implementation;\n};\n\nprototypeAccessors.intl.set = function (value) {\n this._intlService = value;\n};\n\nFormatService.prototype.auto = function auto (formatString) {\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n var intl = this.intl;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n return intl.format.apply(intl, [ formatString ].concat( values ));\n }\n\n return intl.toString(values[0], formatString);\n};\n\nFormatService.prototype.localeAuto = function localeAuto (formatString, values, locale) {\n var intl = this.intl;\n var result;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10)];\n\n return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n });\n } else {\n result = intl.toString(values[0], formatString, locale);\n }\n\n return result;\n};\n\nObject.defineProperties( FormatService.prototype, prototypeAccessors );\n\nexport default FormatService;","import IntlService from './intl-service';\nimport FormatService from './format-service';\n\nvar ChartService = function ChartService(chart, context) {\n if ( context === void 0 ) context = {};\n\n this._intlService = context.intlService;\n this.sender = context.sender || chart;\n this.format = new FormatService(context.intlService);\n this.chart = chart;\n this.rtl = Boolean(context.rtl);\n};\n\nvar prototypeAccessors = { intl: { configurable: true } };\n\nprototypeAccessors.intl.get = function () {\n return this._intlService || IntlService.implementation;\n};\n\nprototypeAccessors.intl.set = function (value) {\n this._intlService = value;\n this.format.intl = value;\n};\n\nChartService.prototype.notify = function notify (name, args) {\n if (this.chart) {\n this.chart.trigger(name, args);\n }\n};\n\nChartService.prototype.isPannable = function isPannable (axis) {\n var pannable = ((this.chart || {}).options || {}).pannable;\n return pannable && pannable.lock !== axis;\n};\n\nObject.defineProperties( ChartService.prototype, prototypeAccessors );\n\nexport default ChartService;\n","var current;\n\nvar DomEventsBuilder = function DomEventsBuilder () {};\n\nDomEventsBuilder.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nDomEventsBuilder.create = function create (element, events) {\n if (current) {\n return current.create(element, events);\n }\n};\n\nexport default DomEventsBuilder;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisTick(options, tickOptions) {\n var tickX = options.tickX;\n var tickY = options.tickY;\n var position = options.position;\n\n var tick = new draw.Path({\n stroke: {\n width: tickOptions.width,\n color: tickOptions.color\n }\n });\n\n if (options.vertical) {\n tick.moveTo(tickX, position)\n .lineTo(tickX + tickOptions.size, position);\n } else {\n tick.moveTo(position, tickY)\n .lineTo(position, tickY + tickOptions.size);\n }\n\n alignPathToPixel(tick);\n\n return tick;\n}\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisGridLine(options, gridLine) {\n var lineStart = options.lineStart;\n var lineEnd = options.lineEnd;\n var position = options.position;\n\n var line = new draw.Path({\n stroke: {\n width: gridLine.width,\n color: gridLine.color,\n dashType: gridLine.dashType\n }\n });\n\n if (options.vertical) {\n line.moveTo(lineStart, position)\n .lineTo(lineEnd, position);\n } else {\n line.moveTo(position, lineStart)\n .lineTo(position, lineEnd);\n }\n\n alignPathToPixel(line);\n\n return line;\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport TextBox from './text-box';\nimport AxisLabel from './axis-label';\nimport Note from './note';\nimport Box from './box';\nimport { ChartService } from '../services';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\n\nimport { NONE, BLACK, CENTER, TOP, BOTTOM, LEFT, RIGHT, OUTSIDE, X, Y, WIDTH, HEIGHT } from '../common/constants';\nimport { alignPathToPixel, deepExtend, getTemplate, grep, defined, isObject, inArray, limitValue, round, setDefaultOptions } from '../common';\n\nvar Axis = (function (ChartElement) {\n function Axis(options, chartService) {\n if ( chartService === void 0 ) chartService = new ChartService();\n\n ChartElement.call(this, options);\n\n this.chartService = chartService;\n\n if (!this.options.visible) {\n this.options = deepExtend({}, this.options, {\n labels: {\n visible: false\n },\n line: {\n visible: false\n },\n margin: 0,\n majorTickSize: 0,\n minorTickSize: 0\n });\n }\n\n this.options.minorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.minorTickType !== NONE\n }, this.options.minorTicks, {\n size: this.options.minorTickSize,\n align: this.options.minorTickType\n });\n\n this.options.majorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.majorTickType !== NONE\n }, this.options.majorTicks, {\n size: this.options.majorTickSize,\n align: this.options.majorTickType\n });\n\n this.initFields();\n\n if (!this.options._deferLabels) {\n this.createLabels();\n }\n\n this.createTitle();\n this.createNotes();\n }\n\n if ( ChartElement ) Axis.__proto__ = ChartElement;\n Axis.prototype = Object.create( ChartElement && ChartElement.prototype );\n Axis.prototype.constructor = Axis;\n\n Axis.prototype.initFields = function initFields () {\n };\n\n // abstract labelsCount(): Number\n // abstract createAxisLabel(index, options): AxisLabel\n\n Axis.prototype.labelsRange = function labelsRange () {\n return {\n min: this.options.labels.skip,\n max: this.labelsCount()\n };\n };\n\n Axis.prototype.normalizeLabelRotation = function normalizeLabelRotation (labelOptions) {\n var rotation = labelOptions.rotation;\n\n if (isObject(rotation)) {\n labelOptions.alignRotation = rotation.align;\n labelOptions.rotation = rotation.angle;\n }\n };\n\n Axis.prototype.createLabels = function createLabels () {\n var this$1 = this;\n\n var options = this.options;\n var align = options.vertical ? RIGHT : CENTER;\n var labelOptions = deepExtend({ }, options.labels, {\n align: align,\n zIndex: options.zIndex\n });\n var step = Math.max(1, labelOptions.step);\n\n this.clearLabels();\n\n if (labelOptions.visible) {\n this.normalizeLabelRotation(labelOptions);\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateLabels = true;\n }\n\n var range = this.labelsRange();\n for (var idx = range.min; idx < range.max; idx += step) {\n var labelContext = { index: idx, count: range.max };\n var label = this$1.createAxisLabel(idx, labelOptions, labelContext);\n if (label) {\n this$1.append(label);\n this$1.labels.push(label);\n }\n }\n }\n };\n\n Axis.prototype.clearLabels = function clearLabels () {\n this.children = grep(this.children, function (child) { return !(child instanceof AxisLabel); });\n this.labels = [];\n };\n\n Axis.prototype.clearTitle = function clearTitle () {\n var this$1 = this;\n\n if (this.title) {\n this.children = grep(this.children, function (child) { return child !== this$1.title; });\n this.title = undefined;\n }\n };\n\n Axis.prototype.clear = function clear () {\n this.clearLabels();\n this.clearTitle();\n };\n\n Axis.prototype.lineBox = function lineBox () {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var axisX = mirror ? box.x1 : box.x2;\n var axisY = mirror ? box.y2 : box.y1;\n var lineWidth = options.line.width || 0;\n\n return vertical ?\n new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n };\n\n Axis.prototype.createTitle = function createTitle () {\n var options = this.options;\n var titleOptions = deepExtend({\n rotation: options.vertical ? -90 : 0,\n text: \"\",\n zIndex: 1,\n visualSize: true\n }, options.title);\n\n if (titleOptions.visible && titleOptions.text) {\n var title = new TextBox(titleOptions.text, titleOptions);\n this.append(title);\n this.title = title;\n }\n };\n\n Axis.prototype.createNotes = function createNotes () {\n var this$1 = this;\n\n var options = this.options;\n var notes = options.notes;\n var items = notes.data || [];\n\n this.notes = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = deepExtend({}, notes, items[i]);\n item.value = this$1.parseNoteValue(item.value);\n\n var note = new Note({\n value: item.value,\n text: item.label.text,\n dataItem: item\n }, item, this$1.chartService);\n\n if (note.options.visible) {\n if (defined(note.options.position)) {\n if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n } else {\n if (options.vertical) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n }\n this$1.append(note);\n this$1.notes.push(note);\n }\n }\n };\n\n Axis.prototype.parseNoteValue = function parseNoteValue (value) {\n return value;\n };\n\n Axis.prototype.renderVisual = function renderVisual () {\n ChartElement.prototype.renderVisual.call(this);\n\n this.createPlotBands();\n };\n\n Axis.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n this.createBackground();\n this.createLine();\n };\n\n Axis.prototype.gridLinesVisual = function gridLinesVisual () {\n var gridLines = this._gridLines;\n if (!gridLines) {\n gridLines = this._gridLines = new draw.Group({\n zIndex: -2\n });\n this.appendVisual(this._gridLines);\n }\n\n return gridLines;\n };\n\n Axis.prototype.createTicks = function createTicks (lineGroup) {\n var options = this.options;\n var lineBox = this.lineBox();\n var mirror = options.labels.mirror;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: options.vertical\n };\n\n function render(tickPositions, tickOptions, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, tickOptions.step);\n\n if (tickOptions.visible) {\n for (var i = tickOptions.skip; i < count; i += step) {\n if (defined(skipUnit) && (i % skipUnit === 0)) {\n continue;\n }\n\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n\n render(this.getMajorTickPositions(), options.majorTicks);\n render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n };\n\n Axis.prototype.createLine = function createLine () {\n var options = this.options;\n var line = options.line;\n var lineBox = this.lineBox();\n\n if (line.width > 0 && line.visible) {\n var path = new draw.Path({\n stroke: {\n width: line.width,\n color: line.color,\n dashType: line.dashType\n }\n\n /* TODO\n zIndex: line.zIndex,\n */\n });\n\n path.moveTo(lineBox.x1, lineBox.y1)\n .lineTo(lineBox.x2, lineBox.y2);\n\n if (options._alignLines) {\n alignPathToPixel(path);\n }\n\n var group = this._lineGroup = new draw.Group();\n group.append(path);\n\n this.visual.append(group);\n this.createTicks(group);\n }\n };\n\n Axis.prototype.getActualTickSize = function getActualTickSize () {\n var options = this.options;\n var tickSize = 0;\n\n if (options.majorTicks.visible && options.minorTicks.visible) {\n tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n } else if (options.majorTicks.visible) {\n tickSize = options.majorTicks.size;\n } else if (options.minorTicks.visible) {\n tickSize = options.minorTicks.size;\n }\n\n return tickSize;\n };\n\n Axis.prototype.createBackground = function createBackground () {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var background = options.background;\n\n if (background) {\n this._backgroundPath = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: background\n },\n stroke: null\n });\n\n this.visual.append(this._backgroundPath);\n }\n };\n\n Axis.prototype.createPlotBands = function createPlotBands () {\n var this$1 = this;\n\n var options = this.options;\n var plotBands = options.plotBands || [];\n var vertical = options.vertical;\n var plotArea = this.plotArea;\n\n if (plotBands.length === 0) {\n return;\n }\n\n var group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n var altAxis = grep(this.pane.axes, function (axis) { return axis.options.vertical !== this$1.options.vertical; })[0];\n\n for (var idx = 0; idx < plotBands.length; idx++) {\n var item = plotBands[idx];\n var slotX = (void 0), slotY = (void 0);\n var labelOptions = item.label;\n var label = (void 0);\n\n if (vertical) {\n slotX = (altAxis || plotArea.axisX).lineBox();\n slotY = this$1.getSlot(item.from, item.to, true);\n } else {\n slotX = this$1.getSlot(item.from, item.to, true);\n slotY = (altAxis || plotArea.axisY).lineBox();\n }\n\n if (labelOptions) {\n labelOptions.vAlign = labelOptions.position || LEFT;\n label = this$1.createPlotBandLabel(\n labelOptions,\n item,\n new Box(\n slotX.x1,\n slotY.y1,\n slotX.x2,\n slotY.y2\n )\n\n );\n }\n\n if (slotX.width() !== 0 && slotY.height() !== 0) {\n var bandRect = new geom.Rect(\n [ slotX.x1, slotY.y1 ],\n [ slotX.width(), slotY.height() ]\n );\n\n var path = draw.Path.fromRect(bandRect, {\n fill: {\n color: item.color,\n opacity: item.opacity\n },\n stroke: null\n });\n\n group.append(path);\n if (label) {\n group.append(label);\n }\n }\n }\n\n this.appendVisual(group);\n };\n\n Axis.prototype.createPlotBandLabel = function createPlotBandLabel (label, item, box) {\n\n if (label.visible === false) {\n return null;\n }\n\n var text = label.text;\n var textbox;\n\n if (defined(label) && label.visible) {\n var labelTemplate = getTemplate(label);\n if (labelTemplate) {\n text = labelTemplate({ text: text, item: item });\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = this.options.labels.color;\n }\n }\n\n textbox = new TextBox(text, label);\n textbox.reflow(box);\n textbox.renderVisual();\n\n return textbox.visual;\n };\n\n Axis.prototype.createGridLines = function createGridLines (altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var minorUnit = options.minorUnit;\n var vertical = options.vertical;\n var axisLineVisible = altAxis.options.line.visible;\n var majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n var lineBox = altAxis.lineBox();\n var linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n\n function render(tickPositions, gridLine, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, gridLine.step);\n\n if (gridLine.visible) {\n for (var i = gridLine.skip; i < count; i += step) {\n var pos = round(tickPositions[i]);\n if (!inArray(pos, majorTicks)) {\n if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n lineOptions.position = pos;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(pos);\n }\n }\n }\n }\n }\n\n render(this.getMajorTickPositions(), majorGridLines);\n render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n return container.children;\n };\n\n Axis.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var title = ref.title;\n var vertical = options.vertical;\n var count = labels.length;\n var sizeFn = vertical ? WIDTH : HEIGHT;\n var titleSize = title ? title.box[sizeFn]() : 0;\n var space = this.getActualTickSize() + options.margin + titleSize;\n var rootBox = (this.getRoot() || {}).box || box;\n var boxSize = rootBox[sizeFn]();\n var maxLabelSize = 0;\n\n for (var i = 0; i < count; i++) {\n var labelSize = labels[i].box[sizeFn]();\n if (labelSize + space <= boxSize) {\n maxLabelSize = Math.max(maxLabelSize, labelSize);\n }\n }\n\n if (vertical) {\n this.box = new Box(\n box.x1, box.y1,\n box.x1 + maxLabelSize + space, box.y2\n );\n } else {\n this.box = new Box(\n box.x1, box.y1,\n box.x2, box.y1 + maxLabelSize + space\n );\n }\n\n this.arrangeTitle();\n this.arrangeLabels();\n this.arrangeNotes();\n };\n\n Axis.prototype.getLabelsTickPositions = function getLabelsTickPositions () {\n return this.getMajorTickPositions();\n };\n\n Axis.prototype.labelTickIndex = function labelTickIndex (label) {\n return label.index;\n };\n\n Axis.prototype.arrangeLabels = function arrangeLabels () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var tickPositions = this.getLabelsTickPositions();\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1.labelTickIndex(label);\n var labelSize = vertical ? label.box.height() : label.box.width();\n var firstTickPosition = tickPositions[tickIx];\n var nextTickPosition = tickPositions[tickIx + 1];\n var positionStart = (void 0), positionEnd = (void 0);\n\n if (vertical) {\n if (labelsBetweenTicks) {\n var middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n positionStart = middle - (labelSize / 2);\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n }\n\n positionEnd = positionStart;\n } else {\n if (labelsBetweenTicks) {\n positionStart = firstTickPosition;\n positionEnd = nextTickPosition;\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n positionEnd = positionStart + labelSize;\n }\n }\n\n this$1.positionLabel(label, mirror, positionStart, positionEnd);\n }\n };\n\n Axis.prototype.positionLabel = function positionLabel (label, mirror, positionStart, positionEnd) {\n if ( positionEnd === void 0 ) positionEnd = positionStart;\n\n var options = this.options;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var labelOffset = this.getActualTickSize() + options.margin;\n var labelBox;\n\n if (vertical) {\n var labelX = lineBox.x2;\n\n if (mirror) {\n labelX += labelOffset;\n label.options.rotationOrigin = LEFT;\n } else {\n labelX -= labelOffset + label.box.width();\n label.options.rotationOrigin = RIGHT;\n }\n\n labelBox = label.box.move(labelX, positionStart);\n } else {\n var labelY = lineBox.y1;\n\n if (mirror) {\n labelY -= labelOffset + label.box.height();\n label.options.rotationOrigin = BOTTOM;\n } else {\n labelY += labelOffset;\n label.options.rotationOrigin = TOP;\n }\n\n labelBox = new Box(\n positionStart, labelY,\n positionEnd, labelY + label.box.height()\n );\n }\n\n label.reflow(labelBox);\n };\n\n Axis.prototype.autoRotateLabelAngle = function autoRotateLabelAngle (labelBox, slotWidth) {\n if (labelBox.width() < slotWidth) {\n return 0;\n }\n\n if (labelBox.height() > slotWidth) {\n return -90;\n }\n\n return -45;\n };\n\n Axis.prototype.autoRotateLabels = function autoRotateLabels () {\n var this$1 = this;\n\n if (!this.options.autoRotateLabels || this.options.vertical) {\n return false;\n }\n\n var tickPositions = this.getMajorTickPositions();\n var labels = this.labels;\n var limit = Math.min(labels.length, tickPositions.length - 1);\n var angle = 0;\n\n for (var idx = 0; idx < limit; idx++) {\n var width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n var labelBox = labels[idx].box;\n var labelAngle = this$1.autoRotateLabelAngle(labelBox, width);\n\n if (labelAngle !== 0) {\n angle = labelAngle;\n }\n\n if (angle === -90) {\n break;\n }\n }\n\n if (angle !== 0) {\n for (var idx$1 = 0; idx$1 < labels.length; idx$1++) {\n labels[idx$1].options.rotation = angle;\n labels[idx$1].reflow(new Box());\n }\n\n return true;\n }\n };\n\n Axis.prototype.arrangeTitle = function arrangeTitle () {\n var ref = this;\n var options = ref.options;\n var title = ref.title;\n var mirror = options.labels.mirror;\n var vertical = options.vertical;\n\n if (title) {\n if (vertical) {\n title.options.align = mirror ? RIGHT : LEFT;\n title.options.vAlign = title.options.position;\n } else {\n title.options.align = title.options.position;\n title.options.vAlign = mirror ? TOP : BOTTOM;\n }\n\n title.reflow(this.box);\n }\n };\n\n Axis.prototype.arrangeNotes = function arrangeNotes () {\n var this$1 = this;\n\n for (var idx = 0; idx < this.notes.length; idx++) {\n var item = this$1.notes[idx];\n var value = item.options.value;\n var slot = (void 0);\n\n if (defined(value)) {\n if (this$1.shouldRenderNote(value)) {\n item.show();\n } else {\n item.hide();\n }\n\n slot = this$1.noteSlot(value);\n } else {\n item.hide();\n }\n\n item.reflow(slot || this$1.lineBox());\n }\n };\n\n Axis.prototype.noteSlot = function noteSlot (value) {\n return this.getSlot(value);\n };\n\n Axis.prototype.alignTo = function alignTo (secondAxis) {\n var lineBox = secondAxis.lineBox();\n var vertical = this.options.vertical;\n var pos = vertical ? Y : X;\n\n this.box.snapTo(lineBox, pos);\n if (vertical) {\n this.box.shrink(0, this.lineBox().height() - lineBox.height());\n } else {\n this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n }\n this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n };\n\n Axis.prototype.axisLabelText = function axisLabelText (value, options, context) {\n var this$1 = this;\n\n var text;\n var tmpl = getTemplate(options);\n var defaultText = function () {\n if (!options.format) {\n return value;\n }\n\n return this$1.chartService.format.localeAuto(\n options.format, [ value ], options.culture\n );\n };\n\n if (tmpl) {\n var templateContext = Object.assign({}, context, {\n get text() { return defaultText(); },\n value: value,\n format: options.format,\n culture: options.culture\n });\n\n text = tmpl(templateContext);\n } else {\n text = defaultText();\n }\n\n return text;\n };\n\n Axis.prototype.slot = function slot (from , to, limit) {\n var slot = this.getSlot(from, to, limit);\n if (slot) {\n return slot.toRect();\n }\n };\n\n Axis.prototype.contentBox = function contentBox () {\n var box = this.box.clone();\n var labels = this.labels;\n if (labels.length) {\n var axis = this.options.vertical ? Y : X;\n if (this.chartService.isPannable(axis)) {\n var offset = this.maxLabelOffset();\n box[axis + 1] -= offset.start;\n box[axis + 2] += offset.end;\n } else {\n if (labels[0].options.visible) {\n box.wrap(labels[0].box);\n }\n var lastLabel = labels[labels.length - 1];\n if (lastLabel.options.visible) {\n box.wrap(lastLabel.box);\n }\n }\n }\n\n return box;\n };\n\n Axis.prototype.maxLabelOffset = function maxLabelOffset () {\n var this$1 = this;\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var tickPositions = this.getLabelsTickPositions();\n var offsetField = vertical ? Y : X;\n var labels = this.labels;\n var startPosition = reverse ? 1 : 0;\n var endPosition = reverse ? 0 : 1;\n var maxStartOffset = 0;\n var maxEndOffset = 0;\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1.labelTickIndex(label);\n var startTick = (void 0), endTick = (void 0);\n\n if (labelsBetweenTicks) {\n startTick = tickPositions[tickIx + startPosition];\n endTick = tickPositions[tickIx + endPosition];\n } else {\n startTick = endTick = tickPositions[tickIx];\n }\n\n maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n }\n\n return {\n start: maxStartOffset,\n end: maxEndOffset\n };\n };\n\n Axis.prototype.limitRange = function limitRange (from, to, min, max, offset) {\n var options = this.options;\n\n if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n return null;\n }\n\n if ((to < min && offset > 0) || (max < from && offset < 0)) {\n return {\n min: from,\n max: to\n };\n }\n\n var rangeSize = to - from;\n var minValue = from;\n var maxValue = to;\n\n if (from < min && offset < 0) {\n minValue = limitValue(from, min, max);\n maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n } else if (to > max && offset > 0) {\n maxValue = limitValue(to, min, max);\n minValue = limitValue(to - rangeSize, min, max - rangeSize);\n }\n\n return {\n min: minValue,\n max: maxValue\n };\n };\n\n Axis.prototype.valueRange = function valueRange () {\n return {\n min: this.seriesMin,\n max: this.seriesMax\n };\n };\n\n Axis.prototype.lineDir = function lineDir () {\n /*\n * Axis line direction:\n * * Vertical: up.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n };\n\n Axis.prototype.lineInfo = function lineInfo () {\n var ref = this.options;\n var vertical = ref.vertical;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = this.lineDir();\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n };\n\n Axis.prototype.pointOffset = function pointOffset (point) {\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n var offset = relative / lineSize;\n\n return offset;\n };\n\n // Computes the axis range change (delta) for a given scale factor.\n // The delta is subtracted from the axis range:\n // * delta > 0 reduces the axis range (zoom-in)\n // * delta < 0 expands the axis range (zoom-out)\n Axis.prototype.scaleToDelta = function scaleToDelta (rawScale, range) {\n // Scale >= 1 would result in axis range of 0.\n // Scale <= -1 would reverse the scale direction.\n var MAX_SCALE = 0.999;\n var scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n var delta;\n if (scale > 0) {\n delta = range * Math.min(1, scale);\n } else {\n delta = range - (range / (1 + scale));\n }\n\n return delta;\n };\n\n Axis.prototype.labelsBetweenTicks = function labelsBetweenTicks () {\n return !this.options.justified;\n };\n\n //add legacy fields to the options that are no longer generated by default\n Axis.prototype.prepareUserOptions = function prepareUserOptions () {\n };\n\n return Axis;\n}(ChartElement));\n\nsetDefaultOptions(Axis, {\n labels: {\n visible: true,\n rotation: 0,\n mirror: false,\n step: 1,\n skip: 0\n },\n line: {\n width: 1,\n color: BLACK,\n visible: true\n },\n title: {\n visible: true,\n position: CENTER\n },\n majorTicks: {\n align: OUTSIDE,\n size: 4,\n skip: 0,\n step: 1\n },\n minorTicks: {\n align: OUTSIDE,\n size: 3,\n skip: 0,\n step: 1\n },\n axisCrossingValue: 0,\n majorTickType: OUTSIDE,\n minorTickType: NONE,\n majorGridLines: {\n skip: 0,\n step: 1\n },\n minorGridLines: {\n visible: false,\n width: 1,\n color: BLACK,\n skip: 0,\n step: 1\n },\n // TODO: Move to line or labels options\n margin: 5,\n visible: true,\n reverse: false,\n justified: true,\n notes: {\n label: {\n text: \"\"\n }\n },\n\n _alignLines: true,\n _deferLabels: false\n});\n\nexport default Axis;\n","export var MILLISECONDS = \"milliseconds\";\nexport var SECONDS = \"seconds\";\nexport var MINUTES = \"minutes\";\nexport var HOURS = \"hours\";\nexport var DAYS = \"days\";\nexport var WEEKS = \"weeks\";\nexport var MONTHS = \"months\";\nexport var YEARS = \"years\";\n\nexport var TIME_PER_MILLISECOND = 1;\nexport var TIME_PER_SECOND = 1000;\nexport var TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\nexport var TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\nexport var TIME_PER_DAY = 24 * TIME_PER_HOUR;\nexport var TIME_PER_WEEK = 7 * TIME_PER_DAY;\nexport var TIME_PER_MONTH = 31 * TIME_PER_DAY;\nexport var TIME_PER_YEAR = 365 * TIME_PER_DAY;\nexport var TIME_PER_UNIT = {\n \"years\": TIME_PER_YEAR,\n \"months\": TIME_PER_MONTH,\n \"weeks\": TIME_PER_WEEK,\n \"days\": TIME_PER_DAY,\n \"hours\": TIME_PER_HOUR,\n \"minutes\": TIME_PER_MINUTE,\n \"seconds\": TIME_PER_SECOND,\n \"milliseconds\": TIME_PER_MILLISECOND\n};\n\n","import { TIME_PER_MINUTE } from './constants';\n\nexport default function absoluteDateDiff(a, b) {\n var diff = a.getTime() - b;\n var offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n return diff - (offsetDiff * TIME_PER_MINUTE);\n}","export default function addTicks(date, ticks) {\n return new Date(date.getTime() + ticks);\n}","export default function toDate(value) {\n var result;\n\n if (value instanceof Date) {\n result = value;\n } else if (value) {\n result = new Date(value);\n }\n\n return result;\n}","import { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_SECOND, TIME_PER_MINUTE, TIME_PER_HOUR } from './constants';\nimport addTicks from './add-ticks';\nimport toDate from './to-date';\nimport startOfWeek from './start-of-week';\n\nfunction adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n}\n\nfunction addHours(date, hours) {\n var roundedDate = new Date(date);\n\n roundedDate.setMinutes(0, 0, 0);\n\n var tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n}\n\nexport default function addDuration(dateValue, value, unit, weekStartDay) {\n var result = dateValue;\n\n if (dateValue) {\n var date = toDate(dateValue);\n var hours = date.getHours();\n\n if (unit === YEARS) {\n result = new Date(date.getFullYear() + value, 0, 1);\n adjustDST(result, 0);\n } else if (unit === MONTHS) {\n result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n adjustDST(result, hours);\n } else if (unit === WEEKS) {\n result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n adjustDST(result, hours);\n } else if (unit === DAYS) {\n result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n adjustDST(result, hours);\n } else if (unit === HOURS) {\n result = addHours(date, value);\n } else if (unit === MINUTES) {\n result = addTicks(date, value * TIME_PER_MINUTE);\n\n if (result.getSeconds() > 0) {\n result.setSeconds(0);\n }\n } else if (unit === SECONDS) {\n result = addTicks(date, value * TIME_PER_SECOND);\n } else if (unit === MILLISECONDS) {\n result = addTicks(date, value);\n }\n\n if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n result.setMilliseconds(0);\n }\n }\n\n return result;\n}","import { TIME_PER_DAY } from './constants';\nimport addTicks from './add-ticks';\n\nexport default function startOfWeek(date, weekStartDay) {\n if ( weekStartDay === void 0 ) weekStartDay = 0;\n\n var daysToSubtract = 0;\n var day = date.getDay();\n\n if (!isNaN(day)) {\n while (day !== weekStartDay) {\n if (day === 0) {\n day = 6;\n } else {\n day--;\n }\n\n daysToSubtract++;\n }\n }\n\n return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n}","import addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function floorDate(date, unit, weekStartDay) {\n return addDuration(toDate(date), 0, unit, weekStartDay);\n}","import floorDate from './floor-date';\nimport addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function ceilDate(dateValue, unit, weekStartDay) {\n var date = toDate(dateValue);\n\n if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n return date;\n }\n\n return addDuration(date, 1, unit, weekStartDay);\n}","export default function dateComparer(a, b) {\n if (a && b) {\n return a.getTime() - b.getTime();\n }\n\n return -1;\n}","export default function dateDiff(a, b) {\n return a.getTime() - b;\n}","import { isArray } from '../common';\nimport toDate from './to-date';\n\nexport default function toTime(value) {\n if (isArray(value)) {\n var result = [];\n for (var idx = 0; idx < value.length; idx++) {\n result.push(toTime(value[idx]));\n }\n\n return result;\n } else if (value) {\n return toDate(value).getTime();\n }\n}","import toTime from './to-time';\n\nexport default function dateEquals(a, b) {\n if (a && b) {\n return toTime(a) === toTime(b);\n }\n\n return a === b;\n}","import { DAYS, WEEKS, MONTHS, YEARS, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\nimport absoluteDateDiff from './absolute-date-diff';\nimport toDate from './to-date';\n\nfunction timeIndex(date, start, baseUnit) {\n return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n}\n\nexport default function dateIndex(value, start, baseUnit, baseUnitStep) {\n var date = toDate(value);\n var startDate = toDate(start);\n var index;\n\n if (baseUnit === MONTHS) {\n index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n } else if (baseUnit === YEARS) {\n index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n index = timeIndex(date, startDate, baseUnit);\n } else {\n index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n return index / baseUnitStep;\n}\n\n","import { DAYS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\n\nexport default function duration(a, b, unit) {\n var diff;\n\n if (unit === YEARS) {\n diff = b.getFullYear() - a.getFullYear();\n } else if (unit === MONTHS) {\n diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n } else if (unit === DAYS) {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n } else {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n }\n\n return diff;\n}","import { isString } from '../common';\nimport toDate from './to-date';\n\nexport default function parseDate(intlService, date) {\n var result;\n if (isString(date)) {\n result = intlService.parseDate(date) || toDate(date);\n } else {\n result = toDate(date);\n }\n return result;\n}\n","import parseDate from './parse-date';\n\nimport { isArray } from '../common';\n\nexport default function parseDates(intlService, dates) {\n if (isArray(dates)) {\n var result = [];\n for (var idx = 0; idx < dates.length; idx++) {\n result.push(parseDate(intlService, dates[idx]));\n }\n\n return result;\n }\n\n return parseDate(intlService, dates);\n}","import { isNumber } from '../common';\n\nexport default function firstDay(options, intlService) {\n if (isNumber(options.weekStartDay)) {\n return options.weekStartDay;\n }\n\n if (intlService && intlService.firstDay) {\n return intlService.firstDay();\n }\n\n return 0;\n}\n","import Axis from './axis';\nimport AxisLabel from './axis-label';\n\nimport { BLACK, COORD_PRECISION, DEFAULT_PRECISION, X, Y } from '../common/constants';\nimport { defined, isNumber, last, limitValue, round, setDefaultOptions, valueOrDefault, HashMap } from '../common';\nimport { dateEquals } from '../date-utils';\n\nvar MIN_CATEGORY_POINTS_RANGE = 0.01;\nvar MIN_CATEGORY_RANGE = 0.1;\n\nfunction indexOf(value, arr) {\n if (value instanceof Date) {\n var length = arr.length;\n for (var idx = 0; idx < length; idx++) {\n if (dateEquals(arr[idx], value)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return arr.indexOf(value);\n}\n\nvar CategoryAxis = (function (Axis) {\n function CategoryAxis () {\n Axis.apply(this, arguments);\n }\n\n if ( Axis ) CategoryAxis.__proto__ = Axis;\n CategoryAxis.prototype = Object.create( Axis && Axis.prototype );\n CategoryAxis.prototype.constructor = CategoryAxis;\n\n CategoryAxis.prototype.initFields = function initFields () {\n this._ticks = {};\n };\n\n CategoryAxis.prototype.categoriesHash = function categoriesHash () {\n return \"\";\n };\n\n CategoryAxis.prototype.clone = function clone () {\n var copy = new CategoryAxis(Object.assign({}, this.options, {\n categories: this.options.srcCategories\n }), this.chartService);\n copy.createLabels();\n\n return copy;\n };\n\n CategoryAxis.prototype.initUserOptions = function initUserOptions (options) {\n var categories = options.categories || [];\n var definedMin = defined(options.min);\n var definedMax = defined(options.max);\n options.srcCategories = options.categories = categories;\n\n if ((definedMin || definedMax) && categories.length) {\n var min = definedMin ? Math.floor(options.min) : 0;\n var max;\n\n if (definedMax) {\n max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n } else {\n max = categories.length;\n }\n\n options.categories = options.categories.slice(min, max);\n }\n\n return options;\n };\n\n CategoryAxis.prototype.rangeIndices = function rangeIndices () {\n var options = this.options;\n var length = options.categories.length || 1;\n var min = isNumber(options.min) ? options.min % 1 : 0;\n var max;\n\n if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n max = length - (1 - options.max % 1);\n } else {\n max = length - (options.justified ? 1 : 0);\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.range = function range () {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.roundedRange = function roundedRange () {\n return this.range();\n };\n\n CategoryAxis.prototype.totalRange = function totalRange () {\n var options = this.options;\n return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n };\n\n CategoryAxis.prototype.scaleOptions = function scaleOptions () {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var lineBox = this.lineBox();\n var size = this.options.vertical ? lineBox.height() : lineBox.width();\n var scale = size / ((max - min) || 1);\n\n return {\n scale: scale * (this.options.reverse ? -1 : 1),\n box: lineBox,\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.arrangeLabels = function arrangeLabels () {\n Axis.prototype.arrangeLabels.call(this);\n this.hideOutOfRangeLabels();\n };\n\n CategoryAxis.prototype.hideOutOfRangeLabels = function hideOutOfRangeLabels () {\n var ref = this;\n var box = ref.box;\n var labels = ref.labels;\n\n if (labels.length > 0) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n var firstLabel = labels[0];\n var lastLabel = last(labels);\n\n if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n firstLabel.options.visible = false;\n }\n if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n lastLabel.options.visible = false;\n }\n }\n };\n\n CategoryAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n return this.getTicks().majorTicks;\n };\n\n CategoryAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n return this.getTicks().minorTicks;\n };\n\n CategoryAxis.prototype.getLabelsTickPositions = function getLabelsTickPositions () {\n return this.getTicks().labelTicks;\n };\n\n CategoryAxis.prototype.tickIndices = function tickIndices (stepSize) {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var limit = Math.ceil(max);\n var current = Math.floor(min);\n var indices = [];\n\n while (current <= limit) {\n indices.push(current);\n current += stepSize;\n }\n\n return indices;\n };\n\n CategoryAxis.prototype.getTickPositions = function getTickPositions (stepSize) {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n var indices = this.tickIndices(stepSize);\n var positions = [];\n\n for (var idx = 0; idx < indices.length; idx++) {\n positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n }\n\n return positions;\n };\n\n CategoryAxis.prototype.getTicks = function getTicks () {\n var options = this.options;\n var cache = this._ticks;\n var range = this.rangeIndices();\n var lineBox = this.lineBox();\n var hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n if (cache._hash !== hash) {\n var hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n cache._hash = hash;\n cache.labelTicks = this.getTickPositions(1);\n cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n }\n\n return cache;\n };\n\n CategoryAxis.prototype.filterOutOfRangePositions = function filterOutOfRangePositions (positions, lineBox) {\n if (!positions.length) {\n return positions;\n }\n\n var axis = this.options.vertical ? Y : X;\n var inRange = function (position) { return lineBox[axis + 1] <= position && position <= lineBox[axis + 2]; };\n\n var end = positions.length - 1;\n var startIndex = 0;\n while (!inRange(positions[startIndex]) && startIndex <= end) {\n startIndex++;\n }\n\n var endIndex = end;\n\n while (!inRange(positions[endIndex]) && endIndex >= 0) {\n endIndex--;\n }\n\n return positions.slice(startIndex, endIndex + 1);\n };\n\n CategoryAxis.prototype.lineInfo = function lineInfo () {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = reverse ? -1 : 1;\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n };\n\n CategoryAxis.prototype.lineDir = function lineDir () {\n /*\n * Category axis line direction:\n * * Vertical: down.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var reverse = ref.reverse;\n return reverse ? -1 : 1;\n };\n\n // TODO: Rename to slotBox, valueSlot, slotByIndex?\n CategoryAxis.prototype.getSlot = function getSlot (from, to, limit) {\n var options = this.options;\n var reverse = options.reverse;\n var justified = options.justified;\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var box = ref.box;\n var min = ref.min;\n var ref$1 = this.lineInfo();\n var valueAxis = ref$1.axis;\n var lineStart = ref$1.lineStart;\n\n var slotBox = box.clone();\n var singleSlot = !defined(to);\n\n var start = valueOrDefault(from, 0);\n var end = valueOrDefault(to, start);\n end = Math.max(end - 1, start);\n\n // Fixes transient bug caused by iOS 6.0 JIT\n // (one can never be too sure)\n end = Math.max(start, end);\n\n var p1 = lineStart + (start - min) * scale;\n var p2 = lineStart + (end + 1 - min) * scale;\n\n if (singleSlot && justified) {\n p2 = p1;\n }\n\n if (limit) {\n p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n }\n\n slotBox[valueAxis + 1] = reverse ? p2 : p1;\n slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n return slotBox;\n };\n\n CategoryAxis.prototype.limitSlot = function limitSlot (slot) {\n var vertical = this.options.vertical;\n var valueAxis = vertical ? Y : X;\n var lineBox = this.lineBox();\n var limittedSlot = slot.clone();\n\n limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n return limittedSlot;\n };\n\n CategoryAxis.prototype.slot = function slot (from, to, limit) {\n var min = Math.floor(this.options.min || 0);\n var start = from;\n var end = to;\n\n if (typeof start === \"string\") {\n start = this.categoryIndex(start);\n } else if (isNumber(start)) {\n start -= min;\n }\n\n if (typeof end === \"string\") {\n end = this.categoryIndex(end);\n } else if (isNumber(end)) {\n end -= min;\n }\n\n return Axis.prototype.slot.call(this, start, end, limit);\n };\n\n CategoryAxis.prototype.pointCategoryIndex = function pointCategoryIndex (point) {\n var ref = this.options;\n var reverse = ref.reverse;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var max = ref$1.max;\n var startValue = reverse ? max : min;\n var lineStart = box[valueAxis + 1];\n var lineEnd = box[valueAxis + 2];\n var pos = point[valueAxis];\n\n if (pos < lineStart || pos > lineEnd) {\n return null;\n }\n\n var value = startValue + (pos - lineStart) / scale;\n var diff = value % 1;\n\n if (justified) {\n value = Math.round(value);\n } else if (diff === 0 && value > 0) {\n value--;\n }\n\n return Math.floor(value);\n };\n\n CategoryAxis.prototype.getCategory = function getCategory (point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.options.categories[index];\n };\n\n CategoryAxis.prototype.categoryIndex = function categoryIndex (value) {\n return this.totalIndex(value) - Math.floor(this.options.min || 0);\n };\n\n CategoryAxis.prototype.categoryAt = function categoryAt (index, total) {\n var options = this.options;\n\n return (total ? options.srcCategories : options.categories)[index];\n };\n\n CategoryAxis.prototype.categoriesCount = function categoriesCount () {\n return (this.options.categories || []).length;\n };\n\n CategoryAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var range = options.categories.length;\n var scale = size / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n return {\n min: offset,\n max: range + offset\n };\n };\n\n CategoryAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var rangeIndices = this.limitedRangeIndices();\n var range = rangeIndices.max - rangeIndices.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = rangeIndices.min + minDelta;\n var max = rangeIndices.max - maxDelta;\n\n if (max - min < MIN_CATEGORY_RANGE) {\n max = min + MIN_CATEGORY_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var ref = this.totalRange();\n var totalMin = ref.min;\n var totalMax = ref.max;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n };\n\n CategoryAxis.prototype.labelsCount = function labelsCount () {\n var labelsRange = this.labelsRange();\n\n return labelsRange.max - labelsRange.min;\n };\n\n CategoryAxis.prototype.labelsRange = function labelsRange () {\n var options = this.options;\n var justified = options.justified;\n var labelOptions = options.labels;\n var ref = this.limitedRangeIndices(true);\n var min = ref.min;\n var max = ref.max;\n var start = Math.floor(min);\n\n if (!justified) {\n min = Math.floor(min);\n max = Math.ceil(max);\n } else {\n min = Math.ceil(min);\n max = Math.floor(max);\n }\n\n var skip;\n\n if (min > labelOptions.skip) {\n skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n } else {\n skip = labelOptions.skip;\n }\n\n return {\n min: skip - start,\n max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n };\n };\n\n CategoryAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var options = this.options;\n var dataItem = options.dataItems ? options.dataItems[index] : null;\n var category = valueOrDefault(options.categories[index], \"\");\n\n labelContext.dataItem = dataItem;\n var text = this.axisLabelText(category, labelOptions, labelContext);\n\n return new AxisLabel(category, text, index, dataItem, labelOptions);\n };\n\n CategoryAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.limitedRangeIndices();\n\n return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n };\n\n CategoryAxis.prototype.noteSlot = function noteSlot (value) {\n var options = this.options;\n var index = value - Math.floor(options.min || 0);\n return this.getSlot(index);\n };\n\n CategoryAxis.prototype.arrangeNotes = function arrangeNotes () {\n Axis.prototype.arrangeNotes.call(this);\n this.hideOutOfRangeNotes();\n };\n\n CategoryAxis.prototype.hideOutOfRangeNotes = function hideOutOfRangeNotes () {\n var ref = this;\n var notes = ref.notes;\n var box = ref.box;\n if (notes && notes.length) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n\n for (var idx = 0; idx < notes.length; idx++) {\n var note = notes[idx];\n if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n note.hide();\n }\n }\n }\n };\n\n CategoryAxis.prototype.pan = function pan (delta) {\n var range = this.limitedRangeIndices(true);\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n var totalRange = this.totalRange();\n var min = range.min + offset;\n var max = range.max + offset;\n\n return this.limitRange(min, max, 0, totalRange.max, offset);\n };\n\n CategoryAxis.prototype.pointsRange = function pointsRange (start, end) {\n var ref = this.options;\n var reverse = ref.reverse;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var range = this.limitedRangeIndices(true);\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n var diffStart = start[valueAxis] - lineStart;\n var diffEnd = end[valueAxis] - lineStart;\n\n var min = range.min + diffStart / scale;\n var max = range.min + diffEnd / scale;\n var rangeMin = Math.min(min, max);\n var rangeMax = Math.max(min, max);\n\n if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n return {\n min: rangeMin,\n max: rangeMax\n };\n }\n };\n\n CategoryAxis.prototype.valueRange = function valueRange () {\n return this.range();\n };\n\n CategoryAxis.prototype.totalIndex = function totalIndex (value) {\n var options = this.options;\n var index = this._categoriesMap ?\n this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n return index;\n };\n\n CategoryAxis.prototype.currentRangeIndices = function currentRangeIndices () {\n var options = this.options;\n var min = 0;\n\n if (isNumber(options.min)) {\n min = Math.floor(options.min);\n }\n\n var max;\n if (isNumber(options.max)) {\n max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n } else {\n max = this.totalCount() - 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.limitedRangeIndices = function limitedRangeIndices (totalLimit) {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max;\n\n if (isNumber(options.max)) {\n max = options.max;\n } else if (isNumber(options.min)) {\n max = min + options.categories.length;\n } else {\n max = this.totalRange().max || 1;\n }\n\n if (totalLimit) {\n var totalRange = this.totalRange();\n min = limitValue(min, 0, totalRange.max);\n max = limitValue(max, 0, totalRange.max);\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.totalRangeIndices = function totalRangeIndices () {\n return {\n min: 0,\n max: this.totalRange().max || 1\n };\n };\n\n CategoryAxis.prototype.mapCategories = function mapCategories () {\n if (!this._categoriesMap) {\n var map = this._categoriesMap = new HashMap();\n var srcCategories = this.options.srcCategories;\n for (var idx = 0; idx < srcCategories.length; idx++) {\n map.set(srcCategories[idx], idx);\n }\n }\n };\n\n CategoryAxis.prototype.totalCount = function totalCount () {\n return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n };\n\n return CategoryAxis;\n}(Axis));\n\nsetDefaultOptions(CategoryAxis, {\n type: \"category\",\n vertical: false,\n majorGridLines: {\n visible: false,\n width: 1,\n color: BLACK\n },\n labels: {\n zIndex: 1\n },\n justified: false,\n _deferLabels: true\n});\n\nexport default CategoryAxis;\n","var COORDINATE_LIMIT = 300000;\n\nvar DateLabelFormats = {\n milliseconds: \"HH:mm:ss.fff\",\n seconds: \"HH:mm:ss\",\n minutes: \"HH:mm\",\n hours: \"HH:mm\",\n days: \"M/d\",\n weeks: \"M/d\",\n months: \"MMM 'yy\",\n years: \"yyyy\"\n};\n\nvar ZERO_THRESHOLD = 0.2;\n\nexport {\n COORDINATE_LIMIT, DateLabelFormats, ZERO_THRESHOLD\n};","import CategoryAxis from './category-axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { CENTER, DATE, DEFAULT_PRECISION, MAX_VALUE, OBJECT, X, Y } from '../common/constants';\nimport { deepExtend, defined, inArray, last, limitValue, round, setDefaultOptions, sparseArrayLimits } from '../common';\n\nimport { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_MINUTE, TIME_PER_HOUR, TIME_PER_DAY, TIME_PER_WEEK,\n TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\nimport { dateComparer, toDate, addTicks, addDuration, dateDiff, absoluteDateDiff,\n dateIndex, dateEquals, toTime, parseDate, parseDates, firstDay } from '../date-utils';\n\nimport { DateLabelFormats } from './constants';\n\nvar AUTO = \"auto\";\nvar BASE_UNITS = [\n MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n];\nvar FIT = \"fit\";\n\n\nfunction categoryRange(categories, clearCache) {\n if (clearCache) {\n categories._range = undefined;\n }\n\n var range = categories._range;\n if (!range) {\n range = categories._range = sparseArrayLimits(categories);\n range.min = toDate(range.min);\n range.max = toDate(range.max);\n }\n\n return range;\n}\n\nvar EmptyDateRange = function EmptyDateRange(options) {\n this.options = options;\n};\n\nEmptyDateRange.prototype.displayIndices = function displayIndices () {\n return {\n min: 0,\n max: 1\n };\n};\n\nEmptyDateRange.prototype.displayRange = function displayRange () {\n return {};\n};\n\nEmptyDateRange.prototype.total = function total () {\n return {};\n};\n\nEmptyDateRange.prototype.valueRange = function valueRange () {\n return {};\n};\n\nEmptyDateRange.prototype.valueIndex = function valueIndex () {\n return -1;\n};\n\nEmptyDateRange.prototype.values = function values () {\n return [];\n};\n\nEmptyDateRange.prototype.totalIndex = function totalIndex () {\n return -1;\n};\n\nEmptyDateRange.prototype.valuesCount = function valuesCount () {\n return 0;\n};\n\nEmptyDateRange.prototype.totalCount = function totalCount () {\n return 0;\n};\n\nEmptyDateRange.prototype.dateAt = function dateAt () {\n return null;\n};\n\nvar DateRange = function DateRange(start, end, options) {\n this.options = options;\n options.baseUnitStep = options.baseUnitStep || 1;\n\n var roundToBaseUnit = options.roundToBaseUnit;\n var justified = options.justified;\n\n this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n var lowerEnd = this.roundToTotalStep(end);\n var expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n var min = options.min || start;\n this.valueStart = this.roundToTotalStep(min);\n this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n var max = options.max;\n if (!max) {\n this.valueEnd = lowerEnd;\n this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n } else {\n var next = !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0;\n this.valueEnd = this.roundToTotalStep(max, false, next);\n this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n }\n\n if (this.valueEnd < this.valueStart) {\n this.valueEnd = this.valueStart;\n }\n if (this.displayEnd <= this.displayStart) {\n this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n }\n};\n\nDateRange.prototype.displayRange = function displayRange () {\n return {\n min: this.displayStart,\n max: this.displayEnd\n };\n};\n\nDateRange.prototype.displayIndices = function displayIndices () {\n if (!this._indices) {\n var options = this.options;\n\n var baseUnit = options.baseUnit;\n var baseUnitStep = options.baseUnitStep;\n\n var minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n var maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n this._indices = { min: minIdx, max: maxIdx };\n }\n\n return this._indices;\n};\n\nDateRange.prototype.total = function total () {\n return {\n min: this.start,\n max: this.end\n };\n};\n\nDateRange.prototype.totalCount = function totalCount () {\n var last = this.totalIndex(this.end);\n\n return last + (this.options.justified ? 1 : 0);\n};\n\nDateRange.prototype.valueRange = function valueRange () {\n return {\n min: this.valueStart,\n max: this.valueEnd\n };\n};\n\nDateRange.prototype.valueIndex = function valueIndex (value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n};\n\nDateRange.prototype.totalIndex = function totalIndex (value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n};\n\nDateRange.prototype.dateIndex = function dateIndex$1 (value) {\n var options = this.options;\n return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n};\n\nDateRange.prototype.valuesCount = function valuesCount () {\n var maxIdx = this.valueIndex(this.valueEnd);\n\n return maxIdx + 1;\n};\n\nDateRange.prototype.values = function values () {\n var values = this._values;\n if (!values) {\n var options = this.options;\n var range = this.valueRange();\n this._values = values = [];\n\n for (var date = range.min; date <= range.max;) {\n values.push(date);\n date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n }\n }\n\n return values;\n};\n\nDateRange.prototype.dateAt = function dateAt (index, total) {\n var options = this.options;\n\n return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n};\n\nDateRange.prototype.roundToTotalStep = function roundToTotalStep (value, upper, next) {\n var ref = this.options;\n var baseUnit = ref.baseUnit;\n var baseUnitStep = ref.baseUnitStep;\n var weekStartDay = ref.weekStartDay;\n var start = this.start;\n\n var step = dateIndex(value, start, baseUnit, baseUnitStep);\n var roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n if (next) {\n roundedStep += next;\n }\n\n return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n};\n\nfunction autoBaseUnit(options, startUnit, startStep) {\n var categoryLimits = categoryRange(options.categories);\n var span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n var autoUnit = options.baseUnit === FIT;\n var autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n var baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n var units = span / TIME_PER_UNIT[baseUnit];\n var totalUnits = units;\n var unitSteps, step, nextStep;\n\n while (!step || units >= maxDateGroups) {\n unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n do {\n nextStep = unitSteps.shift();\n } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n if (nextStep) {\n step = nextStep;\n units = totalUnits / step;\n } else if (baseUnit === last(BASE_UNITS)) {\n step = Math.ceil(totalUnits / maxDateGroups);\n break;\n } else if (autoUnit) {\n baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n totalUnits = span / TIME_PER_UNIT[baseUnit];\n unitSteps = null;\n } else {\n if (units > maxDateGroups) {\n step = Math.ceil(totalUnits / maxDateGroups);\n }\n break;\n }\n }\n\n options.baseUnitStep = step;\n options.baseUnit = baseUnit;\n}\n\nfunction defaultBaseUnit(options) {\n var categories = options.categories;\n var count = defined(categories) ? categories.length : 0;\n var minDiff = MAX_VALUE;\n var lastCategory, unit;\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n var category = categories[categoryIx];\n\n if (category && lastCategory) {\n var diff = absoluteDateDiff(category, lastCategory);\n if (diff > 0) {\n minDiff = Math.min(minDiff, diff);\n\n if (minDiff >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n unit = MONTHS;\n } else if (minDiff >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (minDiff >= TIME_PER_DAY) {\n unit = DAYS;\n } else if (minDiff >= TIME_PER_HOUR) {\n unit = HOURS;\n } else if (minDiff >= TIME_PER_MINUTE) {\n unit = MINUTES;\n } else {\n unit = SECONDS;\n }\n }\n }\n\n lastCategory = category;\n }\n\n options.baseUnit = unit || DAYS;\n}\n\nfunction initUnit(options) {\n var baseUnit = (options.baseUnit || \"\").toLowerCase();\n var useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n if (useDefault) {\n defaultBaseUnit(options);\n }\n\n if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n autoBaseUnit(options);\n }\n\n return options;\n}\n\nvar DateCategoryAxis = (function (CategoryAxis) {\n function DateCategoryAxis () {\n CategoryAxis.apply(this, arguments);\n }\n\n if ( CategoryAxis ) DateCategoryAxis.__proto__ = CategoryAxis;\n DateCategoryAxis.prototype = Object.create( CategoryAxis && CategoryAxis.prototype );\n DateCategoryAxis.prototype.constructor = DateCategoryAxis;\n\n DateCategoryAxis.prototype.clone = function clone () {\n var copy = new DateCategoryAxis(Object.assign({}, this.options), this.chartService);\n copy.createLabels();\n\n return copy;\n };\n\n DateCategoryAxis.prototype.categoriesHash = function categoriesHash () {\n var start = this.dataRange.total().min;\n return this.options.baseUnit + this.options.baseUnitStep + start;\n };\n\n DateCategoryAxis.prototype.initUserOptions = function initUserOptions (options) {\n return options;\n };\n\n DateCategoryAxis.prototype.initFields = function initFields () {\n CategoryAxis.prototype.initFields.call(this);\n\n var chartService = this.chartService;\n var intlService = chartService.intl;\n var options = this.options;\n\n var categories = options.categories || [];\n if (!categories._parsed) {\n categories = parseDates(intlService, categories);\n categories._parsed = true;\n }\n\n options = deepExtend({\n roundToBaseUnit: true\n }, options, {\n categories: categories,\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n weekStartDay: firstDay(options, intlService)\n });\n\n if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n options.roundToBaseUnit = false;\n }\n\n options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n this.options = options;\n options.srcCategories = categories;\n\n if (categories.length > 0) {\n var range = categoryRange(categories, true);\n var maxDivisions = options.maxDivisions;\n var safeOptions = initUnit(options);\n\n var forecast = options._forecast;\n if (forecast) {\n if (forecast.before > 0) {\n range.min = addDuration(range.min, -forecast.before, safeOptions.baseUnit, safeOptions.weekStartDay);\n }\n\n if (forecast.after > 0) {\n range.max = addDuration(range.max, forecast.after, safeOptions.baseUnit, safeOptions.weekStartDay);\n }\n }\n\n this.dataRange = new DateRange(range.min, range.max, safeOptions);\n\n if (maxDivisions) {\n var dataRange = this.dataRange.displayRange();\n\n var divisionOptions = Object.assign({}, options, {\n justified: true,\n roundToBaseUnit: false,\n baseUnit: 'fit',\n min: dataRange.min,\n max: dataRange.max,\n maxDateGroups: maxDivisions\n });\n\n var dataRangeOptions = this.dataRange.options;\n\n autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n } else {\n this.divisionRange = this.dataRange;\n }\n\n } else {\n options.baseUnit = options.baseUnit || DAYS;\n this.dataRange = this.divisionRange = new EmptyDateRange(options);\n }\n\n this.rangeLabels = [];\n };\n\n DateCategoryAxis.prototype.tickIndices = function tickIndices (stepSize) {\n var ref = this;\n var dataRange = ref.dataRange;\n var divisionRange = ref.divisionRange;\n var valuesCount = divisionRange.valuesCount();\n\n if (!this.options.maxDivisions || !valuesCount) {\n return CategoryAxis.prototype.tickIndices.call(this, stepSize);\n }\n\n var indices = [];\n var values = divisionRange.values();\n var offset = 0;\n\n if (!this.options.justified) {\n values = values.concat(divisionRange.dateAt(valuesCount));\n offset = 0.5;//align ticks to the center of not justified categories\n }\n\n for (var idx = 0; idx < values.length; idx++) {\n indices.push(dataRange.dateIndex(values[idx]) + offset);\n if (stepSize !== 1 && idx >= 1) {\n var last = indices.length - 1;\n indices.splice(idx, 0, indices[last - 1] + (indices[last] - indices[last - 1]) * stepSize);\n }\n }\n\n return indices;\n };\n\n DateCategoryAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n var categories = this.options.categories || [];\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n };\n\n DateCategoryAxis.prototype.parseNoteValue = function parseNoteValue (value) {\n return parseDate(this.chartService.intl, value);\n };\n\n DateCategoryAxis.prototype.noteSlot = function noteSlot (value) {\n return this.getSlot(value);\n };\n\n DateCategoryAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var baseUnit = options.baseUnit;\n var weekStartDay = options.weekStartDay;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / (range.max - range.min);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if (range.min && range.max) {\n var from = addTicks(options.min || range.min, offset);\n var to = addTicks(options.max || range.max, offset);\n\n range = {\n min: addDuration(from, 0, baseUnit, weekStartDay),\n max: addDuration(to, 0, baseUnit, weekStartDay)\n };\n }\n\n return range;\n };\n\n DateCategoryAxis.prototype.labelsRange = function labelsRange () {\n return {\n min: this.options.labels.skip,\n max: this.divisionRange.valuesCount()\n };\n };\n\n DateCategoryAxis.prototype.pan = function pan (delta) {\n if (this.isEmpty()) {\n return null;\n }\n\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var ref = this.dataRange.displayRange();\n var min = ref.min;\n var max = ref.max;\n var totalLimits = this.dataRange.total();\n var scale = size / (max - min);\n var offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n var from = addTicks(min, offset);\n var to = addTicks(max, offset);\n\n var panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n if (panRange) {\n panRange.min = toDate(panRange.min);\n panRange.max = toDate(panRange.max);\n panRange.baseUnit = options.baseUnit;\n panRange.baseUnitStep = options.baseUnitStep || 1;\n panRange.userSetBaseUnit = options.userSetBaseUnit;\n panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n return panRange;\n }\n };\n\n DateCategoryAxis.prototype.pointsRange = function pointsRange (start, end) {\n if (this.isEmpty()) {\n return null;\n }\n\n var pointsRange = CategoryAxis.prototype.pointsRange.call(this, start, end);\n var datesRange = this.dataRange.displayRange();\n var indicesRange = this.dataRange.displayIndices();\n var scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n var options = this.options;\n\n var min = addTicks(datesRange.min, pointsRange.min * scale);\n var max = addTicks(datesRange.min, pointsRange.max * scale);\n\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n };\n\n DateCategoryAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n if (this.isEmpty()) {\n return {};\n }\n\n var options = this.options;\n var fit = options.userSetBaseUnit === FIT;\n var totalLimits = this.dataRange.total();\n var ref = this.dataRange.displayRange();\n var rangeMin = ref.min;\n var rangeMax = ref.max;\n\n var position = Math.abs(this.pointOffset(cursor));\n var range = rangeMax - rangeMin;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = Math.round(position * delta);\n var maxDelta = Math.round((1 - position) * delta);\n\n var ref$1 = this.dataRange.options;\n var baseUnit = ref$1.baseUnit;\n var min = new Date(rangeMin.getTime() + minDelta);\n var max = new Date(rangeMax.getTime() - maxDelta);\n\n if (fit) {\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n\n var maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n var rangeDiff = dateDiff(rangeMax, rangeMin);\n var diff = dateDiff(max, min);\n var baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n var autoBaseUnitStep, ticks;\n\n if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n baseUnit = BASE_UNITS[baseUnitIndex - 1];\n autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n min = addTicks(rangeMin, ticks);\n max = addTicks(rangeMax, -ticks);\n\n } else if (diff > maxDiff && baseUnit !== YEARS) {\n var stepIndex = 0;\n\n do {\n baseUnitIndex++;\n baseUnit = BASE_UNITS[baseUnitIndex];\n stepIndex = 0;\n ticks = 2 * TIME_PER_UNIT[baseUnit];\n do {\n autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n stepIndex++;\n } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n if (ticks > 0) {\n min = addTicks(rangeMin, -ticks);\n max = addTicks(rangeMax, ticks);\n min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n }\n }\n }\n\n if (min && max && dateDiff(max, min) > 0) {\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n };\n\n DateCategoryAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var totalLimits = this.dataRange.total();\n var range = this.scaleRange(scale, cursor);\n\n if (range) {\n if (range.min < totalLimits.min) {\n range.min = totalLimits.min;\n }\n if (range.max > totalLimits.max) {\n range.max = totalLimits.max;\n }\n }\n\n return range;\n };\n\n DateCategoryAxis.prototype.range = function range () {\n return this.dataRange.displayRange();\n };\n\n DateCategoryAxis.prototype.createLabels = function createLabels () {\n CategoryAxis.prototype.createLabels.call(this);\n this.createRangeLabels();\n };\n\n DateCategoryAxis.prototype.clearLabels = function clearLabels () {\n CategoryAxis.prototype.clearLabels.call(this);\n this.rangeLabels = [];\n };\n\n DateCategoryAxis.prototype.arrangeLabels = function arrangeLabels () {\n this.arrangeRangeLabels();\n CategoryAxis.prototype.arrangeLabels.call(this);\n };\n\n DateCategoryAxis.prototype.arrangeRangeLabels = function arrangeRangeLabels () {\n var ref = this;\n var options = ref.options;\n var rangeLabels = ref.rangeLabels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n var firstLabel = rangeLabels[0];\n if (firstLabel) {\n var position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n this.positionLabel(firstLabel, mirror, position);\n }\n\n var lastLabel = rangeLabels[1];\n if (lastLabel) {\n var position$1 = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n this.positionLabel(lastLabel, mirror, position$1);\n }\n };\n\n DateCategoryAxis.prototype.autoRotateLabels = function autoRotateLabels () {\n CategoryAxis.prototype.autoRotateLabels.call(this);\n this.autoRotateRangeLabels();\n };\n\n DateCategoryAxis.prototype.hideOutOfRangeLabels = function hideOutOfRangeLabels () {\n CategoryAxis.prototype.hideOutOfRangeLabels.call(this);\n this.hideOverlappingLabels();\n };\n\n DateCategoryAxis.prototype.hideOverlappingLabels = function hideOverlappingLabels () {\n var ref = this;\n var rangeLabels = ref.rangeLabels;\n var labels = ref.labels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n function clip(rangeLabel, label) {\n if (!label.options.visible || label.box.overlaps(rangeLabel.box)) {\n label.options.visible = false;\n return true;\n }\n\n return false;\n }\n\n var firstRangeLabel = rangeLabels[0];\n if (firstRangeLabel && firstRangeLabel.options.visible) {\n for (var i = 0; i < labels.length; i++) {\n var overlaps = clip(firstRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n\n var lastRangeLabel = rangeLabels[1];\n if (lastRangeLabel && lastRangeLabel.options.visible) {\n for (var i$1 = labels.length - 1; i$1 > 0; --i$1) {\n var overlaps$1 = clip(lastRangeLabel, labels[i$1]);\n if (!overlaps$1) {\n break;\n }\n }\n }\n };\n\n DateCategoryAxis.prototype.contentBox = function contentBox () {\n var box = CategoryAxis.prototype.contentBox.call(this);\n var rangeLabels = this.rangeLabels;\n\n for (var i = 0; i < rangeLabels.length; i++) {\n var label = rangeLabels[i];\n if (label.options.visible) {\n box.wrap(label.box);\n }\n }\n\n return box;\n };\n\n DateCategoryAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n if ( labelContext === void 0 ) labelContext = {};\n\n var options = this.options;\n var dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n var date = this.divisionRange.dateAt(index);\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n labelOptions.format = labelOptions.format || unitFormat;\n labelContext.dataItem = dataItem;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n if (text) {\n return new AxisLabel(date, text, index, dataItem, labelOptions);\n }\n };\n\n DateCategoryAxis.prototype.createRangeLabels = function createRangeLabels () {\n var this$1 = this;\n\n var ref = this.divisionRange;\n var displayStart = ref.displayStart;\n var displayEnd = ref.displayEnd;\n var options = this.options;\n var labelOptions = Object.assign({}, options.labels, options.rangeLabels, {\n align: CENTER,\n zIndex: options.zIndex\n });\n\n if (labelOptions.visible !== true) {\n return;\n }\n\n this.normalizeLabelRotation(labelOptions);\n labelOptions.alignRotation = CENTER;\n\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateRangeLabels = true;\n }\n\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var createLabel = function (index, date, text) {\n if (text) {\n var label = new AxisLabel(date, text, index, null, labelOptions);\n this$1.append(label);\n this$1.rangeLabels.push(label);\n }\n };\n\n var startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n createLabel(0, displayStart, startText);\n\n var endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n createLabel(1, displayEnd, endText);\n };\n\n DateCategoryAxis.prototype.autoRotateRangeLabels = function autoRotateRangeLabels () {\n var this$1 = this;\n\n var labels = this.rangeLabels;\n if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n return;\n }\n\n var rotateLabel = function (label, tickPositions, index) {\n var width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n var angle = this$1.autoRotateLabelAngle(label.box, width);\n if (angle !== 0) {\n label.options.rotation = angle;\n label.reflow(new Box());\n }\n };\n\n var tickPositions = this.getMajorTickPositions();\n rotateLabel(labels[0], tickPositions, 0);\n rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n };\n\n DateCategoryAxis.prototype.categoryIndex = function categoryIndex (value) {\n return this.dataRange.valueIndex(value);\n };\n\n DateCategoryAxis.prototype.slot = function slot (from, to, limit) {\n var dateRange = this.dataRange;\n var start = from;\n var end = to;\n\n if (start instanceof Date) {\n start = dateRange.dateIndex(start);\n }\n\n if (end instanceof Date) {\n end = dateRange.dateIndex(end);\n }\n\n var slot = this.getSlot(start, end, limit);\n if (slot) {\n return slot.toRect();\n }\n };\n\n DateCategoryAxis.prototype.getSlot = function getSlot (a, b, limit) {\n var start = a;\n var end = b;\n\n if (typeof start === OBJECT) {\n start = this.categoryIndex(start);\n }\n\n if (typeof end === OBJECT) {\n end = this.categoryIndex(end);\n }\n\n return CategoryAxis.prototype.getSlot.call(this, start, end, limit);\n };\n\n DateCategoryAxis.prototype.valueRange = function valueRange () {\n var options = this.options;\n var range = categoryRange(options.srcCategories);\n\n return {\n min: toDate(range.min),\n max: toDate(range.max)\n };\n };\n\n DateCategoryAxis.prototype.categoryAt = function categoryAt (index, total) {\n return this.dataRange.dateAt(index, total);\n };\n\n DateCategoryAxis.prototype.categoriesCount = function categoriesCount () {\n return this.dataRange.valuesCount();\n };\n\n DateCategoryAxis.prototype.rangeIndices = function rangeIndices () {\n return this.dataRange.displayIndices();\n };\n\n DateCategoryAxis.prototype.labelsBetweenTicks = function labelsBetweenTicks () {\n return !this.divisionRange.options.justified;\n };\n\n DateCategoryAxis.prototype.prepareUserOptions = function prepareUserOptions () {\n if (this.isEmpty()) {\n return;\n }\n\n this.options.categories = this.dataRange.values();\n };\n\n DateCategoryAxis.prototype.getCategory = function getCategory (point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.dataRange.dateAt(index);\n };\n\n DateCategoryAxis.prototype.totalIndex = function totalIndex (value) {\n return this.dataRange.totalIndex(value);\n };\n\n DateCategoryAxis.prototype.currentRangeIndices = function currentRangeIndices () {\n var range = this.dataRange.valueRange();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n };\n\n DateCategoryAxis.prototype.totalRange = function totalRange () {\n return this.dataRange.total();\n };\n\n DateCategoryAxis.prototype.totalRangeIndices = function totalRangeIndices () {\n var range = this.dataRange.total();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n };\n\n DateCategoryAxis.prototype.totalCount = function totalCount () {\n return this.dataRange.totalCount();\n };\n\n DateCategoryAxis.prototype.isEmpty = function isEmpty () {\n return !this.options.srcCategories.length;\n };\n\n DateCategoryAxis.prototype.roundedRange = function roundedRange () {\n if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n return this.range();\n }\n\n var options = this.options;\n var datesRange = categoryRange(options.srcCategories);\n\n var dateRange = new DateRange(datesRange.min, datesRange.max, Object.assign({}, options, {\n justified: false,\n roundToBaseUnit: true,\n justifyEnd: false\n }));\n\n return dateRange.displayRange();\n };\n\n return DateCategoryAxis;\n}(CategoryAxis));\n\nsetDefaultOptions(DateCategoryAxis, {\n type: DATE,\n labels: {\n dateFormats: DateLabelFormats\n },\n rangeLabels: {\n visible: false\n },\n autoBaseUnitSteps: {\n milliseconds: [ 1, 10, 100 ],\n seconds: [ 1, 2, 5, 15, 30 ],\n minutes: [ 1, 2, 5, 15, 30 ],\n hours: [ 1, 2, 3 ],\n days: [ 1, 2, 3 ],\n weeks: [ 1, 2 ],\n months: [ 1, 2, 3, 6 ],\n years: [ 1, 2, 3, 5, 10, 25, 50 ]\n },\n maxDateGroups: 10\n});\n\nexport default DateCategoryAxis;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function floor(value, step) {\n return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function ceil(value, step) {\n return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n}","import { COORDINATE_LIMIT } from '../constants';\n\nexport default function limitCoordinate(value) {\n return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n}","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { BLACK, DEFAULT_PRECISION, COORD_PRECISION } from '../common/constants';\nimport { deepExtend, defined, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport autoAxisMin from './utils/auto-axis-min';\nimport autoAxisMax from './utils/auto-axis-max';\nimport floor from './utils/floor';\nimport ceil from './utils/ceil';\nimport limitCoordinate from './utils/limit-coordinate';\n\nvar MIN_VALUE_RANGE = Math.pow(10, -DEFAULT_PRECISION + 1);\n\nvar NumericAxis = (function (Axis) {\n function NumericAxis(seriesMin, seriesMax, options, chartService) {\n Axis.call(this, Object.assign({}, options, {\n seriesMin: seriesMin,\n seriesMax: seriesMax\n }), chartService);\n }\n\n if ( Axis ) NumericAxis.__proto__ = Axis;\n NumericAxis.prototype = Object.create( Axis && Axis.prototype );\n NumericAxis.prototype.constructor = NumericAxis;\n\n NumericAxis.prototype.initUserOptions = function initUserOptions (options) {\n var autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n this.totalOptions = totalAxisOptions(autoOptions, options);\n\n return axisOptions(autoOptions, options);\n };\n\n NumericAxis.prototype.initFields = function initFields () {\n this.totalMin = this.totalOptions.min;\n this.totalMax = this.totalOptions.max;\n this.totalMajorUnit = this.totalOptions.majorUnit;\n this.seriesMin = this.options.seriesMin;\n this.seriesMax = this.options.seriesMax;\n };\n\n NumericAxis.prototype.clone = function clone () {\n return new NumericAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n };\n\n NumericAxis.prototype.startValue = function startValue () {\n return 0;\n };\n\n NumericAxis.prototype.range = function range () {\n var options = this.options;\n return { min: options.min, max: options.max };\n };\n\n NumericAxis.prototype.getDivisions = function getDivisions (stepValue) {\n if (stepValue === 0) {\n return 1;\n }\n\n var options = this.options;\n var range = options.max - options.min;\n\n return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n };\n\n NumericAxis.prototype.getTickPositions = function getTickPositions (unit, skipUnit) {\n var options = this.options;\n var ref = this.lineInfo();\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var range = options.max - options.min;\n var scale = lineSize / range;\n var step = unit * scale;\n var divisions = this.getDivisions(unit);\n var positions = [];\n var pos = lineBox[axisOrigin];\n var skipStep = 0;\n\n if (skipUnit) {\n skipStep = skipUnit / unit;\n }\n\n for (var idx = 0; idx < divisions; idx++) {\n if (idx % skipStep !== 0) {\n positions.push(round(pos, COORD_PRECISION));\n }\n\n pos = pos + step * axisDir;\n }\n\n return positions;\n };\n\n NumericAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n return this.getTickPositions(this.options.majorUnit);\n };\n\n NumericAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n return this.getTickPositions(this.options.minorUnit);\n };\n\n NumericAxis.prototype.getSlot = function getSlot (a, b, limit) {\n if ( limit === void 0 ) limit = false;\n\n var options = this.options;\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var lineStart = ref.lineStart;\n var step = axisDir * (lineSize / (options.max - options.min));\n\n var start = valueOrDefault(a, b || 0);\n var end = valueOrDefault(b, a || 0);\n\n if (limit) {\n start = limitValue(start, options.min, options.max);\n end = limitValue(end, options.min, options.max);\n }\n\n var p1 = Math.min(start, end) - options.min;\n var p2 = Math.max(start, end) - options.min;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n };\n\n NumericAxis.prototype.getValue = function getValue (point) {\n var options = this.options;\n var max = Number(options.max);\n var min = Number(options.min);\n var offset = this.pointOffset(point);\n var valueOffset = offset * (max - min);\n\n if (offset < 0 || offset > 1) {\n return null;\n }\n\n var value = min + valueOffset;\n return round(value, DEFAULT_PRECISION);\n };\n\n NumericAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var vertical = options.vertical;\n var reverse = options.reverse;\n var max = options.max;\n var min = options.min;\n var ref = this.lineInfo();\n var lineSize = ref.lineSize;\n var range = max - min;\n var scale = lineSize / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: min + offset,\n max: max + offset,\n offset: offset\n };\n };\n\n NumericAxis.prototype.labelsCount = function labelsCount () {\n return this.getDivisions(this.options.majorUnit);\n };\n\n NumericAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var options = this.options;\n var value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n };\n\n NumericAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n };\n\n NumericAxis.prototype.pan = function pan (delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n };\n\n NumericAxis.prototype.pointsRange = function pointsRange (start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n if (this.isValidRange(min, max)) {\n return {\n min: min,\n max: max\n };\n }\n };\n\n NumericAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n var max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n NumericAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax),\n narrowRange: false\n };\n };\n\n NumericAxis.prototype.isValidRange = function isValidRange (min, max) {\n return max - min > MIN_VALUE_RANGE;\n };\n\n return NumericAxis;\n}(Axis));\n\nfunction autoAxisOptions(seriesMin, seriesMax, options) {\n var narrowRange = options.narrowRange;\n\n var autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n var autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n var majorUnit = autoMajorUnit(autoMin, autoMax);\n var autoOptions = {\n majorUnit: majorUnit\n };\n\n if (options.roundToMajorUnit !== false) {\n if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n autoMin -= majorUnit;\n }\n\n if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n autoMax += majorUnit;\n }\n }\n\n autoOptions.min = floor(autoMin, majorUnit);\n autoOptions.max = ceil(autoMax, majorUnit);\n\n return autoOptions;\n}\n\nfunction totalAxisOptions(autoOptions, options) {\n return {\n min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n majorUnit: autoOptions.majorUnit\n };\n}\n\nfunction clearNullValues(options, fields) {\n for (var idx = 0; idx < fields.length; idx++) {\n var field = fields[idx];\n if (options[field] === null) {\n options[field] = undefined;\n }\n }\n}\n\nfunction axisOptions(autoOptions, userOptions) {\n var options = userOptions;\n var userSetMin, userSetMax;\n\n if (userOptions) {\n clearNullValues(userOptions, [ 'min', 'max' ]);\n\n userSetMin = defined(userOptions.min);\n userSetMax = defined(userOptions.max);\n\n var userSetLimits = userSetMin || userSetMax;\n\n if (userSetLimits) {\n if (userOptions.min === userOptions.max) {\n if (userOptions.min > 0) {\n userOptions.min = 0;\n } else {\n userOptions.max = 1;\n }\n }\n }\n\n if (userOptions.majorUnit) {\n autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n } else if (userSetLimits) {\n options = deepExtend(autoOptions, userOptions);\n\n // Determine an auto major unit after min/max have been set\n autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n }\n }\n\n autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n var result = deepExtend(autoOptions, options);\n if (result.min >= result.max) {\n if (userSetMin && !userSetMax) {\n result.max = result.min + result.majorUnit;\n } else if (!userSetMin && userSetMax) {\n result.min = result.max - result.majorUnit;\n }\n }\n\n return result;\n}\n\nfunction remainderClose(value, divisor, ratio) {\n var remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n var threshold = divisor * (1 - ratio);\n\n return remainder === 0 || remainder > threshold;\n}\n\nsetDefaultOptions(NumericAxis, {\n type: \"numeric\",\n min: 0,\n max: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n format: \"#.####################\"\n },\n zIndex: 1\n});\n\nexport default NumericAxis;\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMin(min, max, narrow) {\n if (!min && !max) {\n return 0;\n }\n\n var axisMin;\n\n if (min >= 0 && max >= 0) {\n var minValue = min === max ? 0 : min;\n\n var diff = (max - minValue) / max;\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n } else {\n axisMin = min;\n }\n\n return axisMin;\n}\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMax(min, max, narrow) {\n if (!min && !max) {\n return 1;\n }\n\n var axisMax;\n\n if (min <= 0 && max <= 0) {\n var maxValue = min === max ? 0 : max;\n\n var diff = Math.abs((maxValue - min) / maxValue);\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n } else {\n axisMax = max;\n }\n\n return axisMax;\n}","import Axis from './axis';\nimport NumericAxis from './numeric-axis';\nimport AxisLabel from './axis-label';\nimport { DateLabelFormats } from './constants';\n\nimport { BLACK, DATE, COORD_PRECISION, DEFAULT_PRECISION } from '../common/constants';\nimport { setDefaultOptions, deepExtend, limitValue, round } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport ceil from './utils/ceil';\n\nimport { toDate, toTime, floorDate, ceilDate, duration, addDuration, addTicks, dateDiff, absoluteDateDiff, dateComparer, parseDate, parseDates, firstDay } from '../date-utils';\nimport { HOURS, DAYS, WEEKS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_WEEK, TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\n\nvar MIN_VALUE_RANGE = 1000;\n\nvar DateValueAxis = (function (Axis) {\n function DateValueAxis(seriesMin, seriesMax, axisOptions, chartService) {\n var min = toDate(seriesMin);\n var max = toDate(seriesMax);\n\n var intlService = chartService.intl;\n var options = axisOptions || {};\n options = deepExtend(options || {}, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue),\n weekStartDay: firstDay(options, intlService)\n });\n options = applyDefaults(min, max, options);\n\n Axis.call(this, options, chartService);\n\n this.intlService = intlService;\n this.seriesMin = min;\n this.seriesMax = max;\n\n var weekStartDay = options.weekStartDay || 0;\n this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n }\n\n if ( Axis ) DateValueAxis.__proto__ = Axis;\n DateValueAxis.prototype = Object.create( Axis && Axis.prototype );\n DateValueAxis.prototype.constructor = DateValueAxis;\n\n DateValueAxis.prototype.clone = function clone () {\n return new DateValueAxis(this.seriesMin, this.seriesMax, Object.assign({}, this.options), this.chartService);\n };\n\n DateValueAxis.prototype.range = function range () {\n var options = this.options;\n return { min: options.min, max: options.max };\n };\n\n DateValueAxis.prototype.getDivisions = function getDivisions (stepValue) {\n var options = this.options;\n\n return Math.floor(\n duration(options.min, options.max, options.baseUnit) / stepValue + 1\n );\n };\n\n DateValueAxis.prototype.getTickPositions = function getTickPositions (step) {\n var options = this.options;\n var ref = this.lineInfo();\n var dir = ref.axisDir;\n var lineSize = ref.lineSize;\n var start = ref.lineStart;\n var divisions = this.getDivisions(step);\n var timeRange = dateDiff(options.max, options.min);\n var scale = lineSize / timeRange;\n var weekStartDay = options.weekStartDay || 0;\n\n var positions = [ start ];\n for (var i = 1; i < divisions; i++) {\n var date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n var pos = start + dateDiff(date, options.min) * scale * dir;\n\n positions.push(round(pos, COORD_PRECISION));\n }\n\n return positions;\n };\n\n DateValueAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n return this.getTickPositions(this.options.majorUnit);\n };\n\n DateValueAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n return this.getTickPositions(this.options.minorUnit);\n };\n\n DateValueAxis.prototype.getSlot = function getSlot (a, b, limit) {\n return NumericAxis.prototype.getSlot.call(\n this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n );\n };\n\n DateValueAxis.prototype.getValue = function getValue (point) {\n var value = NumericAxis.prototype.getValue.call(this, point);\n\n return value !== null ? toDate(value) : null;\n };\n\n DateValueAxis.prototype.labelsCount = function labelsCount () {\n return this.getDivisions(this.options.majorUnit);\n };\n\n DateValueAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var options = this.options;\n var offset = index * options.majorUnit;\n var weekStartDay = options.weekStartDay || 0;\n var date = options.min;\n\n if (offset > 0) {\n date = addDuration(date, offset, options.baseUnit, weekStartDay);\n }\n\n var unitFormat = labelOptions.dateFormats[options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n return new AxisLabel(date, text, index, null, labelOptions);\n };\n\n DateValueAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var reverse = options.reverse;\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / dateDiff(range.max, range.min);\n\n var offset = round(delta / scale, DEFAULT_PRECISION);\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n var from = addTicks(options.min, offset);\n var to = addTicks(options.max, offset);\n\n return {\n min: from,\n max: to,\n offset: offset\n };\n };\n\n DateValueAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n };\n\n DateValueAxis.prototype.pan = function pan (delta) {\n var range = this.translateRange(delta, true);\n var limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n if (limittedRange) {\n return {\n min: toDate(limittedRange.min),\n max: toDate(limittedRange.max)\n };\n }\n };\n\n DateValueAxis.prototype.pointsRange = function pointsRange (start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: toDate(min),\n max: toDate(max)\n };\n };\n\n DateValueAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = toDate(toTime(this.options.min) + minDelta);\n var max = toDate(toTime(this.options.max) - maxDelta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = toDate(toTime(min) + MIN_VALUE_RANGE);\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n DateValueAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n var max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n return {\n min: min,\n max: max\n };\n };\n\n return DateValueAxis;\n}(Axis));\n\nfunction timeUnits(delta) {\n var unit = HOURS;\n\n if (delta >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (delta >= TIME_PER_MONTH) {\n unit = MONTHS;\n } else if (delta >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (delta >= TIME_PER_DAY) {\n unit = DAYS;\n }\n\n return unit;\n}\n\nfunction applyDefaults(seriesMin, seriesMax, options) {\n var min = options.min || seriesMin;\n var max = options.max || seriesMax;\n var baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n var baseUnitTime = TIME_PER_UNIT[baseUnit];\n var weekStartDay = options.weekStartDay || 0;\n var autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n var autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n var userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n var majorUnit = userMajorUnit || ceil(\n autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n baseUnitTime\n ) / baseUnitTime;\n var actualUnits = duration(autoMin, autoMax, baseUnit);\n var totalUnits = ceil(actualUnits, majorUnit);\n var unitsToAdd = totalUnits - actualUnits;\n var head = Math.floor(unitsToAdd / 2);\n var tail = unitsToAdd - head;\n\n if (!options.baseUnit) {\n delete options.baseUnit;\n }\n\n options.baseUnit = options.baseUnit || baseUnit;\n options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n options.minorUnit = options.minorUnit || majorUnit / 5;\n options.majorUnit = majorUnit;\n\n return options;\n}\n\nsetDefaultOptions(DateValueAxis, {\n type: DATE,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n dateFormats: DateLabelFormats\n }\n});\n\nexport default DateValueAxis;\n","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\nimport limitCoordinate from './utils/limit-coordinate';\n\nimport { DEFAULT_PRECISION, BLACK } from '../common/constants';\nimport { deepExtend, defined, inArray, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nvar DEFAULT_MAJOR_UNIT = 10;\nvar MIN_VALUE_RANGE = 1e-6;\n\nvar LogarithmicAxis = (function (Axis) {\n function LogarithmicAxis(seriesMin, seriesMax, options, chartService) {\n\n var axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n var base = axisOptions.majorUnit;\n var autoMax = autoAxisMax(seriesMax, base);\n var autoMin = autoAxisMin(seriesMin, seriesMax, axisOptions);\n var range = initRange(autoMin, autoMax, axisOptions, options);\n\n axisOptions.max = range.max;\n axisOptions.min = range.min;\n axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n Axis.call(this, axisOptions, chartService);\n\n this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n this.seriesMin = seriesMin;\n this.seriesMax = seriesMax;\n\n this.createLabels();\n }\n\n if ( Axis ) LogarithmicAxis.__proto__ = Axis;\n LogarithmicAxis.prototype = Object.create( Axis && Axis.prototype );\n LogarithmicAxis.prototype.constructor = LogarithmicAxis;\n\n LogarithmicAxis.prototype.clone = function clone () {\n return new LogarithmicAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n };\n\n LogarithmicAxis.prototype.startValue = function startValue () {\n return this.options.min;\n };\n\n LogarithmicAxis.prototype.getSlot = function getSlot (a, b, limit) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var min = options.min;\n var max = options.max;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineBox = ref$1.lineBox;\n var lineSize = ref$1.lineSize;\n var lineStart = ref$1.lineStart;\n var step = axisDir * (lineSize / (logMax - logMin));\n var start = valueOrDefault(a, b || 1);\n var end = valueOrDefault(b, a || 1);\n\n if (start <= 0 || end <= 0) {\n return null;\n }\n\n if (limit) {\n start = limitValue(start, min, max);\n end = limitValue(end, min, max);\n }\n\n start = log(start, base);\n end = log(end, base);\n\n var p1 = Math.min(start, end) - logMin;\n var p2 = Math.max(start, end) - logMin;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n };\n\n LogarithmicAxis.prototype.getValue = function getValue (point) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineStart = ref$1.lineStart;\n var lineSize = ref$1.lineSize;\n var step = ((logMax - logMin) / lineSize);\n var offset = axisDir * (point[axis] - lineStart);\n var valueOffset = offset * step;\n\n if (offset < 0 || offset > lineSize) {\n return null;\n }\n\n var value = logMin + valueOffset;\n\n return round(Math.pow(base, value), DEFAULT_PRECISION);\n };\n\n LogarithmicAxis.prototype.range = function range () {\n var options = this.options;\n return { min: options.min, max: options.max };\n };\n\n LogarithmicAxis.prototype.translateRange = function translateRange (delta) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var reverse = options.reverse;\n var vertical = options.vertical;\n var base = options.majorUnit;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var scale = size / (logMax - logMin);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: Math.pow(base, logMin + offset),\n max: Math.pow(base, logMax + offset),\n offset: offset\n };\n };\n\n LogarithmicAxis.prototype.labelsCount = function labelsCount () {\n var floorMax = Math.floor(this.logMax);\n var count = Math.floor(floorMax - this.logMin) + 1;\n\n return count;\n };\n\n LogarithmicAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n var ticks = [];\n\n this.traverseMajorTicksPositions(function (position) {\n ticks.push(position);\n }, { step: 1, skip: 0 });\n\n return ticks;\n };\n\n LogarithmicAxis.prototype.createTicks = function createTicks (lineGroup) {\n var options = this.options;\n var majorTicks = options.majorTicks;\n var minorTicks = options.minorTicks;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var lineBox = this.lineBox();\n var ticks = [];\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: vertical\n };\n\n function render(tickPosition, tickOptions) {\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPosition;\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n\n if (majorTicks.visible) {\n this.traverseMajorTicksPositions(render, majorTicks);\n }\n\n if (minorTicks.visible) {\n this.traverseMinorTicksPositions(render, minorTicks);\n }\n\n return ticks;\n };\n\n LogarithmicAxis.prototype.createGridLines = function createGridLines (altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var vertical = options.vertical;\n var lineBox = altAxis.lineBox();\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n function render(tickPosition, gridLine) {\n if (!inArray(tickPosition, majorTicks)) {\n lineOptions.position = tickPosition;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(tickPosition);\n }\n }\n\n if (majorGridLines.visible) {\n this.traverseMajorTicksPositions(render, majorGridLines);\n }\n\n if (minorGridLines.visible) {\n this.traverseMinorTicksPositions(render, minorGridLines);\n }\n\n return container.children;\n };\n\n LogarithmicAxis.prototype.traverseMajorTicksPositions = function traverseMajorTicksPositions (callback, tickOptions) {\n var ref = this.lineInfo();\n var lineStart = ref.lineStart;\n var step = ref.step;\n var ref$1 = this;\n var logMin = ref$1.logMin;\n var logMax = ref$1.logMax;\n\n for (var power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n var position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n };\n\n LogarithmicAxis.prototype.traverseMinorTicksPositions = function traverseMinorTicksPositions (callback, tickOptions) {\n var this$1 = this;\n\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var ref$1 = this.lineInfo();\n var lineStart = ref$1.lineStart;\n var step = ref$1.step;\n var ref$2 = this;\n var logMin = ref$2.logMin;\n var logMax = ref$2.logMax;\n var start = Math.floor(logMin);\n\n for (var power = start; power < logMax; power++) {\n var minorOptions = this$1._minorIntervalOptions(power);\n for (var idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n var value = minorOptions.value + idx * minorOptions.minorStep;\n if (value > max) {\n break;\n }\n if (value >= min) {\n var position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n }\n };\n\n LogarithmicAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var power = Math.ceil(this.logMin + index);\n var value = Math.pow(this.options.majorUnit, power);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n };\n\n LogarithmicAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n };\n\n LogarithmicAxis.prototype.pan = function pan (delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n };\n\n LogarithmicAxis.prototype.pointsRange = function pointsRange (start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: min,\n max: max\n };\n };\n\n LogarithmicAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var ref = this.options;\n var base = ref.majorUnit;\n var logMin = log(this.options.min, base);\n var logMax = log(this.options.max, base);\n var position = Math.abs(this.pointOffset(cursor));\n var range = logMax - logMin;\n var delta = this.scaleToDelta(scale, range);\n var min = Math.pow(base, logMin + position * delta);\n var max = Math.pow(base, logMax - (1 - position) * delta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n LogarithmicAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n };\n\n LogarithmicAxis.prototype._minorIntervalOptions = function _minorIntervalOptions (power) {\n var ref = this.options;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var value = Math.pow(base, power);\n var nextValue = Math.pow(base, power + 1);\n var difference = nextValue - value;\n var minorStep = difference / minorUnit;\n\n return {\n value: value,\n minorStep: minorStep\n };\n };\n\n LogarithmicAxis.prototype.lineInfo = function lineInfo () {\n var info = Axis.prototype.lineInfo.call(this);\n info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n return info;\n };\n\n return LogarithmicAxis;\n}(Axis));\n\nfunction initRange(autoMin, autoMax, axisOptions, options) {\n var min = axisOptions.min;\n var max = axisOptions.max;\n\n if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.max)) {\n max = autoMax;\n } else if (options.max <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.min)) {\n min = autoMin;\n } else if (options.min <= 0) {\n throwNegativeValuesError();\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction autoAxisMin(min, max, options) {\n var base = options.majorUnit;\n var autoMin = min;\n if (min <= 0) {\n autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n } else if (!options.narrowRange) {\n autoMin = Math.pow(base, Math.floor(log(min, base)));\n }\n return autoMin;\n}\n\nfunction autoAxisMax(max, base) {\n var logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n var autoMax;\n if (max <= 0) {\n autoMax = base;\n } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n autoMax = Math.pow(base, log(max, base) + 0.2);\n } else {\n autoMax = Math.pow(base, Math.ceil(log(max, base)));\n }\n\n return autoMax;\n}\n\nfunction throwNegativeValuesError() {\n throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n}\n\nfunction log(x, base) {\n return Math.log(x) / Math.log(base);\n}\n\nsetDefaultOptions(LogarithmicAxis, {\n type: \"log\",\n majorUnit: DEFAULT_MAJOR_UNIT,\n minorUnit: 1,\n axisCrossingValue: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n zIndex: 1,\n _deferLabels: true\n});\n\nexport default LogarithmicAxis;\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport { append, map } from '../../common';\n\nvar GridLinesMixin = {\n createGridLines: function(altAxis) {\n var options = this.options;\n var radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n var gridLines = [];\n var skipMajor = false;\n var majorAngles, minorAngles;\n\n if (options.majorGridLines.visible) {\n majorAngles = this.majorGridLineAngles(altAxis);\n skipMajor = true;\n\n gridLines = this.renderMajorGridLines(\n majorAngles, radius, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n append(gridLines, this.renderMinorGridLines(\n minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n ));\n }\n\n return gridLines;\n },\n\n renderMajorGridLines: function(angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n\n renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n var radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n\n renderGridLines: function(angles, radius, options, radiusCallback) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n\n var center = this.box.center();\n var circle = new geom.Circle([ center.x, center.y ], radius);\n var container = this.gridLinesVisual();\n\n for (var i = 0; i < angles.length; i++) {\n var line = new draw.Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n\n line.moveTo(circle.center)\n .lineTo(circle.pointAt(angles[i] + 180));\n\n container.append(line);\n }\n\n return container.children;\n },\n\n gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n var this$1 = this;\n\n var divs = this.intervals(size, skip, step, skipAngles);\n var options = altAxis.options;\n var altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n return map(divs, function (d) {\n var alpha = this$1.intervalAngle(d);\n\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n};\n\nexport default GridLinesMixin;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport CategoryAxis from './category-axis';\nimport ShapeBuilder from './shape-builder';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { COORD_PRECISION, ARC } from '../common/constants';\nimport { deepExtend, getSpacing, inArray, limitValue, map, rad, round, setDefaultOptions } from '../common';\n\nvar RadarCategoryAxis = (function (CategoryAxis) {\n function RadarCategoryAxis () {\n CategoryAxis.apply(this, arguments);\n }\n\n if ( CategoryAxis ) RadarCategoryAxis.__proto__ = CategoryAxis;\n RadarCategoryAxis.prototype = Object.create( CategoryAxis && CategoryAxis.prototype );\n RadarCategoryAxis.prototype.constructor = RadarCategoryAxis;\n\n RadarCategoryAxis.prototype.range = function range () {\n return { min: 0, max: this.options.categories.length };\n };\n\n RadarCategoryAxis.prototype.reflow = function reflow (box) {\n this.box = box;\n this.reflowLabels();\n };\n\n RadarCategoryAxis.prototype.lineBox = function lineBox () {\n return this.box;\n };\n\n RadarCategoryAxis.prototype.reflowLabels = function reflowLabels () {\n var this$1 = this;\n\n var ref = this;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n var measureBox = new Box();\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1.getSlot(skip + i * step).adjacentBox(\n 0, labelBox.width(), labelBox.height()\n ));\n }\n };\n\n RadarCategoryAxis.prototype.intervals = function intervals (size, skipOption, stepOption, skipAngles) {\n if ( skipAngles === void 0 ) skipAngles = false;\n\n var options = this.options;\n var categories = options.categories.length;\n var divCount = categories / size || 1;\n var divAngle = 360 / divCount;\n var skip = skipOption || 0;\n var step = stepOption || 1;\n var divs = [];\n var angle = 0;\n\n for (var i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n\n angle = round(angle, COORD_PRECISION) % 360;\n\n if (!(skipAngles && inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n\n return divs;\n };\n\n RadarCategoryAxis.prototype.majorIntervals = function majorIntervals () {\n return this.intervals(1);\n };\n\n RadarCategoryAxis.prototype.minorIntervals = function minorIntervals () {\n return this.intervals(0.5);\n };\n\n RadarCategoryAxis.prototype.intervalAngle = function intervalAngle (interval) {\n return (360 + interval + this.options.startAngle) % 360;\n };\n\n RadarCategoryAxis.prototype.majorAngles = function majorAngles () {\n var this$1 = this;\n\n return map(this.majorIntervals(), function (interval) { return this$1.intervalAngle(interval); });\n };\n\n RadarCategoryAxis.prototype.createLine = function createLine () {\n return [];\n };\n\n RadarCategoryAxis.prototype.majorGridLineAngles = function majorGridLineAngles (altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n };\n\n RadarCategoryAxis.prototype.minorGridLineAngles = function minorGridLineAngles (altAxis, skipMajor) {\n var ref = this.options;\n var minorGridLines = ref.minorGridLines;\n var majorGridLines = ref.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n };\n\n RadarCategoryAxis.prototype.radiusCallback = function radiusCallback (radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n var minorAngle = rad(360 / (this.options.categories.length * 2));\n var minorRadius = Math.cos(minorAngle) * radius;\n var majorAngles = this.majorAngles();\n\n var radiusCallback = function(angle) {\n if (!skipMajor && inArray(angle, majorAngles)) {\n return radius;\n }\n\n return minorRadius;\n };\n return radiusCallback;\n }\n };\n\n RadarCategoryAxis.prototype.createPlotBands = function createPlotBands () {\n var this$1 = this;\n\n var plotBands = this.options.plotBands || [];\n\n var group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var slot = this$1.plotBandSlot(band);\n var singleSlot = this$1.getSlot(band.from);\n\n var head = band.from - Math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n\n var tail = Math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n\n var ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n });\n group.append(ring);\n }\n\n this.appendVisual(group);\n };\n\n RadarCategoryAxis.prototype.plotBandSlot = function plotBandSlot (band) {\n return this.getSlot(band.from, band.to - 1);\n };\n\n RadarCategoryAxis.prototype.getSlot = function getSlot (from, to) {\n var options = this.options;\n var justified = options.justified;\n var box = this.box;\n var divs = this.majorAngles();\n var totalDivs = divs.length;\n var slotAngle = 360 / totalDivs;\n var fromValue = from;\n\n if (options.reverse && !justified) {\n fromValue = (fromValue + 1) % totalDivs;\n }\n\n fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n var slotStart = divs[fromValue];\n\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n\n var toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n var slots = toValue - fromValue + 1;\n var angle = slotAngle * slots;\n\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n };\n\n RadarCategoryAxis.prototype.slot = function slot (from, to) {\n var slot = this.getSlot(from, to);\n var startAngle = slot.startAngle + 180;\n var endAngle = startAngle + slot.angle;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n };\n\n RadarCategoryAxis.prototype.pointCategoryIndex = function pointCategoryIndex (point) {\n var this$1 = this;\n\n var length = this.options.categories.length;\n var index = null;\n\n for (var i = 0; i < length; i++) {\n var slot = this$1.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n\n return index;\n };\n\n return RadarCategoryAxis;\n}(CategoryAxis));\n\nsetDefaultOptions(RadarCategoryAxis, {\n startAngle: 90,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n visible: true\n },\n justified: true\n});\ndeepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\nexport default RadarCategoryAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport RadarCategoryAxis from './radar-category-axis';\nimport NumericAxis from './numeric-axis';\nimport Axis from './axis';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { BLACK } from '../common/constants';\nimport { deepExtend, deg, getSpacing, inArray, limitValue, setDefaultOptions } from '../common';\n\nvar PolarAxis = (function (Axis) {\n function PolarAxis(options, chartService) {\n Axis.call(this, options, chartService);\n\n var instanceOptions = this.options;\n\n instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n }\n\n if ( Axis ) PolarAxis.__proto__ = Axis;\n PolarAxis.prototype = Object.create( Axis && Axis.prototype );\n PolarAxis.prototype.constructor = PolarAxis;\n\n PolarAxis.prototype.getDivisions = function getDivisions (stepValue) {\n return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n };\n\n PolarAxis.prototype.reflow = function reflow (box) {\n this.box = box;\n this.reflowLabels();\n };\n\n PolarAxis.prototype.reflowLabels = function reflowLabels () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n\n var measureBox = new Box();\n var divs = this.intervals(options.majorUnit, skip, step);\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n };\n\n PolarAxis.prototype.lineBox = function lineBox () {\n return this.box;\n };\n\n PolarAxis.prototype.intervals = function intervals (size, skipOption, stepOption, skipAngles) {\n if ( skipAngles === void 0 ) skipAngles = false;\n\n var min = this.options.min;\n var divisions = this.getDivisions(size);\n var divs = [];\n var skip = skipOption || 0;\n var step = stepOption || 1;\n\n for (var i = skip; i < divisions; i += step) {\n var current = (360 + min + i * size) % 360;\n if (!(skipAngles && inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n\n return divs;\n };\n\n PolarAxis.prototype.majorIntervals = function majorIntervals () {\n return this.intervals(this.options.majorUnit);\n };\n\n PolarAxis.prototype.minorIntervals = function minorIntervals () {\n return this.intervals(this.options.minorUnit);\n };\n\n PolarAxis.prototype.intervalAngle = function intervalAngle (i) {\n return (540 - i - this.options.startAngle) % 360;\n };\n\n PolarAxis.prototype.createLine = function createLine () {\n return [];\n };\n\n PolarAxis.prototype.majorGridLineAngles = function majorGridLineAngles (altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n };\n\n PolarAxis.prototype.minorGridLineAngles = function minorGridLineAngles (altAxis, skipMajor) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n };\n\n PolarAxis.prototype.plotBandSlot = function plotBandSlot (band) {\n return this.getSlot(band.from, band.to);\n };\n\n PolarAxis.prototype.getSlot = function getSlot (a, b) {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var startAngle = options.startAngle;\n var start = limitValue(a, options.min, options.max);\n var end = limitValue(b || start, start, options.max);\n\n if (options.reverse) {\n start *= -1;\n end *= -1;\n }\n\n start = (540 - start - startAngle) % 360;\n end = (540 - end - startAngle) % 360;\n\n if (end < start) {\n var tmp = start;\n start = end;\n end = tmp;\n }\n\n return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n };\n\n PolarAxis.prototype.slot = function slot (from, to) {\n if ( to === void 0 ) to = from;\n\n var options = this.options;\n var start = 360 - options.startAngle;\n var slot = this.getSlot(from, to);\n var min = Math.min(from, to);\n var max = Math.max(from, to);\n var startAngle, endAngle;\n\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n };\n\n PolarAxis.prototype.getValue = function getValue (point) {\n var options = this.options;\n var center = this.box.center();\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = Math.round(deg(Math.atan2(dy, dx)));\n var start = options.startAngle;\n\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n\n return (theta + start + 360) % 360;\n };\n\n PolarAxis.prototype.valueRange = function valueRange () {\n return {\n min: 0,\n max: Math.PI * 2\n };\n };\n\n return PolarAxis;\n}(Axis));\n\nsetDefaultOptions(PolarAxis, {\n type: \"polar\",\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: {\n color: \"#aaa\"\n }\n});\n\ndeepExtend(PolarAxis.prototype, GridLinesMixin, {\n createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n majorAngles: RadarCategoryAxis.prototype.majorAngles,\n range: NumericAxis.prototype.range,\n labelsCount: NumericAxis.prototype.labelsCount,\n createAxisLabel: NumericAxis.prototype.createAxisLabel\n});\n\nexport default PolarAxis;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport ShapeBuilder from '../shape-builder';\nimport Ring from '../ring';\nimport Point from '../point';\n\nimport { ARC } from '../../common/constants';\nimport { append, deg, rad } from '../../common';\n\nvar RadarNumericAxisMixin = {\n options: {\n majorGridLines: {\n visible: true\n }\n },\n\n createPlotBands: function() {\n var this$1 = this;\n\n var ref = this.options;\n var type = ref.majorGridLines.type;\n var plotBands = ref.plotBands; if ( plotBands === void 0 ) plotBands = [];\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n };\n\n var slot = this$1.getSlot(band.from, band.to, true);\n var ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n var shape = (void 0);\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = draw.Path.fromPoints(this$1.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n\n group.append(shape);\n }\n\n this.appendVisual(group);\n },\n\n plotBandPoints: function(ring, angles) {\n var innerPoints = [];\n var outerPoints = [];\n var center = [ ring.center.x, ring.center.y ];\n var innerCircle = new geom.Circle(center, ring.innerRadius);\n var outerCircle = new geom.Circle(center, ring.radius);\n\n for (var i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n }\n\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n\n return outerPoints.concat(innerPoints);\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var majorTicks = this.radarMajorGridLinePositions();\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var gridLines = [];\n\n if (options.majorGridLines.visible) {\n gridLines = this.renderGridLines(\n center, majorTicks, majorAngles, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n var minorTicks = this.radarMinorGridLinePositions();\n append(gridLines, this.renderGridLines(\n center, minorTicks, majorAngles, options.minorGridLines\n ));\n }\n\n return gridLines;\n },\n\n renderGridLines: function(center, ticks, angles, options) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n var skip = options.skip; if ( skip === void 0 ) skip = 0;\n var step = options.step; if ( step === void 0 ) step = 0;\n var container = this.gridLinesVisual();\n\n for (var tickIx = skip; tickIx < ticks.length; tickIx += step) {\n var tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n var circle = new geom.Circle([ center.x, center.y ], tickRadius);\n if (options.type === ARC) {\n container.append(new draw.Circle(circle, style));\n } else {\n var line = new draw.Path(style);\n for (var angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx] + 180));\n }\n\n line.close();\n container.append(line);\n }\n }\n }\n\n return container.children;\n },\n\n getValue: function(point) {\n var lineBox = this.lineBox();\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var radius = point.distanceTo(center);\n var distance = radius;\n\n if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n majorAngles.sort(function(a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n\n // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n // Angles are derived from triangle (center, point, gridline X)\n var midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n var alpha = angularDistance(theta, majorAngles[0]);\n var gamma = 90 - midAngle;\n var beta = 180 - alpha - gamma;\n\n distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n }\n\n return this.axisType().prototype.getValue.call(\n this, new Point(lineBox.x1, lineBox.y2 - distance)\n );\n }\n};\n\nfunction angularDistance(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nexport default RadarNumericAxisMixin;","import NumericAxis from './numeric-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nvar RadarNumericAxis = (function (NumericAxis) {\n function RadarNumericAxis () {\n NumericAxis.apply(this, arguments);\n }\n\n if ( NumericAxis ) RadarNumericAxis.__proto__ = NumericAxis;\n RadarNumericAxis.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n RadarNumericAxis.prototype.constructor = RadarNumericAxis;\n\n RadarNumericAxis.prototype.radarMajorGridLinePositions = function radarMajorGridLinePositions () {\n return this.getTickPositions(this.options.majorUnit);\n };\n\n RadarNumericAxis.prototype.radarMinorGridLinePositions = function radarMinorGridLinePositions () {\n var options = this.options;\n var minorSkipStep = 0;\n\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return this.getTickPositions(options.minorUnit, minorSkipStep);\n };\n\n RadarNumericAxis.prototype.axisType = function axisType () {\n return NumericAxis;\n };\n\n return RadarNumericAxis;\n}(NumericAxis));\n\ndeepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarNumericAxis;","import LogarithmicAxis from './logarithmic-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nvar RadarLogarithmicAxis = (function (LogarithmicAxis) {\n function RadarLogarithmicAxis () {\n LogarithmicAxis.apply(this, arguments);\n }\n\n if ( LogarithmicAxis ) RadarLogarithmicAxis.__proto__ = LogarithmicAxis;\n RadarLogarithmicAxis.prototype = Object.create( LogarithmicAxis && LogarithmicAxis.prototype );\n RadarLogarithmicAxis.prototype.constructor = RadarLogarithmicAxis;\n\n RadarLogarithmicAxis.prototype.radarMajorGridLinePositions = function radarMajorGridLinePositions () {\n var positions = [];\n\n this.traverseMajorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.majorGridLines);\n\n return positions;\n };\n\n RadarLogarithmicAxis.prototype.radarMinorGridLinePositions = function radarMinorGridLinePositions () {\n var positions = [];\n\n this.traverseMinorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.minorGridLines);\n\n return positions;\n };\n\n RadarLogarithmicAxis.prototype.axisType = function axisType () {\n return LogarithmicAxis;\n };\n\n return RadarLogarithmicAxis;\n}(LogarithmicAxis));\n\ndeepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarLogarithmicAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { X, Y } from '../common/constants';\nimport { Class, last, round } from '../common';\n\nvar WEIGHT = 0.333;\nvar EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\nvar CurveProcessor = (function (Class) {\n function CurveProcessor(closed) {\n Class.call(this);\n\n this.closed = closed;\n }\n\n if ( Class ) CurveProcessor.__proto__ = Class;\n CurveProcessor.prototype = Object.create( Class && Class.prototype );\n CurveProcessor.prototype.constructor = CurveProcessor;\n\n CurveProcessor.prototype.process = function process (dataPoints) {\n var this$1 = this;\n\n var points = dataPoints.slice(0);\n var segments = [];\n var closed = this.closed;\n var length = points.length;\n\n if (length > 2) {\n this.removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new geom.Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = this.tangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n this.firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new geom.Segment(\n p1,\n this.secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = this.controlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = this.tangent(p0, p1, X,Y);\n initialControlPoint = this.firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n this$1.removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = this$1.controlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new geom.Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = this.controlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new geom.Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = this.tangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p2,\n this.secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n };\n\n CurveProcessor.prototype.removeDuplicates = function removeDuplicates (idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n };\n\n CurveProcessor.prototype.invertAxis = function invertAxis (p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = this.lineFunction(p0,p1);\n var y2 = this.calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n };\n\n CurveProcessor.prototype.isLine = function isLine (p0, p1, p2) {\n var fn = this.lineFunction(p0, p1);\n var y2 = this.calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n };\n\n CurveProcessor.prototype.lineFunction = function lineFunction (p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n };\n\n CurveProcessor.prototype.controlPoints = function controlPoints (p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (this.isLine(p0, p1, p2)) {\n tangent = this.tangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: this.isMonotonicByField(p0, p1, p2, X),\n y: this.isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = this.tangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (this.invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n }\n\n return [ secondControlPoint, firstControlPoint ];\n };\n\n CurveProcessor.prototype.restrictControlPoint = function restrictControlPoint (p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n };\n\n CurveProcessor.prototype.tangent = function tangent (p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n };\n\n CurveProcessor.prototype.isMonotonicByField = function isMonotonicByField (p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n };\n\n CurveProcessor.prototype.firstControlPoint = function firstControlPoint (tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n };\n\n CurveProcessor.prototype.secondControlPoint = function secondControlPoint (tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n };\n\n CurveProcessor.prototype.point = function point (xValue, yValue, xField, yField) {\n var controlPoint = new geom.Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n };\n\n CurveProcessor.prototype.calculateFunction = function calculateFunction (fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n };\n\n return CurveProcessor;\n}(Class));\n\nfunction numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n\nexport default CurveProcessor;","import { Class } from '../../common';\n\nvar ChartAxis = (function (Class) {\n function ChartAxis(axis) {\n Class.call(this);\n\n this._axis = axis;\n this.options = axis.options;\n }\n\n if ( Class ) ChartAxis.__proto__ = Class;\n ChartAxis.prototype = Object.create( Class && Class.prototype );\n ChartAxis.prototype.constructor = ChartAxis;\n\n ChartAxis.prototype.value = function value (point) {\n var axis = this._axis;\n var value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n return value;\n };\n\n ChartAxis.prototype.slot = function slot (from, to, limit) {\n if ( limit === void 0 ) limit = true;\n\n return this._axis.slot(from, to, limit);\n };\n\n ChartAxis.prototype.range = function range () {\n return this._axis.range();\n };\n\n ChartAxis.prototype.valueRange = function valueRange () {\n return this._axis.valueRange();\n };\n\n return ChartAxis;\n}(Class));\n\nexport default ChartAxis;","import ChartAxis from './chart-axis';\n\nexport default function findAxisByName(name, axes) {\n for (var idx = 0; idx < axes.length; idx++) {\n if (axes[idx].options.name === name) {\n axes[idx].prepareUserOptions();\n return new ChartAxis(axes[idx]);\n }\n }\n}","import findAxisByName from './find-axis-by-name';\n\nvar ChartPane = function ChartPane(pane) {\n this.visual = pane.visual;\n this.chartsVisual = pane.chartContainer.visual;\n this._pane = pane;\n};\n\nChartPane.prototype.findAxisByName = function findAxisByName$1 (name) {\n return findAxisByName(name, this._pane.axes);\n};\n\nexport default ChartPane;","import { Class } from '../../common';\n\nvar ChartPlotArea = (function (Class) {\n function ChartPlotArea(plotArea) {\n Class.call(this);\n\n this._plotArea = plotArea;\n this.visual = plotArea.visual;\n this.backgroundVisual = plotArea._bgVisual;\n }\n\n if ( Class ) ChartPlotArea.__proto__ = Class;\n ChartPlotArea.prototype = Object.create( Class && Class.prototype );\n ChartPlotArea.prototype.constructor = ChartPlotArea;\n\n return ChartPlotArea;\n}(Class));\n\nexport default ChartPlotArea;","import { isNumber } from '../../common';\n\nexport default function countNumbers(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var num = values[i];\n if (isNumber(num)) {\n count++;\n }\n }\n\n return count;\n}","import { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined, isNumber } from '../../common';\n\nimport countNumbers from '../utils/count-numbers';\n\nvar Aggregates = {\n min: function(values) {\n var length = values.length;\n var min = MAX_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n min = Math.min(min, value);\n }\n }\n\n return min === MAX_VALUE ? values[0] : min;\n },\n\n max: function(values) {\n var length = values.length;\n var max = MIN_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n max = Math.max(max, value);\n }\n }\n\n return max === MIN_VALUE ? values[0] : max;\n },\n\n sum: function(values) {\n var length = values.length;\n var sum = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n sum += value;\n }\n }\n\n return sum;\n },\n\n sumOrNull: function(values) {\n var result = null;\n\n if (countNumbers(values)) {\n result = Aggregates.sum(values);\n }\n\n return result;\n },\n\n count: function(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n count++;\n }\n }\n\n return count;\n },\n\n avg: function(values) {\n var count = countNumbers(values);\n var result = values[0];\n\n if (count > 0) {\n result = Aggregates.sum(values) / count;\n }\n\n return result;\n },\n\n first: function(values) {\n var length = values.length;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n return value;\n }\n }\n\n return values[0];\n }\n};\n\nexport default Aggregates;","import { getter } from '../../common';\n\nexport default function getField(field, row) {\n if (row === null) {\n return row;\n }\n\n var get = getter(field, true);\n return get(row);\n}","import getField from './utils/get-field';\nimport { VALUE } from '../common/constants';\nimport { Class, defined } from '../common';\n\nvar SeriesBinder = (function (Class) {\n function SeriesBinder() {\n Class.call(this);\n\n this._valueFields = {};\n this._otherFields = {};\n this._nullValue = {};\n this._undefinedValue = {};\n }\n\n if ( Class ) SeriesBinder.__proto__ = Class;\n SeriesBinder.prototype = Object.create( Class && Class.prototype );\n SeriesBinder.prototype.constructor = SeriesBinder;\n\n SeriesBinder.prototype.register = function register (seriesTypes, valueFields, otherFields) {\n var this$1 = this;\n if ( valueFields === void 0 ) valueFields = [ VALUE ];\n if ( otherFields === void 0 ) otherFields = {};\n\n\n for (var i = 0; i < seriesTypes.length; i++) {\n var type = seriesTypes[i];\n\n this$1._valueFields[type] = valueFields;\n this$1._otherFields[type] = otherFields;\n this$1._nullValue[type] = this$1._makeValue(valueFields, null);\n this$1._undefinedValue[type] = this$1._makeValue(valueFields, undefined);\n }\n };\n\n SeriesBinder.prototype.canonicalFields = function canonicalFields (series) {\n return this.valueFields(series).concat(this.otherFields(series));\n };\n\n SeriesBinder.prototype.valueFields = function valueFields (series) {\n return this._valueFields[series.type] || [ VALUE ];\n };\n\n SeriesBinder.prototype.otherFields = function otherFields (series) {\n return this._otherFields[series.type] || [ VALUE ];\n };\n\n SeriesBinder.prototype.bindPoint = function bindPoint (series, pointIx, item) {\n var data = series.data;\n var pointData = defined(item) ? item : data[pointIx];\n var result = { valueFields: { value: pointData } };\n var valueFields = this.valueFields(series);\n var otherFields = this._otherFields[series.type];\n var fields, value;\n\n if (pointData === null) {\n value = this._nullValue[series.type];\n } else if (!defined(pointData)) {\n value = this._undefinedValue[series.type];\n } else if (Array.isArray(pointData)) {\n var fieldData = pointData.slice(valueFields.length);\n value = this._bindFromArray(pointData, valueFields);\n fields = this._bindFromArray(fieldData, otherFields);\n } else if (typeof pointData === \"object\") {\n var srcValueFields = this.sourceFields(series, valueFields);\n var srcPointFields = this.sourceFields(series, otherFields);\n\n value = this._bindFromObject(pointData, valueFields, srcValueFields);\n fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n }\n\n if (defined(value)) {\n if (valueFields.length === 1) {\n result.valueFields.value = value[valueFields[0]];\n } else {\n result.valueFields = value;\n }\n }\n\n result.fields = fields || {};\n\n return result;\n };\n\n SeriesBinder.prototype._makeValue = function _makeValue (fields, initialValue) {\n var value = {};\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n value[fieldName] = initialValue;\n }\n\n return value;\n };\n\n SeriesBinder.prototype._bindFromArray = function _bindFromArray (array, fields) {\n var value = {};\n\n if (fields) {\n var length = Math.min(fields.length, array.length);\n\n for (var i = 0; i < length; i++) {\n value[fields[i]] = array[i];\n }\n }\n\n return value;\n };\n\n SeriesBinder.prototype._bindFromObject = function _bindFromObject (object, fields, srcFields) {\n if ( srcFields === void 0 ) srcFields = fields;\n\n var value = {};\n\n if (fields) {\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n var srcFieldName = srcFields[i];\n if (srcFieldName !== null) {\n value[fieldName] = getField(srcFieldName, object);\n }\n }\n }\n\n return value;\n };\n\n SeriesBinder.prototype.sourceFields = function sourceFields (series, canonicalFields) {\n var sourceFields = [];\n\n if (canonicalFields) {\n var length = canonicalFields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = canonicalFields[i];\n var sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n }\n }\n\n return sourceFields;\n };\n\n return SeriesBinder;\n}(Class));\n\nSeriesBinder.current = new SeriesBinder();\n\nexport default SeriesBinder;","import SeriesBinder from '../series-binder';\n\nimport { OBJECT } from '../../common/constants';\nimport { Class, defined, getter, isArray, isNumber } from '../../common';\n\nvar STD_ERR = \"stderr\";\nvar STD_DEV = \"stddev\";\nvar percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\nvar standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\nvar ErrorRangeCalculator = (function (Class) {\n function ErrorRangeCalculator(errorValue, series, field) {\n Class.call(this);\n\n this.initGlobalRanges(errorValue, series, field);\n }\n\n if ( Class ) ErrorRangeCalculator.__proto__ = Class;\n ErrorRangeCalculator.prototype = Object.create( Class && Class.prototype );\n ErrorRangeCalculator.prototype.constructor = ErrorRangeCalculator;\n\n ErrorRangeCalculator.prototype.initGlobalRanges = function initGlobalRanges (errorValue, series, field) {\n var data = series.data;\n var deviationMatch = standardDeviationRegex.exec(errorValue);\n\n if (deviationMatch) {\n this.valueGetter = this.createValueGetter(series, field);\n\n var average = this.getAverage(data);\n var deviation = this.getStandardDeviation(data, average, false);\n var multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n var errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n this.globalRange = function() {\n return errorRange;\n };\n } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n this.valueGetter = this.createValueGetter(series, field);\n var standardError = this.getStandardError(data, this.getAverage(data));\n\n this.globalRange = function(value) {\n return { low: value - standardError, high: value + standardError };\n };\n }\n };\n\n ErrorRangeCalculator.prototype.createValueGetter = function createValueGetter (series, field) {\n var data = series.data;\n var binder = SeriesBinder.current;\n var valueFields = binder.valueFields(series);\n var item = defined(data[0]) ? data[0] : {};\n var valueGetter;\n\n if (isArray(item)) {\n var index = field ? valueFields.indexOf(field) : 0;\n valueGetter = getter(\"[\" + index + \"]\");\n } else if (isNumber(item)) {\n valueGetter = getter();\n } else if (typeof item === OBJECT) {\n var srcValueFields = binder.sourceFields(series, valueFields);\n valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n }\n\n return valueGetter;\n };\n\n ErrorRangeCalculator.prototype.getErrorRange = function getErrorRange (pointValue, errorValue) {\n var low, high, value;\n\n if (!defined(errorValue)) {\n return null;\n }\n\n if (this.globalRange) {\n return this.globalRange(pointValue);\n }\n\n if (isArray(errorValue)) {\n low = pointValue - errorValue[0];\n high = pointValue + errorValue[1];\n } else if (isNumber(value = parseFloat(errorValue))) {\n low = pointValue - value;\n high = pointValue + value;\n } else if ((value = percentRegex.exec(errorValue))) {\n var percentValue = pointValue * (parseFloat(value[1]) / 100);\n low = pointValue - Math.abs(percentValue);\n high = pointValue + Math.abs(percentValue);\n } else {\n throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n }\n\n return { low: low, high: high };\n };\n\n ErrorRangeCalculator.prototype.getStandardError = function getStandardError (data, average) {\n return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n };\n\n ErrorRangeCalculator.prototype.getStandardDeviation = function getStandardDeviation (data, average, isSample) {\n var this$1 = this;\n\n var length = data.length;\n var total = isSample ? average.count - 1 : average.count;\n var squareDifferenceSum = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n squareDifferenceSum += Math.pow(value - average.value, 2);\n }\n }\n\n return Math.sqrt(squareDifferenceSum / total);\n };\n\n ErrorRangeCalculator.prototype.getAverage = function getAverage (data) {\n var this$1 = this;\n\n var length = data.length;\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n sum += value;\n count++;\n }\n }\n\n return {\n value: sum / count,\n count: count\n };\n };\n\n return ErrorRangeCalculator;\n}(Class));\n\nexport default ErrorRangeCalculator;","import { support } from '@progress/kendo-drawing';\n\nvar browser = support.browser || {};\n\nvar INITIAL_ANIMATION_DURATION = 600;\nvar FADEIN = \"fadeIn\";\n\nvar GLASS = \"glass\";\nvar BORDER_BRIGHTNESS = 0.8;\nvar TOOLTIP_OFFSET = 5;\nvar START_SCALE = browser.msie ? 0.001 : 0;\nvar ERROR_LOW_FIELD = \"errorLow\";\nvar ERROR_HIGH_FIELD = \"errorHigh\";\nvar X_ERROR_LOW_FIELD = \"xErrorLow\";\nvar X_ERROR_HIGH_FIELD = \"xErrorHigh\";\nvar Y_ERROR_LOW_FIELD = \"yErrorLow\";\nvar Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\nvar LINE_MARKER_SIZE = 8;\nvar ZERO = \"zero\";\nvar INTERPOLATE = \"interpolate\";\nvar GAP = \"gap\";\nvar ABOVE = \"above\";\nvar BELOW = \"below\";\n\nvar SMOOTH = \"smooth\";\nvar STEP = \"step\";\n\nvar AREA = \"area\";\nvar BAR = \"bar\";\nvar BOX_PLOT = \"boxPlot\";\nvar BUBBLE = \"bubble\";\nvar BULLET = \"bullet\";\nvar CANDLESTICK = \"candlestick\";\nvar COLUMN = \"column\";\nvar DONUT = \"donut\";\nvar FUNNEL = \"funnel\";\nvar PYRAMID = \"pyramid\";\nvar HEATMAP = \"heatmap\";\nvar HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\nvar LINE = \"line\";\nvar OHLC = \"ohlc\";\nvar PIE = \"pie\";\nvar POLAR_AREA = \"polarArea\";\nvar POLAR_LINE = \"polarLine\";\nvar POLAR_SCATTER = \"polarScatter\";\nvar RADAR_AREA = \"radarArea\";\nvar RADAR_COLUMN = \"radarColumn\";\nvar RADAR_LINE = \"radarLine\";\nvar RANGE_AREA = \"rangeArea\";\nvar RANGE_BAR = \"rangeBar\";\nvar RANGE_COLUMN = \"rangeColumn\";\nvar SCATTER = \"scatter\";\nvar SCATTER_LINE = \"scatterLine\";\nvar VERTICAL_AREA = \"verticalArea\";\nvar VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\nvar VERTICAL_BULLET = \"verticalBullet\";\nvar VERTICAL_LINE = \"verticalLine\";\nvar VERTICAL_RANGE_AREA = \"verticalRangeArea\";\nvar WATERFALL = \"waterfall\";\nvar EQUALLY_SPACED_SERIES = [\n BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n];\n\nvar TRENDLINE_LINEAR = 'linearTrendline';\nvar TRENDLINE_MOVING_AVERAGE = 'movingAverageTrendline';\nvar TRENDLINE_SERIES = [\n TRENDLINE_LINEAR, TRENDLINE_MOVING_AVERAGE\n];\n\nvar LEGEND_ITEM_CLICK = \"legendItemClick\";\nvar LEGEND_ITEM_HOVER = \"legendItemHover\";\nvar LEGEND_ITEM_LEAVE = \"legendItemLeave\";\nvar SERIES_CLICK = \"seriesClick\";\nvar SERIES_HOVER = \"seriesHover\";\nvar SERIES_OVER = \"seriesOver\";\nvar SERIES_LEAVE = \"seriesLeave\";\nvar PLOT_AREA_CLICK = \"plotAreaClick\";\nvar PLOT_AREA_HOVER = \"plotAreaHover\";\nvar PLOT_AREA_LEAVE = \"plotAreaLeave\";\nvar DRAG = \"drag\";\nvar DRAG_END = \"dragEnd\";\nvar DRAG_START = \"dragStart\";\nvar ZOOM_START = \"zoomStart\";\nvar ZOOM = \"zoom\";\nvar ZOOM_END = \"zoomEnd\";\nvar SELECT_START = \"selectStart\";\nvar SELECT = \"select\";\nvar SELECT_END = \"selectEnd\";\nvar RENDER = \"render\";\nvar SHOW_TOOLTIP = \"showTooltip\";\nvar HIDE_TOOLTIP = \"hideTooltip\";\nvar PANE_RENDER = \"paneRender\";\n\nvar LOGARITHMIC = \"log\";\nvar CATEGORY = \"category\";\n\nvar INSIDE_END = \"insideEnd\";\nvar INSIDE_BASE = \"insideBase\";\nvar OUTSIDE_END = \"outsideEnd\";\n\nvar MOUSEWHEEL = \"wheel\";\nvar MOUSEWHEEL_DELAY = 150;\nvar MOUSEWHEEL_ZOOM_RATE = 0.3;\n\nvar DRILLDOWN = \"drilldown\";\nvar DRILLDOWN_FIELD = \"drilldown\";\n\nvar MIN_MOVING_AVERAGE_PERIOD = 2;\n\nexport {\n INITIAL_ANIMATION_DURATION, FADEIN,\n LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE,\n SERIES_CLICK, SERIES_HOVER, SERIES_OVER, SERIES_LEAVE,\n GLASS, BORDER_BRIGHTNESS, TOOLTIP_OFFSET,\n START_SCALE, ERROR_LOW_FIELD, ERROR_HIGH_FIELD,\n X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD,\n Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n LINE_MARKER_SIZE, INTERPOLATE, ZERO,\n SMOOTH, STEP, CATEGORY, FUNNEL, PYRAMID,\n BAR, CANDLESTICK, PIE, COLUMN, AREA,\n VERTICAL_BULLET, BOX_PLOT, OHLC, WATERFALL, LINE,\n BULLET, VERTICAL_LINE, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA,\n RANGE_COLUMN, VERTICAL_BOX_PLOT, RANGE_BAR, HORIZONTAL_WATERFALL,\n SCATTER, SCATTER_LINE, BUBBLE, RADAR_AREA, RADAR_LINE,\n RADAR_COLUMN, POLAR_LINE, POLAR_AREA, POLAR_SCATTER,\n RENDER, PLOT_AREA_CLICK, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n LOGARITHMIC, DRAG, DRAG_START, DRAG_END, ZOOM_START, ZOOM, ZOOM_END,\n SELECT_START, SELECT, SELECT_END, PANE_RENDER, GAP,\n DONUT, INSIDE_END, INSIDE_BASE, OUTSIDE_END,\n MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE,\n SHOW_TOOLTIP, HIDE_TOOLTIP,\n EQUALLY_SPACED_SERIES, ABOVE, BELOW,\n HEATMAP,\n DRILLDOWN, DRILLDOWN_FIELD,\n MIN_MOVING_AVERAGE_PERIOD,\n TRENDLINE_SERIES, TRENDLINE_LINEAR, TRENDLINE_MOVING_AVERAGE\n};\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point, Box } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { setDefaultOptions, alignPathToPixel } from '../../common';\n\nvar DEFAULT_ERROR_BAR_WIDTH = 4;\n\nvar ErrorBarBase = (function (ChartElement) {\n function ErrorBarBase(low, high, isVertical, chart, series, options) {\n ChartElement.call(this, options);\n\n this.low = low;\n this.high = high;\n this.isVertical = isVertical;\n this.chart = chart;\n this.series = series;\n }\n\n if ( ChartElement ) ErrorBarBase.__proto__ = ChartElement;\n ErrorBarBase.prototype = Object.create( ChartElement && ChartElement.prototype );\n ErrorBarBase.prototype.constructor = ErrorBarBase;\n\n ErrorBarBase.prototype.reflow = function reflow (targetBox) {\n var endCaps = this.options.endCaps;\n var isVertical = this.isVertical;\n var axis = this.getAxis();\n var valueBox = axis.getSlot(this.low, this.high);\n var centerBox = targetBox.center();\n var capsWidth = this.getCapsWidth(targetBox, isVertical);\n var capValue = isVertical ? centerBox.x : centerBox.y;\n var capStart = capValue - capsWidth;\n var capEnd = capValue + capsWidth;\n var linePoints;\n\n if (isVertical) {\n linePoints = [\n new Point(centerBox.x, valueBox.y1),\n new Point(centerBox.x, valueBox.y2)\n ];\n if (endCaps) {\n linePoints.push(new Point(capStart, valueBox.y1),\n new Point(capEnd, valueBox.y1),\n new Point(capStart, valueBox.y2),\n new Point(capEnd, valueBox.y2));\n }\n this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n } else {\n linePoints = [\n new Point(valueBox.x1, centerBox.y),\n new Point(valueBox.x2, centerBox.y)\n ];\n if (endCaps) {\n linePoints.push(new Point(valueBox.x1, capStart),\n new Point(valueBox.x1, capEnd),\n new Point(valueBox.x2, capStart),\n new Point(valueBox.x2, capEnd));\n }\n this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n }\n\n this.linePoints = linePoints;\n };\n\n ErrorBarBase.prototype.getCapsWidth = function getCapsWidth (box, isVertical) {\n var boxSize = isVertical ? box.width() : box.height();\n var capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n return capsWidth;\n };\n\n ErrorBarBase.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var options = this.options;\n var visual = options.visual;\n\n if (visual) {\n this.visual = visual({\n low: this.low,\n high: this.high,\n rect: this.box.toRect(),\n sender: this.getSender(),\n options: {\n endCaps: options.endCaps,\n color: options.color,\n line: options.line\n },\n createVisual: function () {\n this$1.createDefaultVisual();\n var defaultVisual = this$1.visual;\n delete this$1.visual;\n return defaultVisual;\n }\n });\n } else {\n this.createDefaultVisual();\n }\n };\n\n ErrorBarBase.prototype.createDefaultVisual = function createDefaultVisual () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var linePoints = ref.linePoints;\n var lineOptions = {\n stroke: {\n color: options.color,\n width: options.line.width,\n dashType: options.line.dashType\n }\n };\n\n ChartElement.prototype.createVisual.call(this);\n\n for (var idx = 0; idx < linePoints.length; idx += 2) {\n var line = new draw.Path(lineOptions)\n .moveTo(linePoints[idx].x, linePoints[idx].y)\n .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n alignPathToPixel(line);\n this$1.visual.append(line);\n }\n };\n\n return ErrorBarBase;\n}(ChartElement));\n\nsetDefaultOptions(ErrorBarBase, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n endCaps: true,\n line: {\n width: 2\n },\n zIndex: 1\n});\n\nexport default ErrorBarBase;","import ErrorBarBase from './error-bar-base';\n\nvar CategoricalErrorBar = (function (ErrorBarBase) {\n function CategoricalErrorBar () {\n ErrorBarBase.apply(this, arguments);\n }\n\n if ( ErrorBarBase ) CategoricalErrorBar.__proto__ = ErrorBarBase;\n CategoricalErrorBar.prototype = Object.create( ErrorBarBase && ErrorBarBase.prototype );\n CategoricalErrorBar.prototype.constructor = CategoricalErrorBar;\n\n CategoricalErrorBar.prototype.getAxis = function getAxis () {\n var axis = this.chart.seriesValueAxis(this.series);\n\n return axis;\n };\n\n return CategoricalErrorBar;\n}(ErrorBarBase));\n\nexport default CategoricalErrorBar;","import { defined } from '../../common';\n\nexport default function anyHasZIndex(elements) {\n for (var idx = 0; idx < elements.length; idx++) {\n if (defined(elements[idx].zIndex)) {\n return true;\n }\n }\n}","export default function appendIfNotNull(array, element) {\n if (element !== null) {\n array.push(element);\n }\n}","import countNumbers from './count-numbers';\n\nexport default function areNumbers(values) {\n return countNumbers(values) === values.length;\n}","import { defined } from '../../common';\n\nexport default function segmentVisible(series, fields, index) {\n var visible = fields.visible;\n if (defined(visible)) {\n return visible;\n }\n\n var pointVisibility = series.pointVisibility;\n if (pointVisibility) {\n return pointVisibility[index];\n }\n}\n\n","import { isNumber, isString } from '../../common';\nimport SeriesBinder from '../series-binder';\nimport segmentVisible from './segment-visible';\n\nexport default function bindSegments(series) {\n var data = series.data;\n var points = [];\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < data.length; idx++) {\n var pointData = SeriesBinder.current.bindPoint(series, idx);\n var value = pointData.valueFields.value;\n\n\n if (isString(value)) {\n value = parseFloat(value);\n }\n\n if (isNumber(value)) {\n pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n pointData.value = Math.abs(value);\n points.push(pointData);\n\n if (pointData.visible) {\n sum += pointData.value;\n }\n\n if (value !== 0) {\n count++;\n }\n } else {\n points.push(null);\n }\n }\n\n return {\n total: sum,\n points: points,\n count: count\n };\n}","export default function categoriesCount(series) {\n var seriesCount = series.length;\n var categories = 0;\n\n for (var i = 0; i < seriesCount; i++) {\n categories = Math.max(categories, series[i].data.length);\n }\n\n return categories;\n}","export default function equalsIgnoreCase(a, b) {\n if (a && b) {\n return a.toLowerCase() === b.toLowerCase();\n }\n\n return a === b;\n}","import { inArray, isFunction, isObject, valueOrDefault } from '../../common';\n\nvar MAX_EXPAND_DEPTH = 5;\n\nexport default function evalOptions(options, context, state, dryRun) {\n if ( state === void 0 ) state = {};\n if ( dryRun === void 0 ) dryRun = false;\n\n var defaults = state.defaults = state.defaults || {};\n var depth = state.depth = state.depth || 0;\n var needsEval = false;\n\n state.excluded = state.excluded || [];\n\n if (depth > MAX_EXPAND_DEPTH) {\n return null;\n }\n\n for (var property in options) {\n if (!inArray(property, state.excluded) && options.hasOwnProperty(property)) {\n var propValue = options[property];\n if (isFunction(propValue)) {\n needsEval = true;\n if (!dryRun) {\n options[property] = valueOrDefault(propValue(context), defaults[property]);\n }\n } else if (isObject(propValue)) {\n if (!dryRun) {\n state.defaults = defaults[property];\n }\n state.depth++;\n needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n state.depth--;\n }\n }\n }\n\n return needsEval;\n}","import { inArray } from '../../common';\n\nexport default function filterSeriesByType(series, types) {\n var result = [];\n\n var seriesTypes = [].concat(types);\n for (var idx = 0; idx < series.length; idx++) {\n var currentSeries = series[idx];\n if (inArray(currentSeries.type, seriesTypes)) {\n result.push(currentSeries);\n }\n }\n\n return result;\n}","import { parseDate } from '../../date-utils';\nimport { getter } from '../../common';\n\nexport default function getDateField(field, row, intlService) {\n if (row === null) {\n return row;\n }\n\n var key = \"_date_\" + field;\n var value = row[key];\n\n if (!value) {\n value = parseDate(intlService, getter(field, true)(row));\n row[key] = value;\n }\n\n return value;\n}","export default function hasGradientOverlay(options) {\n var overlay = options.overlay;\n\n return overlay && overlay.gradient && overlay.gradient !== \"none\";\n}","import { defined } from '../../common';\n\nexport default function hasValue(value) {\n return defined(value) && value !== null;\n}","import equalsIgnoreCase from './equals-ignore-case';\n\nimport { DATE } from '../../common/constants';\n\nexport default function isDateAxis(axisOptions, sampleCategory) {\n var type = axisOptions.type;\n var dateCategory = sampleCategory instanceof Date;\n\n return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n}","export default function singleItemOrArray(array) {\n return array.length === 1 ? array[0] : array;\n}","import { INTERPOLATE, ZERO } from '../constants';\nimport { convertableToNumber } from '../../common';\nimport SeriesBinder from '../series-binder';\n\nvar AREA_REGEX = /area/i;\n\nfunction seriesMissingValues(series) {\n if (series.missingValues) {\n return series.missingValues;\n }\n\n return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n}\n\nfunction hasValue(series, item) {\n var fields = SeriesBinder.current.bindPoint(series, null, item);\n var valueFields = fields.valueFields;\n\n for (var field in valueFields) {\n if (convertableToNumber(valueFields[field])) {\n return true;\n }\n }\n}\n\nfunction findNext(ref) {\n var start = ref.start;\n var dir = ref.dir;\n var min = ref.min;\n var max = ref.max;\n var getter = ref.getter;\n var hasItem = ref.hasItem;\n var series = ref.series;\n\n var pointHasValue, outPoint;\n var idx = start;\n do {\n idx += dir;\n //aggregating and binding the item takes too much time for large number of categories\n //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n if (hasItem(idx)) {\n outPoint = getter(idx);\n pointHasValue = hasValue(series, outPoint.item);\n }\n } while (min <= idx && idx <= max && !pointHasValue);\n\n if (pointHasValue) {\n return outPoint;\n }\n}\n\nexport default function createOutOfRangePoints(series, range, count, getter, hasItem) {\n var min = range.min;\n var max = range.max;\n var hasMinPoint = min > 0 && min < count;\n var hasMaxPoint = max + 1 < count;\n\n if (hasMinPoint || hasMaxPoint) {\n var missingValues = seriesMissingValues(series);\n var minPoint, maxPoint;\n if (missingValues !== INTERPOLATE) {\n if (hasMinPoint) {\n minPoint = getter(min - 1);\n }\n\n if (hasMaxPoint) {\n maxPoint = getter(max + 1);\n }\n } else {\n var outPoint, pointHasValue;\n if (hasMinPoint) {\n outPoint = getter(min - 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n minPoint = findNext({\n start: min,\n dir: -1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n minPoint = outPoint;\n }\n }\n\n if (hasMaxPoint) {\n outPoint = getter(max + 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n maxPoint = findNext({\n start: max,\n dir: 1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n maxPoint = outPoint;\n }\n }\n }\n\n if (minPoint) {\n series._outOfRangeMinPoint = minPoint;\n }\n\n if (maxPoint) {\n series._outOfRangeMaxPoint = maxPoint;\n }\n }\n}","import ErrorRangeCalculator from './error-bars/error-range-calculator';\nimport CategoricalErrorBar from './error-bars/categorical-error-bar';\n\nimport { ERROR_LOW_FIELD, ERROR_HIGH_FIELD } from './constants';\n\nimport { evalOptions, categoriesCount } from './utils';\n\nimport { ChartElement, Box } from '../core';\n\nimport { VALUE, STRING, MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { convertableToNumber, deepExtend, defined, isNumber, last, setDefaultOptions, sparseArrayLimits } from '../common';\n\nvar CategoricalChart = (function (ChartElement) {\n function CategoricalChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n // Value axis ranges grouped by axis name, e.g.:\n // primary: { min: 0, max: 1 }\n this.valueAxisRanges = {};\n\n this.points = [];\n this.categoryPoints = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n\n this.render();\n }\n\n if ( ChartElement ) CategoricalChart.__proto__ = ChartElement;\n CategoricalChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n CategoricalChart.prototype.constructor = CategoricalChart;\n\n CategoricalChart.prototype.render = function render () {\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n CategoricalChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n vertical: !this.options.invertAxes\n }, series);\n }\n\n return options;\n };\n\n CategoricalChart.prototype.plotValue = function plotValue (point) {\n if (!point) {\n return 0;\n }\n\n if (this.options.isStacked100 && isNumber(point.value)) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n var otherValues = [];\n var categorySum = 0;\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n if (other) {\n var stack = point.series.stack;\n var otherStack = other.series.stack;\n\n if ((stack && otherStack) && stack.group !== otherStack.group) {\n continue;\n }\n\n if (isNumber(other.value)) {\n categorySum += Math.abs(other.value);\n otherValues.push(Math.abs(other.value));\n }\n }\n }\n\n if (categorySum > 0) {\n return point.value / categorySum;\n }\n }\n\n return point.value;\n };\n\n CategoricalChart.prototype.plotRange = function plotRange (point, startValue) {\n var this$1 = this;\n if ( startValue === void 0 ) startValue = 0;\n\n var categoryPoints = this.categoryPoints[point.categoryIx];\n\n if (this.options.isStacked) {\n var plotValue = this.plotValue(point);\n var positive = plotValue >= 0;\n var prevValue = startValue;\n var isStackedBar = false;\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n var stack = point.series.stack;\n var otherStack = other.series.stack;\n if (stack && otherStack) {\n if (typeof stack === STRING && stack !== otherStack) {\n continue;\n }\n\n if (stack.group && stack.group !== otherStack.group) {\n continue;\n }\n }\n\n var otherValue = this$1.plotValue(other);\n if ((otherValue >= 0 && positive) ||\n (otherValue < 0 && !positive)) {\n prevValue += otherValue;\n plotValue += otherValue;\n isStackedBar = true;\n\n if (this$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n }\n\n if (isStackedBar) {\n prevValue -= startValue;\n }\n\n return [ prevValue, plotValue ];\n }\n\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n };\n\n CategoricalChart.prototype.stackLimits = function stackLimits (axisName, stackName) {\n var this$1 = this;\n\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var i = 0; i < this.categoryPoints.length; i++) {\n var categoryPoints = this$1.categoryPoints[i];\n if (!categoryPoints) {\n continue;\n }\n\n for (var pIx = 0; pIx < categoryPoints.length; pIx++) {\n var point = categoryPoints[pIx];\n if (point) {\n if (point.series.stack === stackName || point.series.axis === axisName) {\n var to = this$1.plotRange(point, 0)[1];\n if (defined(to) && isFinite(to)) {\n max = Math.max(max, to);\n min = Math.min(min, to);\n }\n }\n }\n }\n }\n\n return { min: min, max: max };\n };\n\n CategoricalChart.prototype.updateStackRange = function updateStackRange () {\n var this$1 = this;\n\n var ref = this.options;\n var isStacked = ref.isStacked;\n var chartSeries = ref.series;\n var limitsCache = {};\n\n if (isStacked) {\n for (var i = 0; i < chartSeries.length; i++) {\n var series = chartSeries[i];\n var axisName = series.axis;\n var key = axisName + series.stack;\n\n var limits = limitsCache[key];\n if (!limits) {\n limits = this$1.stackLimits(axisName, series.stack);\n\n var errorTotals = this$1.errorTotals;\n if (errorTotals) {\n if (errorTotals.negative.length) {\n limits.min = Math.min(limits.min, sparseArrayLimits(errorTotals.negative).min);\n }\n if (errorTotals.positive.length) {\n limits.max = Math.max(limits.max, sparseArrayLimits(errorTotals.positive).max);\n }\n }\n\n if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n limitsCache[key] = limits;\n } else {\n limits = null;\n }\n }\n\n if (limits) {\n this$1.valueAxisRanges[axisName] = limits;\n }\n }\n }\n };\n\n CategoricalChart.prototype.addErrorBar = function addErrorBar (point, data, categoryIx) {\n var value = point.value;\n var series = point.series;\n var seriesIx = point.seriesIx;\n var errorBars = point.options.errorBars;\n var lowValue = data.fields[ERROR_LOW_FIELD];\n var highValue = data.fields[ERROR_HIGH_FIELD];\n var errorRange;\n\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n } else if (errorBars && defined(errorBars.value)) {\n this.seriesErrorRanges = this.seriesErrorRanges || [];\n this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n }\n\n if (errorRange) {\n point.low = errorRange.low;\n point.high = errorRange.high;\n this.addPointErrorBar(point, categoryIx);\n }\n };\n\n CategoricalChart.prototype.addPointErrorBar = function addPointErrorBar (point, categoryIx) {\n var isVertical = !this.options.invertAxes;\n var options = point.options.errorBars;\n var series = point.series;\n var low = point.low;\n var high = point.high;\n\n if (this.options.isStacked) {\n var stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n low = stackedErrorRange.low;\n high = stackedErrorRange.high;\n } else {\n var fields = { categoryIx: categoryIx, series: series };\n this.updateRange({ value: low }, fields);\n this.updateRange({ value: high }, fields);\n }\n\n var errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n point.errorBars = [ errorBar ];\n point.append(errorBar);\n };\n\n CategoricalChart.prototype.stackedErrorRange = function stackedErrorRange (point, categoryIx) {\n var plotValue = this.plotRange(point, 0)[1] - point.value;\n var low = point.low + plotValue;\n var high = point.high + plotValue;\n\n this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n if (low < 0) {\n this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n }\n\n if (high > 0) {\n this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n }\n\n return { low: low, high: high };\n };\n\n CategoricalChart.prototype.addValue = function addValue (data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n\n var categoryPoints = this.categoryPoints[categoryIx];\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n var seriesPoints = this.seriesPoints[seriesIx];\n if (!seriesPoints) {\n this.seriesPoints[seriesIx] = seriesPoints = [];\n }\n\n var point = this.createPoint(data, fields);\n if (point) {\n Object.assign(point, fields);\n\n point.owner = this;\n point.noteText = data.fields.noteText;\n if (!defined(point.dataItem)) {\n point.dataItem = series.data[categoryIx];\n }\n this.addErrorBar(point, data, categoryIx);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n categoryPoints.push(point);\n\n this.updateRange(data.valueFields, fields);\n };\n\n CategoricalChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, pointOptions);\n evalOptions(pointOptions, {\n value: value,\n category: category,\n index: categoryIx,\n series: series,\n dataItem: series.data[categoryIx]\n }, state);\n }\n\n return pointOptions;\n };\n\n CategoricalChart.prototype.updateRange = function updateRange (data, fields) {\n var axisName = fields.series.axis;\n var value = data.value;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (isFinite(value) && value !== null) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, value);\n axisRange.max = Math.max(axisRange.max, value);\n }\n };\n\n CategoricalChart.prototype.seriesValueAxis = function seriesValueAxis (series) {\n var plotArea = this.plotArea;\n var axisName = series.axis;\n var axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate value axis with name \" + axisName);\n }\n\n return axis;\n };\n\n CategoricalChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var categorySlots = this.categorySlots = [];\n var chartPoints = this.points;\n var categoryAxis = this.categoryAxis;\n var pointIx = 0;\n\n this.traverseDataPoints(function (data, fields) {\n var categoryIx = fields.categoryIx;\n var currentSeries = fields.series;\n\n var valueAxis = this$1.seriesValueAxis(currentSeries);\n var point = chartPoints[pointIx++];\n\n var categorySlot = categorySlots[categoryIx];\n if (!categorySlot) {\n categorySlots[categoryIx] = categorySlot =\n this$1.categorySlot(categoryAxis, categoryIx, valueAxis);\n }\n\n if (point) {\n var plotRange = this$1.plotRange(point, valueAxis.startValue());\n var valueSlot = this$1.valueSlot(valueAxis, plotRange);\n if (valueSlot) {\n var pointSlot = this$1.pointSlot(categorySlot, valueSlot);\n\n point.aboveAxis = this$1.aboveAxis(point, valueAxis);\n point.stackValue = plotRange[1];\n\n if (this$1.options.isStacked100) {\n point.percentage = this$1.plotValue(point);\n }\n\n this$1.reflowPoint(point, pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.reflowCategories(categorySlots);\n if (!this.options.clip && this.options.limitPoints && this.points.length) {\n this.limitPoints();\n }\n\n this.box = targetBox;\n };\n\n CategoricalChart.prototype.valueSlot = function valueSlot (valueAxis, plotRange) {\n return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n };\n\n CategoricalChart.prototype.limitPoints = function limitPoints () {\n var this$1 = this;\n\n var categoryPoints = this.categoryPoints;\n var points = categoryPoints[0].concat(last(categoryPoints));\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx]) {\n this$1.limitPoint(points[idx]);\n }\n }\n };\n\n CategoricalChart.prototype.limitPoint = function limitPoint (point) {\n var limitedSlot = this.categoryAxis.limitSlot(point.box);\n if (!limitedSlot.equals(point.box)) {\n point.reflow(limitedSlot);\n }\n };\n\n CategoricalChart.prototype.aboveAxis = function aboveAxis (point, valueAxis) {\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n var value = point.value;\n\n return valueAxis.options.reverse ?\n value < axisCrossingValue : value >= axisCrossingValue;\n };\n\n CategoricalChart.prototype.categoryAxisCrossingValue = function categoryAxisCrossingValue (valueAxis) {\n var categoryAxis = this.categoryAxis;\n var options = valueAxis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n\n return crossingValues[categoryAxis.axisIndex || 0] || 0;\n };\n\n CategoricalChart.prototype.reflowPoint = function reflowPoint (point, pointSlot) {\n point.reflow(pointSlot);\n };\n\n CategoricalChart.prototype.reflowCategories = function reflowCategories () { };\n\n CategoricalChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var options = this.options;\n var invertAxes = options.invertAxes;\n var slotX = invertAxes ? valueSlot : categorySlot;\n var slotY = invertAxes ? categorySlot : valueSlot;\n\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n };\n\n CategoricalChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n };\n\n CategoricalChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var series = this.options.series;\n var count = categoriesCount(series);\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this$1._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n }\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n for (var seriesIx$1 = 0; seriesIx$1 < seriesCount; seriesIx$1++) {\n var currentSeries = series[seriesIx$1];\n var currentCategory = this$1.categoryAxis.categoryAt(categoryIx);\n var pointData = this$1.plotArea.bindPoint(currentSeries, categoryIx);\n\n callback(pointData, {\n category: currentCategory,\n categoryIx: categoryIx,\n categoriesCount: count,\n series: currentSeries,\n seriesIx: seriesIx$1\n });\n }\n }\n\n for (var seriesIx$2 = 0; seriesIx$2 < seriesCount; seriesIx$2++) {\n this$1._outOfRangeCallback(series[seriesIx$2], \"_outOfRangeMaxPoint\", seriesIx$2, callback);\n }\n };\n\n CategoricalChart.prototype._outOfRangeCallback = function _outOfRangeCallback (series, field, seriesIx, callback) {\n var outOfRangePoint = series[field];\n if (outOfRangePoint) {\n var categoryIx = outOfRangePoint.categoryIx;\n var pointData = this.plotArea.bindPoint(series, categoryIx, outOfRangePoint.item);\n\n callback(pointData, {\n category: outOfRangePoint.category,\n categoryIx: categoryIx,\n series: series,\n seriesIx: seriesIx,\n dataItem: outOfRangePoint.item\n });\n }\n };\n\n CategoricalChart.prototype.formatPointValue = function formatPointValue (point, format) {\n if (point.value === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value);\n };\n\n CategoricalChart.prototype.pointValue = function pointValue (data) {\n return data.valueFields.value;\n };\n\n return CategoricalChart;\n}(ChartElement));\n\nsetDefaultOptions(CategoricalChart, {\n series: [],\n invertAxes: false,\n isStacked: false,\n clip: true,\n limitPoints: true\n});\n\nexport default CategoricalChart;\n","import { SERIES_CLICK, SERIES_HOVER, SERIES_LEAVE, SERIES_OVER } from '../constants';\nimport { eventElement } from '../../common';\n\nvar PointEventsMixin = {\n click: function(chart, e) {\n return chart.trigger(\n SERIES_CLICK,\n this.eventArgs(e)\n );\n },\n\n hover: function(chart, e) {\n return chart.trigger(\n SERIES_HOVER,\n this.eventArgs(e)\n );\n },\n\n over: function(chart, e) {\n return chart.trigger(\n SERIES_OVER,\n this.eventArgs(e)\n );\n },\n\n out: function(chart, e) {\n return chart.trigger(\n SERIES_LEAVE,\n this.eventArgs(e)\n );\n },\n\n eventArgs: function(e) {\n return {\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n category: this.category,\n series: this.series,\n dataItem: this.dataItem,\n runningTotal: this.runningTotal,\n total: this.total,\n element: eventElement(e),\n originalEvent: e,\n point: this\n };\n }\n};\n\nexport default PointEventsMixin;","import { Note } from '../../core';\nimport { defined } from '../../common';\n\nvar NoteMixin = {\n createNote: function() {\n var options = this.options.notes;\n var text = this.noteText || options.label.text;\n\n if (options.visible !== false && defined(text) && text !== null) {\n this.note = new Note({\n value: this.value,\n text: text,\n dataItem: this.dataItem,\n category: this.category,\n series: this.series\n }, this.options.notes, this.owner.chartService);\n\n this.append(this.note);\n }\n }\n};\n\nexport default NoteMixin;","import { geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox, ShapeElement, Box, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, BORDER_BRIGHTNESS, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\n\nimport { WHITE, CIRCLE, CENTER, TOP, BOTTOM, LEFT, HIGHLIGHT_ZINDEX } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, valueOrDefault, getSpacing } from '../../common';\n\nvar LinePoint = (function (ChartElement) {\n function LinePoint(value, options) {\n ChartElement.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n }\n\n if ( ChartElement ) LinePoint.__proto__ = ChartElement;\n LinePoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n LinePoint.prototype.constructor = LinePoint;\n\n LinePoint.prototype.render = function render () {\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\n\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n if (markers.visible && markers.size) {\n this.marker = this.createMarker();\n this.append(this.marker);\n }\n\n if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var pointData = this.pointData();\n var labelText = this.value;\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = this.formatValue(labels.format);\n }\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n }, labels),\n pointData\n );\n this.append(this.label);\n }\n\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n };\n\n LinePoint.prototype.markerBorder = function markerBorder () {\n var options = this.options.markers;\n var background = options.background;\n var border = deepExtend({ color: this.color }, options.border);\n\n if (!defined(border.color)) {\n border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n\n return border;\n };\n\n LinePoint.prototype.createVisual = function createVisual () {};\n\n LinePoint.prototype.createMarker = function createMarker () {\n var options = this.options.markers;\n var marker = new ShapeElement({\n type: options.type,\n width: options.size,\n height: options.size,\n rotation: options.rotation,\n background: options.background,\n border: this.markerBorder(),\n opacity: options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n return marker;\n };\n\n LinePoint.prototype.markerBox = function markerBox () {\n if (!this.marker) {\n this.marker = this.createMarker();\n this.marker.reflow(this._childBox);\n }\n\n return this.marker.box;\n };\n\n LinePoint.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var aboveAxis = ref.aboveAxis;\n var vertical = options.vertical;\n\n this.render();\n\n this.box = targetBox;\n var childBox = targetBox.clone();\n\n if (vertical) {\n if (aboveAxis) {\n childBox.y1 -= childBox.height();\n } else {\n childBox.y2 += childBox.height();\n }\n } else {\n if (aboveAxis) {\n childBox.x1 += childBox.width();\n } else {\n childBox.x2 -= childBox.width();\n }\n }\n\n this._childBox = childBox;\n if (this.marker) {\n this.marker.reflow(childBox);\n }\n\n this.reflowLabel(childBox);\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1.errorBars[i].reflow(childBox);\n }\n }\n\n if (this.note) {\n var noteTargetBox = this.markerBox();\n\n if (!(options.markers.visible && options.markers.size)) {\n var center = noteTargetBox.center();\n noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n }\n\n this.note.reflow(noteTargetBox);\n }\n };\n\n LinePoint.prototype.reflowLabel = function reflowLabel (box) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var anchor = options.labels.position;\n\n if (label) {\n anchor = anchor === ABOVE ? TOP : anchor;\n anchor = anchor === BELOW ? BOTTOM : anchor;\n\n label.reflow(box);\n label.box.alignTo(this.markerBox(), anchor);\n label.reflow(label.box);\n }\n };\n\n LinePoint.prototype.createHighlight = function createHighlight () {\n var markers = this.options.highlight.markers;\n var defaultColor = this.markerBorder().color;\n var options = this.options.markers;\n var size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n var shadow = new ShapeElement({\n type: options.type,\n width: size,\n height: size,\n rotation: options.rotation,\n background: markers.color || defaultColor,\n border: {\n color: markers.border.color,\n width: markers.border.width,\n opacity: valueOrDefault(markers.border.opacity, 1)\n },\n opacity: valueOrDefault(markers.opacity, 1)\n });\n shadow.reflow(this._childBox);\n\n return shadow.getElement();\n };\n\n LinePoint.prototype.highlightVisual = function highlightVisual () {\n return (this.marker || {}).visual;\n };\n\n LinePoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n var marker = this.marker;\n var visual, rect;\n\n if (marker) {\n rect = marker.paddingBox.toRect();\n visual = marker.visual;\n } else {\n var size = this.options.markers.size;\n var halfSize = size / 2;\n var center = this.box.center();\n rect = new geom.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n }\n\n return {\n options: this.options,\n rect: rect,\n visual: visual\n };\n };\n\n LinePoint.prototype.tooltipAnchor = function tooltipAnchor () {\n var markerBox = this.markerBox();\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n if (showTooltip) {\n var x = markerBox.x2 + TOOLTIP_OFFSET;\n var horizontalAlign = LEFT;\n var y, verticalAlign;\n\n if (this.aboveAxis) {\n y = markerBox.y1;\n verticalAlign = BOTTOM;\n } else {\n y = markerBox.y2;\n verticalAlign = TOP;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n };\n\n LinePoint.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n LinePoint.prototype.overlapsBox = function overlapsBox (box) {\n var markerBox = this.markerBox();\n return markerBox.overlaps(box);\n };\n\n LinePoint.prototype.unclipElements = function unclipElements () {\n if (this.label) {\n this.label.options.noclip = true;\n }\n\n if (this.note) {\n this.note.options.noclip = true;\n }\n };\n\n LinePoint.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n series: this.series\n };\n };\n\n return LinePoint;\n}(ChartElement));\n\nLinePoint.prototype.defaults = {\n vertical: true,\n markers: {\n visible: true,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n position: ABOVE,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: \"#fff\",\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n errorBars: {\n line: {\n width: 1\n }\n }\n};\n\ndeepExtend(LinePoint.prototype, PointEventsMixin);\ndeepExtend(LinePoint.prototype, NoteMixin);\n\nexport default LinePoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nvar LineSegment = (function (ChartElement) {\n function LineSegment(linePoints, series, seriesIx) {\n ChartElement.call(this);\n\n this.linePoints = linePoints;\n this.series = series;\n this.seriesIx = seriesIx;\n }\n\n if ( ChartElement ) LineSegment.__proto__ = ChartElement;\n LineSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n LineSegment.prototype.constructor = LineSegment;\n\n LineSegment.prototype.points = function points () {\n return this.toGeometryPoints(this.linePoints);\n };\n\n LineSegment.prototype.toGeometryPoints = function toGeometryPoints (points) {\n var result = [];\n for (var i = 0, length = points.length; i < length; i++) {\n if (points[i] && points[i].visible !== false) {\n result.push(points[i]._childBox.toRect().center());\n }\n }\n\n return result;\n };\n\n LineSegment.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var customVisual = this.series.visual;\n if (customVisual) {\n this.visual = customVisual({\n points: this.toGeometryPoints(this.linePoints),\n series: this.series,\n sender: this.getSender(),\n createVisual: function () {\n this$1.segmentVisual();\n\n return this$1.visual;\n }\n });\n if (this.visual && !defined(this.visual.options.zIndex)) {\n this.visual.options.zIndex = this.series.zIndex;\n }\n } else {\n this.segmentVisual();\n }\n };\n\n LineSegment.prototype.segmentVisual = function segmentVisual () {\n var ref = this;\n var options = ref.options;\n var series = ref.series;\n var color = series.color;\n var defaults = series._defaults;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var line = draw.Path.fromPoints(this.points(), {\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n if (options.closed) {\n line.close();\n }\n\n this.visual = line;\n };\n\n LineSegment.prototype.aliasFor = function aliasFor (e, coords) {\n return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n };\n\n return LineSegment;\n}(ChartElement));\n\nsetDefaultOptions(LineSegment, {\n closed: false\n});\n\nexport default LineSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { last } from '../../common';\nimport { X, Y } from '../../common/constants';\n\nvar StepLineMixin = {\n calculateStepPoints: function(points) {\n var categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n var ref = categoryAxis.options;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n\n var stepAxis = vertical ? X : Y;\n var axis = vertical ? Y : X;\n var stepDir = reverse ? 2 : 1;\n var dir = stepDir;\n\n var previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n var result = [ previousPoint ];\n\n for (var idx = 1; idx < points.length; idx++) {\n var point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n if (previousPoint[stepAxis] !== point[stepAxis]) {\n var stepPoint = new geom.Point();\n stepPoint[stepAxis] = previousPoint[stepAxis];\n stepPoint[axis] = point[axis];\n\n result.push(stepPoint, point);\n }\n\n previousPoint = point;\n }\n\n if (!justified) {\n result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n } else if (previousPoint !== last(result)) {\n result.push(previousPoint);\n }\n\n return result;\n\n }\n};\n\nfunction toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n var box = lintPoint.box;\n var result = new geom.Point();\n\n result[stepAxis] = box[stepAxis + stepDir];\n result[axis] = box[axis + dir];\n\n return result;\n}\n\nexport default StepLineMixin;","import LineSegment from './line-segment';\nimport StepLineMixin from './step-line-mixin';\nimport { deepExtend } from '../../common';\n\nvar StepLineSegment = (function (LineSegment) {\n function StepLineSegment () {\n LineSegment.apply(this, arguments);\n }\n\n if ( LineSegment ) StepLineSegment.__proto__ = LineSegment;\n StepLineSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n StepLineSegment.prototype.constructor = StepLineSegment;\n\n StepLineSegment.prototype.points = function points () {\n return this.calculateStepPoints(this.linePoints);\n };\n\n return StepLineSegment;\n}(LineSegment));\n\ndeepExtend(StepLineSegment.prototype, StepLineMixin);\n\nexport default StepLineSegment;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport LineSegment from './line-segment';\n\nimport { CurveProcessor } from '../../core';\n\nimport { isFunction } from '../../common';\n\nvar SplineSegment = (function (LineSegment) {\n function SplineSegment () {\n LineSegment.apply(this, arguments);\n }\n\n if ( LineSegment ) SplineSegment.__proto__ = LineSegment;\n SplineSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n SplineSegment.prototype.constructor = SplineSegment;\n\n SplineSegment.prototype.segmentVisual = function segmentVisual () {\n var series = this.series;\n var defaults = series._defaults;\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var curveProcessor = new CurveProcessor(this.options.closed);\n var segments = curveProcessor.process(this.points());\n var curve = new draw.Path({\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n curve.segments.push.apply(curve.segments, segments);\n\n this.visual = curve;\n };\n\n return SplineSegment;\n}(LineSegment));\n\nexport default SplineSegment;","import { ZERO, INTERPOLATE } from '../constants';\n\nimport { Point } from '../../core';\nimport { MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nvar LineChartMixin = {\n renderSegments: function() {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesPoints = ref.seriesPoints;\n var series = options.series;\n var seriesCount = seriesPoints.length;\n var lastSegment;\n\n this._segments = [];\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var sortedPoints = this$1.sortPoints(seriesPoints[seriesIx]);\n var pointCount = sortedPoints.length;\n var linePoints = [];\n\n for (var pointIx = 0; pointIx < pointCount; pointIx++) {\n var point = sortedPoints[pointIx];\n if (point) {\n linePoints.push(point);\n } else if (this$1.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n if (linePoints.length > 1) {\n lastSegment = this$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1._addSegment(lastSegment);\n }\n linePoints = [];\n }\n }\n\n if (linePoints.length > 1) {\n lastSegment = this$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1._addSegment(lastSegment);\n }\n }\n\n this.children.unshift.apply(this.children, this._segments);\n },\n\n _addSegment: function(segment) {\n this._segments.push(segment);\n segment.parent = this;\n },\n\n sortPoints: function(points) {\n return points;\n },\n\n seriesMissingValues: function(series) {\n var missingValues = series.missingValues;\n var assumeZero = !missingValues && this.options.isStacked;\n\n return assumeZero ? ZERO : missingValues || INTERPOLATE;\n },\n\n getNearestPoint: function(x, y, seriesIx) {\n var target = new Point(x, y);\n var allPoints = this.seriesPoints[seriesIx];\n var nearestPointDistance = MAX_VALUE;\n var nearestPoint;\n\n for (var i = 0; i < allPoints.length; i++) {\n var point = allPoints[i];\n\n if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n var pointBox = point.box;\n var pointDistance = pointBox.center().distanceTo(target);\n\n if (pointDistance < nearestPointDistance) {\n nearestPoint = point;\n nearestPointDistance = pointDistance;\n }\n }\n }\n\n return nearestPoint;\n }\n};\n\nexport default LineChartMixin;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nvar ClipAnimation = (function (superclass) {\n function ClipAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) ClipAnimation.__proto__ = superclass;\n ClipAnimation.prototype = Object.create( superclass && superclass.prototype );\n ClipAnimation.prototype.constructor = ClipAnimation;\n\n ClipAnimation.prototype.setup = function setup () {\n this._setEnd(this.options.box.x1);\n };\n\n ClipAnimation.prototype.step = function step (pos) {\n var box = this.options.box;\n this._setEnd(interpolateValue(box.x1, box.x2, pos));\n };\n\n ClipAnimation.prototype._setEnd = function _setEnd (x) {\n var element = this.element;\n var segments = element.segments;\n var topRight = segments[1].anchor();\n var bottomRight = segments[2].anchor();\n\n element.suspend();\n topRight.setX(x);\n element.resume();\n bottomRight.setX(x);\n };\n\n return ClipAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(ClipAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(\"clip\", ClipAnimation);\n\nexport default ClipAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ClipAnimation from '../animations/clip-animation';\nimport anyHasZIndex from '../utils/any-has-z-index';\nimport { defined } from '../../common';\n\nvar ClipAnimationMixin = {\n createAnimation: function() {\n var root = this.getRoot();\n if (root && (root.options || {}).transitions !== false) {\n var box = root.size();\n var clipPath = draw.Path.fromRect(box.toRect());\n this.visual.clip(clipPath);\n this.animation = new ClipAnimation(clipPath, {\n box: box\n });\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation(clipPath);\n }\n }\n },\n\n _setChildrenAnimation: function(clipPath) {\n var points = this.animationPoints();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point && point.visual && defined(point.visual.options.zIndex)) {\n point.visual.clip(clipPath);\n }\n }\n }\n};\n\nexport default ClipAnimationMixin;","import CategoricalChart from '../categorical-chart';\nimport LinePoint from './line-point';\nimport LineSegment from './line-segment';\nimport StepLineSegment from './step-line-segment';\nimport SplineSegment from './spline-segment';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\n\nimport { ZERO, SMOOTH, STEP } from '../constants';\n\nimport { deepExtend, defined, isFunction } from '../../common';\n\nvar LineChart = (function (CategoricalChart) {\n function LineChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) LineChart.__proto__ = CategoricalChart;\n LineChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n LineChart.prototype.constructor = LineChart;\n\n LineChart.prototype.render = function render () {\n\n CategoricalChart.prototype.render.call(this);\n\n this.updateStackRange();\n this.renderSegments();\n };\n\n LineChart.prototype.pointType = function pointType () {\n return LinePoint;\n };\n\n LineChart.prototype.createPoint = function createPoint (data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var missingValues = this.seriesMissingValues(series);\n var value = data.valueFields.value;\n\n if (!defined(value) || value === null) {\n if (missingValues === ZERO) {\n value = 0;\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n LineChart.prototype.plotRange = function plotRange (point) {\n var this$1 = this;\n\n var plotValue = this.plotValue(point);\n\n if (this.options.isStacked) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n plotValue += this$1.plotValue(other);\n\n if (this$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n\n }\n\n return [ plotValue, plotValue ];\n };\n\n LineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === STEP) {\n pointType = StepLineSegment;\n } else if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n };\n\n LineChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result.concat(this._segments);\n };\n\n LineChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return false;\n };\n\n return LineChart;\n}(CategoricalChart));\n\ndeepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default LineChart;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { append, deepExtend, isFunction, last } from '../../common';\n\nvar AreaSegment = (function (LineSegment) {\n function AreaSegment(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n LineSegment.call(this, linePoints, currentSeries, seriesIx);\n\n this.prevSegment = prevSegment;\n this.stackPoints = stackPoints;\n }\n\n if ( LineSegment ) AreaSegment.__proto__ = LineSegment;\n AreaSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n AreaSegment.prototype.constructor = AreaSegment;\n\n AreaSegment.prototype.createVisual = function createVisual () {\n var series = this.series;\n var defaults = series._defaults;\n var lineOptions = series.line || {};\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n this.visual = new draw.Group({\n zIndex: series.zIndex\n });\n\n this.createFill({\n fill: {\n color: color,\n opacity: series.opacity\n },\n stroke: null\n });\n\n if (lineOptions.width > 0 && lineOptions.visible !== false) {\n this.createStroke({\n stroke: deepExtend({\n color: color,\n opacity: series.opacity,\n lineCap: \"butt\"\n }, lineOptions)\n });\n }\n };\n\n AreaSegment.prototype.strokeSegments = function strokeSegments () {\n var segments = this._strokeSegments;\n\n if (!segments) {\n segments = this._strokeSegments = this.createStrokeSegments();\n }\n\n return segments;\n };\n\n AreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.points());\n };\n\n AreaSegment.prototype.stackSegments = function stackSegments () {\n if (this.prevSegment) {\n return this.prevSegment.createStackSegments(this.stackPoints);\n }\n\n return this.createStackSegments(this.stackPoints);\n };\n\n AreaSegment.prototype.createStackSegments = function createStackSegments (stackPoints) {\n return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n };\n\n AreaSegment.prototype.segmentsFromPoints = function segmentsFromPoints (points) {\n return points.map(function (point) { return new geom.Segment(point); });\n };\n\n AreaSegment.prototype.createStroke = function createStroke (style) {\n var stroke = new draw.Path(style);\n stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n this.visual.append(stroke);\n };\n\n AreaSegment.prototype.hasStackSegment = function hasStackSegment () {\n return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n };\n\n AreaSegment.prototype.createFill = function createFill (style) {\n var strokeSegments = this.strokeSegments();\n var fillSegments = strokeSegments.slice(0);\n var hasStackSegments = this.hasStackSegment();\n\n if (hasStackSegments) {\n var stackSegments = this.stackSegments();\n\n append(fillSegments, stackSegments);\n }\n\n var fill = new draw.Path(style);\n fill.segments.push.apply(fill.segments, fillSegments);\n\n if (!hasStackSegments && strokeSegments.length > 1) {\n this.fillToAxes(fill);\n }\n\n this.visual.append(fill);\n };\n\n AreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n var chart = this.parent;\n var invertAxes = chart.options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.series);\n var crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n var endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n var segments = this.strokeSegments();\n var firstPoint = segments[0].anchor();\n var lastPoint = last(segments).anchor();\n var end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n if (invertAxes) {\n fillPath.lineTo(end, lastPoint.y)\n .lineTo(end, firstPoint.y);\n } else {\n fillPath.lineTo(lastPoint.x, end)\n .lineTo(firstPoint.x, end);\n }\n };\n\n return AreaSegment;\n}(LineSegment));\n\nexport default AreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport AreaSegment from './area-segment';\n\nimport { deepExtend } from '../../common';\n\nvar StepAreaSegment = (function (AreaSegment) {\n function StepAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) StepAreaSegment.__proto__ = AreaSegment;\n StepAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n StepAreaSegment.prototype.constructor = StepAreaSegment;\n\n StepAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n };\n\n StepAreaSegment.prototype.createStackSegments = function createStackSegments (stackPoints) {\n return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n };\n\n return StepAreaSegment;\n}(AreaSegment));\n\ndeepExtend(StepAreaSegment.prototype, StepLineMixin);\n\nexport default StepAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport { CurveProcessor } from '../../core';\n\nimport AreaSegment from './area-segment';\n\nvar SplineAreaSegment = (function (AreaSegment) {\n function SplineAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) SplineAreaSegment.__proto__ = AreaSegment;\n SplineAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n SplineAreaSegment.prototype.constructor = SplineAreaSegment;\n\n SplineAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n var curveProcessor = new CurveProcessor(this.options.closed);\n var linePoints = this.points();\n\n return curveProcessor.process(linePoints);\n };\n\n SplineAreaSegment.prototype.createStackSegments = function createStackSegments () {\n var strokeSegments = this.strokeSegments();\n var stackSegments = [];\n for (var idx = strokeSegments.length - 1; idx >= 0; idx--) {\n var segment = strokeSegments[idx];\n stackSegments.push(new geom.Segment(\n segment.anchor(),\n segment.controlOut(),\n segment.controlIn()\n ));\n }\n\n return stackSegments;\n };\n\n return SplineAreaSegment;\n}(AreaSegment));\n\nexport default SplineAreaSegment;","import LineChart from '../line-chart/line-chart';\nimport LinePoint from '../line-chart/line-point';\n\nimport AreaSegment from './area-segment';\nimport StepAreaSegment from './step-area-segment';\nimport SplineAreaSegment from './spline-area-segment';\n\nimport { STEP, SMOOTH, ZERO } from '../constants';\n\nvar AreaChart = (function (LineChart) {\n function AreaChart () {\n LineChart.apply(this, arguments);\n }\n\n if ( LineChart ) AreaChart.__proto__ = LineChart;\n AreaChart.prototype = Object.create( LineChart && LineChart.prototype );\n AreaChart.prototype.constructor = AreaChart;\n\n AreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n\n var stackPoints;\n if (isStacked && seriesIx > 0 && prevSegment) {\n var missingValues = this.seriesMissingValues(currentSeries);\n if (missingValues !== \"gap\") {\n stackPoints = prevSegment.linePoints;\n previousSegment = prevSegment;\n } else {\n stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n }\n }\n\n var pointType;\n if (style === STEP) {\n pointType = StepAreaSegment;\n } else if (style === SMOOTH) {\n pointType = SplineAreaSegment;\n } else {\n pointType = AreaSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n };\n\n AreaChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n LineChart.prototype.reflow.call(this, targetBox);\n\n var stackPoints = this._stackPoints;\n if (stackPoints) {\n for (var idx = 0; idx < stackPoints.length; idx++) {\n var stackPoint = stackPoints[idx];\n var pointSlot = this$1.categoryAxis.getSlot(stackPoint.categoryIx);\n stackPoint.reflow(pointSlot);\n }\n }\n };\n\n AreaChart.prototype._gapStackPoints = function _gapStackPoints (linePoints, seriesIx, style) {\n var this$1 = this;\n\n var seriesPoints = this.seriesPoints;\n var startIdx = linePoints[0].categoryIx;\n var length = linePoints.length;\n if (startIdx < 0) {\n startIdx = 0;\n length--;\n }\n\n var endIdx = startIdx + length;\n var pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n var stackPoints = [];\n\n this._stackPoints = this._stackPoints || [];\n for (var categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n var pointIx = categoryIx + pointOffset;\n var currentSeriesIx = seriesIx;\n var point = (void 0);\n\n do {\n currentSeriesIx--;\n point = seriesPoints[currentSeriesIx][pointIx];\n } while (currentSeriesIx > 0 && !point);\n\n if (point) {\n if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n stackPoints.push(this$1._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n }\n\n stackPoints.push(point);\n\n if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n stackPoints.push(this$1._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n }\n } else {\n var gapStackPoint = this$1._createGapStackPoint(categoryIx);\n this$1._stackPoints.push(gapStackPoint);\n stackPoints.push(gapStackPoint);\n }\n }\n\n return stackPoints;\n };\n\n AreaChart.prototype._previousSegmentPoint = function _previousSegmentPoint (categoryIx, pointIx, segmentIx, seriesIdx) {\n var seriesPoints = this.seriesPoints;\n var index = seriesIdx;\n var point;\n\n while (index > 0 && !point) {\n index--;\n point = seriesPoints[index][segmentIx];\n }\n\n if (!point) {\n point = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(point);\n } else {\n point = seriesPoints[index][pointIx];\n }\n\n return point;\n };\n\n AreaChart.prototype._createGapStackPoint = function _createGapStackPoint (categoryIx) {\n var options = this.pointOptions({}, 0);\n var point = new LinePoint(0, options);\n point.categoryIx = categoryIx;\n point.series = {};\n\n return point;\n };\n\n AreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues || ZERO;\n };\n\n AreaChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return false;\n };\n\n return AreaChart;\n}(LineChart));\n\nexport default AreaChart;\n","import { MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { Class } from '../common';\n\nvar AxisGroupRangeTracker = (function (Class) {\n function AxisGroupRangeTracker() {\n Class.call(this);\n\n this.axisRanges = {};\n }\n\n if ( Class ) AxisGroupRangeTracker.__proto__ = Class;\n AxisGroupRangeTracker.prototype = Object.create( Class && Class.prototype );\n AxisGroupRangeTracker.prototype.constructor = AxisGroupRangeTracker;\n\n AxisGroupRangeTracker.prototype.update = function update (chartAxisRanges) {\n var axisRanges = this.axisRanges;\n\n for (var axisName in chartAxisRanges) {\n var chartRange = chartAxisRanges[axisName];\n var range = axisRanges[axisName];\n axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n range.min = Math.min(range.min, chartRange.min);\n range.max = Math.max(range.max, chartRange.max);\n }\n };\n\n AxisGroupRangeTracker.prototype.reset = function reset (axisName) {\n this.axisRanges[axisName] = undefined;\n };\n\n AxisGroupRangeTracker.prototype.query = function query (axisName) {\n return this.axisRanges[axisName];\n };\n\n return AxisGroupRangeTracker;\n}(Class));\n\nexport default AxisGroupRangeTracker;","import { ChartElement, TextBox, Box } from '../../core';\nimport { FADEIN, INITIAL_ANIMATION_DURATION, INSIDE_END, INSIDE_BASE, OUTSIDE_END } from '../constants';\n\nimport { CENTER, TOP, BOTTOM, LEFT, RIGHT, X, Y, BLACK } from '../../common/constants';\nimport { getSpacing, setDefaultOptions } from '../../common';\n\nvar BarLabel = (function (ChartElement) {\n function BarLabel(content, options, pointData) {\n ChartElement.call(this, options);\n\n this.textBox = new TextBox(content, this.options, pointData);\n this.append(this.textBox);\n }\n\n if ( ChartElement ) BarLabel.__proto__ = ChartElement;\n BarLabel.prototype = Object.create( ChartElement && ChartElement.prototype );\n BarLabel.prototype.constructor = BarLabel;\n\n BarLabel.prototype.createVisual = function createVisual () {\n this.textBox.options.noclip = this.options.noclip;\n };\n\n BarLabel.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var vertical = options.vertical;\n var aboveAxis = options.aboveAxis;\n var text = this.children[0];\n var textOptions = text.options;\n var box = text.box;\n var padding = text.options.padding;\n var labelBox = targetBox;\n\n textOptions.align = vertical ? CENTER : LEFT;\n textOptions.vAlign = vertical ? TOP : CENTER;\n\n if (options.position === INSIDE_END) {\n if (vertical) {\n textOptions.vAlign = TOP;\n\n if (!aboveAxis && box.height() < targetBox.height()) {\n textOptions.vAlign = BOTTOM;\n }\n } else {\n textOptions.align = aboveAxis ? RIGHT : LEFT;\n }\n } else if (options.position === CENTER) {\n textOptions.vAlign = CENTER;\n textOptions.align = CENTER;\n } else if (options.position === INSIDE_BASE) {\n if (vertical) {\n textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n } else {\n textOptions.align = aboveAxis ? LEFT : RIGHT;\n }\n } else if (options.position === OUTSIDE_END) {\n if (vertical) {\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x1, targetBox.y1 - box.height(),\n targetBox.x2, targetBox.y1\n );\n } else {\n labelBox = new Box(\n targetBox.x1, targetBox.y2,\n targetBox.x2, targetBox.y2 + box.height()\n );\n }\n } else {\n textOptions.align = CENTER;\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x2, targetBox.y1,\n targetBox.x2 + box.width(), targetBox.y2\n );\n } else {\n labelBox = new Box(\n targetBox.x1 - box.width(), targetBox.y1,\n targetBox.x1, targetBox.y2\n );\n }\n }\n }\n\n if (!options.rotation) {\n if (vertical) {\n padding.left = padding.right =\n (labelBox.width() - text.contentBox.width()) / 2;\n } else {\n padding.top = padding.bottom =\n (labelBox.height() - text.contentBox.height()) / 2;\n }\n }\n\n text.reflow(labelBox);\n };\n\n BarLabel.prototype.alignToClipBox = function alignToClipBox (clipBox) {\n var vertical = this.options.vertical;\n var field = vertical ? Y : X;\n var start = field + \"1\";\n var end = field + \"2\";\n var text = this.children[0];\n var parentBox = this.parent.box;\n\n if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n var targetBox = text.paddingBox.clone();\n targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n this.reflow(targetBox);\n }\n };\n\n return BarLabel;\n}(ChartElement));\n\nsetDefaultOptions(BarLabel, {\n position: OUTSIDE_END,\n margin: getSpacing(3),\n padding: getSpacing(4),\n color: BLACK,\n background: \"\",\n border: {\n width: 1,\n color: \"\"\n },\n aboveAxis: true,\n vertical: false,\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n zIndex: 2\n});\n\nexport default BarLabel;","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport BarLabel from './bar-label';\n\nimport { BORDER_BRIGHTNESS, TOOLTIP_OFFSET } from '../constants';\n\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { ChartElement, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { WHITE, LEFT, RIGHT, BOTTOM, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, valueOrDefault } from '../../common';\n\nvar BAR_ALIGN_MIN_WIDTH = 6;\n\nvar Bar = (function (ChartElement) {\n function Bar(value, options) {\n ChartElement.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.value = value;\n }\n\n if ( ChartElement ) Bar.__proto__ = ChartElement;\n Bar.prototype = Object.create( ChartElement && ChartElement.prototype );\n Bar.prototype.constructor = Bar;\n\n Bar.prototype.render = function render () {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n };\n\n Bar.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText,\n deepExtend({\n vertical: options.vertical\n },\n labels\n ), pointData);\n this.append(this.label);\n }\n };\n\n Bar.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n Bar.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1.errorBars[i].reflow(targetBox);\n }\n }\n };\n\n Bar.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var ref = this;\n var box = ref.box;\n var options = ref.options;\n var customVisual = options.visual;\n\n if (this.visible !== false) {\n ChartElement.prototype.createVisual.call(this);\n\n if (customVisual) {\n var visual = this.rectVisual = customVisual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n sender: this.getSender(),\n series: this.series,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n rect: box.toRect(),\n createVisual: function () {\n var group = new draw.Group();\n this$1.createRect(group);\n return group;\n },\n options: options\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else if (box.width() > 0 && box.height() > 0) {\n this.createRect(this.visual);\n }\n }\n };\n\n Bar.prototype.createRect = function createRect (visual) {\n var options = this.options;\n var border = options.border;\n var strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n var rect = this.box.toRect();\n\n rect.size.width = Math.round(rect.size.width);\n\n var path = this.rectVisual = draw.Path.fromRect(rect, {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: {\n color: this.getBorderColor(),\n width: border.width,\n opacity: strokeOpacity,\n dashType: border.dashType\n }\n });\n\n var width = this.box.width();\n var height = this.box.height();\n\n var size = options.vertical ? width : height;\n\n if (size > BAR_ALIGN_MIN_WIDTH) {\n alignPathToPixel(path);\n\n // Fixes lineJoin issue in firefox when the joined lines are parallel\n if (width < 1 || height < 1) {\n path.options.stroke.lineJoin = \"round\";\n }\n }\n\n visual.append(path);\n\n if (hasGradientOverlay(options)) {\n var overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay));\n\n visual.append(overlay);\n }\n };\n\n Bar.prototype.createHighlight = function createHighlight (style) {\n var highlight = draw.Path.fromRect(this.box.toRect(), style);\n\n return alignPathToPixel(highlight);\n };\n\n Bar.prototype.highlightVisual = function highlightVisual () {\n return this.rectVisual;\n };\n\n Bar.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n };\n\n Bar.prototype.getBorderColor = function getBorderColor () {\n var color = this.color;\n var border = this.options.border;\n var brightness = border._brightness || BORDER_BRIGHTNESS;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(color).brightness(brightness).toHex();\n }\n\n return borderColor;\n };\n\n Bar.prototype.tooltipAnchor = function tooltipAnchor () {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var aboveAxis = ref.aboveAxis;\n var clipBox = this.owner.pane.clipBox() || box;\n var horizontalAlign = LEFT;\n var verticalAlign = TOP;\n var x, y;\n\n if (options.vertical) {\n x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n if (aboveAxis) {\n y = Math.max(box.y1, clipBox.y1);\n } else {\n y = Math.min(box.y2, clipBox.y2);\n verticalAlign = BOTTOM;\n }\n } else {\n var x1 = Math.max(box.x1, clipBox.x1);\n var x2 = Math.min(box.x2, clipBox.x2);\n\n if (options.isStacked) {\n verticalAlign = BOTTOM;\n if (aboveAxis) {\n horizontalAlign = RIGHT;\n x = x2;\n } else {\n x = x1;\n }\n y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n } else {\n if (aboveAxis) {\n x = x2 + TOOLTIP_OFFSET;\n } else {\n x = x1 - TOOLTIP_OFFSET;\n horizontalAlign = RIGHT;\n }\n y = Math.max(box.y1, clipBox.y1);\n }\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n };\n\n Bar.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n Bar.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n series: this.series\n };\n };\n\n return Bar;\n}(ChartElement));\n\ndeepExtend(Bar.prototype, PointEventsMixin);\ndeepExtend(Bar.prototype, NoteMixin);\n\nBar.prototype.defaults = {\n border: {\n width: 1\n },\n vertical: true,\n overlay: {\n gradient: \"glass\"\n },\n labels: {\n visible: false,\n format: \"{0}\"\n },\n opacity: 1,\n notes: {\n label: {}\n }\n};\n\nexport default Bar;","export function forEach(elements, callback) {\n elements.forEach(callback);\n}\n\nexport function forEachReverse(elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx - length - 1);\n }\n}","import { ChartElement } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\nimport { forEach, forEachReverse } from './utils';\n\nvar ClusterLayout = (function (ChartElement) {\n function ClusterLayout(options) {\n ChartElement.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n if ( ChartElement ) ClusterLayout.__proto__ = ChartElement;\n ClusterLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n ClusterLayout.prototype.constructor = ClusterLayout;\n\n ClusterLayout.prototype.reflow = function reflow (box) {\n var ref = this.options;\n var vertical = ref.vertical;\n var gap = ref.gap;\n var spacing = ref.spacing;\n var children = this.children;\n var count = children.length;\n var axis = vertical ? Y : X;\n var slots = count + gap + (spacing * (count - 1));\n var slotSize = (vertical ? box.height() : box.width()) / slots;\n var position = box[axis + 1] + slotSize * (gap / 2);\n\n this.forEach(children, function (child, idx) {\n var childBox = (child.box || box).clone();\n\n childBox[axis + 1] = position;\n childBox[axis + 2] = position + slotSize;\n\n child.reflow(childBox);\n if (idx < count - 1) {\n position += (slotSize * spacing);\n }\n\n position += slotSize;\n });\n };\n\n return ClusterLayout;\n}(ChartElement));\n\nsetDefaultOptions(ClusterLayout, {\n vertical: false,\n gap: 0,\n spacing: 0\n});\n\nexport default ClusterLayout;","import { ChartElement, Box } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nvar StackWrap = (function (ChartElement) {\n function StackWrap () {\n ChartElement.apply(this, arguments);\n }\n\n if ( ChartElement ) StackWrap.__proto__ = ChartElement;\n StackWrap.prototype = Object.create( ChartElement && ChartElement.prototype );\n StackWrap.prototype.constructor = StackWrap;\n\n StackWrap.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var positionAxis = this.options.vertical ? X : Y;\n var children = this.children;\n var childrenCount = children.length;\n var box = this.box = new Box();\n\n for (var i = 0; i < childrenCount; i++) {\n var currentChild = children[i];\n\n if (currentChild.visible !== false) {\n var childBox = currentChild.box.clone();\n childBox.snapTo(targetBox, positionAxis);\n\n if (i === 0) {\n box = this$1.box = childBox.clone();\n }\n\n currentChild.reflow(childBox);\n box.wrap(childBox);\n }\n }\n };\n\n return StackWrap;\n}(ChartElement));\n\nsetDefaultOptions(StackWrap, {\n vertical: true\n});\n\nexport default StackWrap;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Bar from './bar';\n\nimport CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport StackWrap from '../layout/stack-wrap';\nimport { BAR, OUTSIDE_END, INSIDE_END } from '../constants';\n\nimport anyHasZIndex from '../utils/any-has-z-index';\n\nimport { STRING, X, Y } from '../../common/constants';\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nvar BarChart = (function (CategoricalChart) {\n function BarChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) BarChart.__proto__ = CategoricalChart;\n BarChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n BarChart.prototype.constructor = BarChart;\n\n BarChart.prototype.render = function render () {\n CategoricalChart.prototype.render.call(this);\n this.updateStackRange();\n };\n\n BarChart.prototype.pointType = function pointType () {\n return Bar;\n };\n\n BarChart.prototype.clusterType = function clusterType () {\n return ClusterLayout;\n };\n\n BarChart.prototype.stackType = function stackType () {\n return StackWrap;\n };\n\n BarChart.prototype.stackLimits = function stackLimits (axisName, stackName) {\n var limits = CategoricalChart.prototype.stackLimits.call(this, axisName, stackName);\n\n return limits;\n };\n\n BarChart.prototype.createPoint = function createPoint (data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var isStacked = options.isStacked;\n var value = this.pointValue(data);\n var pointOptions = this.pointOptions(series, seriesIx);\n\n var labelOptions = pointOptions.labels;\n if (isStacked) {\n if (labelOptions.position === OUTSIDE_END) {\n labelOptions.position = INSIDE_END;\n }\n }\n\n pointOptions.isStacked = isStacked;\n\n var color = data.fields.color || series.color;\n if (value < 0 && pointOptions.negativeColor) {\n color = pointOptions.negativeColor;\n }\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var pointType = this.pointType();\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n var clusterType = this.clusterType();\n cluster = new clusterType({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (isStacked) {\n var stackWrap = this.getStackWrap(series, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n };\n\n BarChart.prototype.getStackWrap = function getStackWrap (series, cluster) {\n var stack = series.stack;\n var stackGroup = stack ? stack.group || stack : stack;\n var wraps = cluster.children;\n var stackWrap;\n\n if (typeof stackGroup === STRING) {\n for (var i = 0; i < wraps.length; i++) {\n if (wraps[i]._stackGroup === stackGroup) {\n stackWrap = wraps[i];\n break;\n }\n }\n } else {\n stackWrap = wraps[0];\n }\n\n if (!stackWrap) {\n var stackType = this.stackType();\n stackWrap = new stackType({\n vertical: !this.options.invertAxes\n });\n stackWrap._stackGroup = stackGroup;\n cluster.append(stackWrap);\n }\n\n return stackWrap;\n };\n\n BarChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx, valueAxis) {\n var options = this.options;\n var categorySlot = categoryAxis.getSlot(categoryIx);\n var startValue = valueAxis.startValue();\n\n if (options.isStacked) {\n var zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n var stackAxis = options.invertAxes ? X : Y;\n categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n }\n\n return categorySlot;\n };\n\n BarChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n };\n\n BarChart.prototype.createAnimation = function createAnimation () {\n this._setAnimationOptions();\n CategoricalChart.prototype.createAnimation.call(this);\n\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation();\n }\n };\n\n BarChart.prototype._setChildrenAnimation = function _setChildrenAnimation () {\n var this$1 = this;\n\n var points = this.points;\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n var pointVisual = point.visual;\n if (pointVisual && defined(pointVisual.options.zIndex)) {\n point.options.animation = this$1.options.animation;\n point.createAnimation();\n }\n }\n };\n\n BarChart.prototype._setAnimationOptions = function _setAnimationOptions () {\n var options = this.options;\n var animation = options.animation || {};\n var origin;\n\n if (options.isStacked) {\n var valueAxis = this.seriesValueAxis(options.series[0]);\n origin = valueAxis.getSlot(valueAxis.startValue());\n } else {\n origin = this.categoryAxis.getSlot(0);\n }\n\n animation.origin = new geom.Point(origin.x1, origin.y1);\n animation.vertical = !options.invertAxes;\n };\n\n return BarChart;\n}(CategoricalChart));\n\nsetDefaultOptions(BarChart, {\n animation: {\n type: BAR\n }\n});\n\nexport default BarChart;\n","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { WHITE, LEFT, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar Candlestick = (function (ChartElement) {\n function Candlestick(value, options) {\n ChartElement.call(this, options);\n this.value = value;\n }\n\n if ( ChartElement ) Candlestick.__proto__ = ChartElement;\n Candlestick.prototype = Object.create( ChartElement && ChartElement.prototype );\n Candlestick.prototype.constructor = Candlestick;\n\n Candlestick.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var ocSlot = valueAxis.getSlot(value.open, value.close);\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n\n ocSlot.x1 = lhSlot.x1 = box.x1;\n ocSlot.x2 = lhSlot.x2 = box.x2;\n\n this.realBody = ocSlot;\n\n var mid = lhSlot.center().x;\n var points = [];\n\n points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n this.lines = points;\n\n this.box = lhSlot.clone().wrap(ocSlot);\n\n if (!this._rendered) {\n this._rendered = true;\n this.createNote();\n }\n\n this.reflowNote();\n };\n\n Candlestick.prototype.reflowNote = function reflowNote () {\n if (this.note) {\n this.note.reflow(this.box);\n }\n };\n\n Candlestick.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n this._mainVisual = this.mainVisual(this.options);\n this.visual.append(\n this._mainVisual\n );\n\n this.createOverlay();\n };\n\n Candlestick.prototype.mainVisual = function mainVisual (options) {\n var group = new draw.Group();\n\n this.createBody(group, options);\n this.createLines(group, options);\n\n return group;\n };\n\n Candlestick.prototype.createBody = function createBody (container, options) {\n var body = draw.Path.fromRect(this.realBody.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: this.getBorderColor(),\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n alignPathToPixel(body);\n container.append(body);\n\n if (hasGradientOverlay(options)) {\n container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay)));\n }\n };\n\n Candlestick.prototype.createLines = function createLines (container, options) {\n this.drawLines(container, options, this.lines, options.line);\n };\n\n Candlestick.prototype.drawLines = function drawLines (container, options, lines, lineOptions) {\n if (!lines) {\n return;\n }\n\n var lineStyle = {\n stroke: {\n color: lineOptions.color || this.color,\n opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n width: lineOptions.width,\n dashType: lineOptions.dashType,\n lineCap: \"butt\"\n }\n };\n\n for (var i = 0; i < lines.length; i++) {\n var line = draw.Path.fromPoints(lines[i], lineStyle);\n alignPathToPixel(line);\n container.append(line);\n }\n };\n\n Candlestick.prototype.getBorderColor = function getBorderColor () {\n var border = this.options.border;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(this.color).brightness(border._brightness).toHex();\n }\n\n return borderColor;\n };\n\n Candlestick.prototype.createOverlay = function createOverlay () {\n var overlay = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null\n });\n\n this.visual.append(overlay);\n };\n\n Candlestick.prototype.createHighlight = function createHighlight () {\n var highlight = this.options.highlight;\n var normalColor = this.color;\n\n this.color = highlight.color || this.color;\n var overlay = this.mainVisual(\n deepExtend({}, this.options, {\n line: {\n color: this.getBorderColor()\n }\n }, highlight)\n );\n this.color = normalColor;\n\n return overlay;\n };\n\n Candlestick.prototype.highlightVisual = function highlightVisual () {\n return this._mainVisual;\n };\n\n Candlestick.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this._mainVisual\n };\n };\n\n Candlestick.prototype.tooltipAnchor = function tooltipAnchor () {\n var box = this.box;\n var clipBox = this.owner.pane.clipBox() || box;\n\n return {\n point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n align: {\n horizontal: LEFT,\n vertical: TOP\n }\n };\n };\n\n Candlestick.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n Candlestick.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n return Candlestick;\n}(ChartElement));\n\nsetDefaultOptions(Candlestick, {\n vertical: true,\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"<table>\" +\n \"<tr><th colspan='2'>{4:d}</th></tr>\" +\n \"<tr><td>Open:</td><td>{0:C}</td></tr>\" +\n \"<tr><td>High:</td><td>{1:C}</td></tr>\" +\n \"<tr><td>Low:</td><td>{2:C}</td></tr>\" +\n \"<tr><td>Close:</td><td>{3:C}</td></tr>\" +\n \"</table>\"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n }\n});\n\ndeepExtend(Candlestick.prototype, PointEventsMixin);\ndeepExtend(Candlestick.prototype, NoteMixin);\n\nexport default Candlestick;","import CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport Candlestick from './candlestick';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport { CANDLESTICK, OHLC } from '../constants';\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, isFunction } from '../../common';\n\nvar CandlestickChart = (function (CategoricalChart) {\n function CandlestickChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) CandlestickChart.__proto__ = CategoricalChart;\n CandlestickChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n CandlestickChart.prototype.constructor = CandlestickChart;\n\n CandlestickChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n };\n\n CandlestickChart.prototype.addValue = function addValue (data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n point.noteText = data.fields.noteText;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n };\n\n CandlestickChart.prototype.pointType = function pointType () {\n return Candlestick;\n };\n\n CandlestickChart.prototype.createPoint = function createPoint (data, fields) {\n var series = fields.series;\n var pointType = this.pointType();\n var value = data.valueFields;\n var pointOptions = deepExtend({}, series);\n var color = data.fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (series.type === CANDLESTICK || series.type === OHLC) {\n if (value.open > value.close) {\n color = data.fields.downColor || series.downColor || series.color;\n }\n }\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.vertical = !this.options.invertAxes;\n\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n return point;\n };\n\n CandlestickChart.prototype.splitValue = function splitValue (value) {\n return [ value.low, value.open, value.close, value.high ];\n };\n\n CandlestickChart.prototype.updateRange = function updateRange (value, fields) {\n var axisName = fields.series.axis;\n var parts = this.splitValue(value);\n var axisRange = this.valueAxisRanges[axisName];\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n };\n\n CandlestickChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.open, value.high,\n value.low, value.close, point.category\n );\n };\n\n CandlestickChart.prototype.animationPoints = function animationPoints () {\n return this.points;\n };\n\n return CandlestickChart;\n}(CategoricalChart));\n\ndeepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\nexport default CandlestickChart;\n","import { Color } from '@progress/kendo-drawing';\n\nimport Candlestick from '../candlestick-chart/candlestick';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport { ShapeElement } from '../../core';\n\nimport { LINE_MARKER_SIZE, BORDER_BRIGHTNESS } from '../constants';\n\nimport { CROSS, CIRCLE, WHITE } from '../../common/constants';\nimport { deepExtend, defined, setDefaultOptions } from '../../common';\n\nvar BoxPlot = (function (Candlestick) {\n function BoxPlot(value, options) {\n Candlestick.call(this, value, options);\n\n this.createNote();\n }\n\n if ( Candlestick ) BoxPlot.__proto__ = Candlestick;\n BoxPlot.prototype = Object.create( Candlestick && Candlestick.prototype );\n BoxPlot.prototype.constructor = BoxPlot;\n\n BoxPlot.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var whiskerSlot, boxSlot;\n\n this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n this.realBody = boxSlot;\n this.reflowBoxSlot(box);\n\n this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n this.reflowWhiskerSlot(box);\n\n var medianSlot = valueAxis.getSlot(value.median);\n\n if (value.mean) {\n var meanSlot = valueAxis.getSlot(value.mean);\n this.meanPoints = this.calcMeanPoints(box, meanSlot);\n }\n\n this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n this.box = whiskerSlot.clone().wrap(boxSlot);\n this.reflowNote();\n };\n\n BoxPlot.prototype.reflowBoxSlot = function reflowBoxSlot (box) {\n this.boxSlot.x1 = box.x1;\n this.boxSlot.x2 = box.x2;\n };\n\n BoxPlot.prototype.reflowWhiskerSlot = function reflowWhiskerSlot (box) {\n this.whiskerSlot.x1 = box.x1;\n this.whiskerSlot.x2 = box.x2;\n };\n\n BoxPlot.prototype.calcMeanPoints = function calcMeanPoints (box, meanSlot) {\n return [\n [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n ];\n };\n\n BoxPlot.prototype.calcWhiskerPoints = function calcWhiskerPoints (boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().x;\n return [ [\n [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n ], [\n [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n ] ];\n };\n\n BoxPlot.prototype.calcMedianPoints = function calcMedianPoints (box, medianSlot) {\n return [\n [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n ];\n };\n\n BoxPlot.prototype.renderOutliers = function renderOutliers (options) {\n var this$1 = this;\n\n var value = this.value;\n var outliers = value.outliers || [];\n var outerFence = Math.abs(value.q3 - value.q1) * 3;\n var elements = [];\n var markers = options.markers || {};\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i];\n if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n markers = options.outliers;\n } else {\n markers = options.extremes;\n }\n var markersBorder = deepExtend({}, markers.border);\n\n if (!defined(markersBorder.color)) {\n if (defined(this$1.color)) {\n markersBorder.color = this$1.color;\n } else {\n markersBorder.color =\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n }\n\n var shape = new ShapeElement({\n type: markers.type,\n width: markers.size,\n height: markers.size,\n rotation: markers.rotation,\n background: markers.background,\n border: markersBorder,\n opacity: markers.opacity\n });\n\n shape.value = outlierValue;\n\n elements.push(shape);\n }\n\n this.reflowOutliers(elements);\n return elements;\n };\n\n BoxPlot.prototype.reflowOutliers = function reflowOutliers (outliers) {\n var this$1 = this;\n\n var valueAxis = this.owner.seriesValueAxis(this.options);\n var center = this.box.center();\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i].value;\n var markerBox = valueAxis.getSlot(outlierValue);\n\n if (this$1.options.vertical) {\n markerBox.move(center.x);\n } else {\n markerBox.move(undefined, center.y);\n }\n\n this$1.box = this$1.box.wrap(markerBox);\n outliers[i].reflow(markerBox);\n }\n };\n\n BoxPlot.prototype.mainVisual = function mainVisual (options) {\n var group = Candlestick.prototype.mainVisual.call(this, options);\n var outliers = this.renderOutliers(options);\n\n for (var i = 0; i < outliers.length; i++) {\n var element = outliers[i].getElement();\n if (element) {\n group.append(element);\n }\n }\n\n return group;\n };\n\n BoxPlot.prototype.createLines = function createLines (container, options) {\n this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n this.drawLines(container, options, this.medianPoints, options.median);\n this.drawLines(container, options, this.meanPoints, options.mean);\n };\n\n BoxPlot.prototype.getBorderColor = function getBorderColor () {\n if ((this.options.border || {}).color) {\n return this.options.border.color;\n }\n\n if (this.color) {\n return this.color;\n }\n\n return Candlestick.prototype.getBorderColor.call(this);\n };\n\n return BoxPlot;\n}(Candlestick));\n\nsetDefaultOptions(BoxPlot, {\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n median: {\n color: \"#f6f6f6\"\n },\n mean: {\n width: 2,\n dashType: \"dash\",\n color: \"#f6f6f6\"\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"<table>\" +\n \"<tr><th colspan='2'>{6:d}</th></tr>\" +\n \"<tr><td>Lower:</td><td>{0:C}</td></tr>\" +\n \"<tr><td>Q1:</td><td>{1:C}</td></tr>\" +\n \"<tr><td>Median:</td><td>{2:C}</td></tr>\" +\n \"<tr><td>Mean:</td><td>{5:C}</td></tr>\" +\n \"<tr><td>Q3:</td><td>{3:C}</td></tr>\" +\n \"<tr><td>Upper:</td><td>{4:C}</td></tr>\" +\n \"</table>\"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n outliers: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CROSS,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n },\n extremes: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n }\n});\n\ndeepExtend(BoxPlot.prototype, PointEventsMixin);\n\nexport default BoxPlot;","import BoxPlot from './box-plot';\n\nvar VerticalBoxPlot = (function (BoxPlot) {\n function VerticalBoxPlot () {\n BoxPlot.apply(this, arguments);\n }\n\n if ( BoxPlot ) VerticalBoxPlot.__proto__ = BoxPlot;\n VerticalBoxPlot.prototype = Object.create( BoxPlot && BoxPlot.prototype );\n VerticalBoxPlot.prototype.constructor = VerticalBoxPlot;\n\n VerticalBoxPlot.prototype.reflowBoxSlot = function reflowBoxSlot (box) {\n this.boxSlot.y1 = box.y1;\n this.boxSlot.y2 = box.y2;\n };\n\n VerticalBoxPlot.prototype.reflowWhiskerSlot = function reflowWhiskerSlot (box) {\n this.whiskerSlot.y1 = box.y1;\n this.whiskerSlot.y2 = box.y2;\n };\n\n VerticalBoxPlot.prototype.calcMeanPoints = function calcMeanPoints (box, meanSlot) {\n return [\n [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n ];\n };\n\n VerticalBoxPlot.prototype.calcWhiskerPoints = function calcWhiskerPoints (boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().y;\n return [ [\n [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n ], [\n [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n ] ];\n };\n\n VerticalBoxPlot.prototype.calcMedianPoints = function calcMedianPoints (box, medianSlot) {\n return [\n [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n ];\n };\n\n return VerticalBoxPlot;\n}(BoxPlot));\n\nexport default VerticalBoxPlot;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport VerticalBoxPlot from './vertical-box-plot';\nimport BoxPlot from './box-plot';\nimport ClusterLayout from '../layout/cluster-layout';\n\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nvar BoxPlotChart = (function (CandlestickChart) {\n function BoxPlotChart () {\n CandlestickChart.apply(this, arguments);\n }\n\n if ( CandlestickChart ) BoxPlotChart.__proto__ = CandlestickChart;\n BoxPlotChart.prototype = Object.create( CandlestickChart && CandlestickChart.prototype );\n BoxPlotChart.prototype.constructor = BoxPlotChart;\n\n BoxPlotChart.prototype.addValue = function addValue (data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n };\n\n BoxPlotChart.prototype.pointType = function pointType () {\n if (this.options.invertAxes) {\n return VerticalBoxPlot;\n }\n\n return BoxPlot;\n };\n\n BoxPlotChart.prototype.splitValue = function splitValue (value) {\n return [\n value.lower, value.q1, value.median,\n value.q3, value.upper\n ];\n };\n\n BoxPlotChart.prototype.updateRange = function updateRange (value, fields) {\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName];\n var parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n if (defined(value.mean)) {\n parts = parts.concat(value.mean);\n }\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n };\n\n BoxPlotChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.lower, value.q1, value.median,\n value.q3, value.upper, value.mean, point.category\n );\n };\n\n BoxPlotChart.prototype.filterOutliers = function filterOutliers (items) {\n var length = (items || []).length;\n var result = [];\n\n for (var i = 0; i < length; i++) {\n var item = items[i];\n if (defined(item) && item !== null) {\n result.push(item);\n }\n }\n\n return result;\n };\n\n BoxPlotChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return false;\n };\n\n return BoxPlotChart;\n}(CandlestickChart));\n\nexport default BoxPlotChart;\n","import ErrorBarBase from './error-bar-base';\n\nvar ScatterErrorBar = (function (ErrorBarBase) {\n function ScatterErrorBar () {\n ErrorBarBase.apply(this, arguments);\n }\n\n if ( ErrorBarBase ) ScatterErrorBar.__proto__ = ErrorBarBase;\n ScatterErrorBar.prototype = Object.create( ErrorBarBase && ErrorBarBase.prototype );\n ScatterErrorBar.prototype.constructor = ScatterErrorBar;\n\n ScatterErrorBar.prototype.getAxis = function getAxis () {\n var axes = this.chart.seriesAxes(this.series);\n var axis = this.isVertical ? axes.y : axes.x;\n\n return axis;\n };\n\n return ScatterErrorBar;\n}(ErrorBarBase));\n\nexport default ScatterErrorBar;","import { ChartElement, Box } from '../../core';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport ErrorRangeCalculator from '../error-bars/error-range-calculator';\nimport ScatterErrorBar from '../error-bars/scatter-error-bar';\nimport LinePoint from '../line-chart/line-point';\n\nimport { hasValue, evalOptions } from '../utils';\n\nimport { deepExtend, isNumber, isString, defined, isFunction, setDefaultOptions } from '../../common';\nimport { X, Y, MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { parseDate } from '../../date-utils';\n\nvar ScatterChart = (function (ChartElement) {\n function ScatterChart(plotArea, options) {\n\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n if ( ChartElement ) ScatterChart.__proto__ = ChartElement;\n ScatterChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n ScatterChart.prototype.constructor = ScatterChart;\n\n ScatterChart.prototype._initFields = function _initFields () {\n // X and Y axis ranges grouped by name, e.g.:\n // primary: { min: 0, max: 1 }\n this.xAxisRanges = {};\n this.yAxisRanges = {};\n\n this.points = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n };\n\n ScatterChart.prototype.render = function render () {\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n ScatterChart.prototype.addErrorBar = function addErrorBar (point, field, fields) {\n var value = point.value[field];\n var valueErrorField = field + \"Value\";\n var lowField = field + \"ErrorLow\";\n var highField = field + \"ErrorHigh\";\n var seriesIx = fields.seriesIx;\n var series = fields.series;\n var errorBars = point.options.errorBars;\n var lowValue = fields[lowField];\n var highValue = fields[highField];\n\n if (isNumber(value)) {\n var errorRange;\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n }\n\n if (errorBars && defined(errorBars[valueErrorField])) {\n this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n }\n\n if (errorRange) {\n this.addPointErrorBar(errorRange, point, field);\n }\n }\n };\n\n ScatterChart.prototype.addPointErrorBar = function addPointErrorBar (errorRange, point, field) {\n var low = errorRange.low;\n var high = errorRange.high;\n var series = point.series;\n var options = point.options.errorBars;\n var isVertical = field === Y;\n var item = {};\n\n point[field + \"Low\"] = low;\n point[field + \"High\"] = high;\n\n point.errorBars = point.errorBars || [];\n var errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n point.errorBars.push(errorBar);\n point.append(errorBar);\n\n item[field] = low;\n this.updateRange(item, series);\n item[field] = high;\n this.updateRange(item, series);\n };\n\n ScatterChart.prototype.addValue = function addValue (value, fields) {\n var x = value.x;\n var y = value.y;\n var seriesIx = fields.seriesIx;\n var series = this.options.series[seriesIx];\n var missingValues = this.seriesMissingValues(series);\n var seriesPoints = this.seriesPoints[seriesIx];\n\n var pointValue = value;\n if (!(hasValue(x) && hasValue(y))) {\n pointValue = this.createMissingValue(pointValue, missingValues);\n }\n\n var point;\n if (pointValue) {\n point = this.createPoint(pointValue, fields);\n if (point) {\n Object.assign(point, fields);\n this.addErrorBar(point, X, fields);\n this.addErrorBar(point, Y, fields);\n }\n this.updateRange(pointValue, fields.series);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n };\n\n ScatterChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues;\n };\n\n ScatterChart.prototype.createMissingValue = function createMissingValue () {};\n\n ScatterChart.prototype.updateRange = function updateRange (value, series) {\n var intlService = this.chartService.intl;\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var x = value.x;\n var y = value.y;\n var xAxisRange = this.xAxisRanges[xAxisName];\n var yAxisRange = this.yAxisRanges[yAxisName];\n\n if (hasValue(x)) {\n xAxisRange = this.xAxisRanges[xAxisName] =\n xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(x)) {\n x = parseDate(intlService, x);\n }\n\n xAxisRange.min = Math.min(xAxisRange.min, x);\n xAxisRange.max = Math.max(xAxisRange.max, x);\n }\n\n if (hasValue(y)) {\n yAxisRange = this.yAxisRanges[yAxisName] =\n yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(y)) {\n y = parseDate(intlService, y);\n }\n\n yAxisRange.min = Math.min(yAxisRange.min, y);\n yAxisRange.max = Math.max(yAxisRange.max, y);\n }\n };\n\n ScatterChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\",\n \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem\n }, state);\n }\n\n return pointOptions;\n };\n\n ScatterChart.prototype.pointType = function pointType () {\n return LinePoint;\n };\n\n ScatterChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n };\n\n ScatterChart.prototype.createPoint = function createPoint (value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n ScatterChart.prototype.seriesAxes = function seriesAxes (series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return {\n x: xAxis,\n y: yAxis\n };\n };\n\n ScatterChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var seriesAxes = this$1.seriesAxes(fields.series);\n var slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n var slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n };\n\n ScatterChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n };\n\n ScatterChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var seriesPoints = ref.seriesPoints;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var currentSeriesPoints = seriesPoints[seriesIx];\n if (!currentSeriesPoints) {\n seriesPoints[seriesIx] = [];\n }\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1.plotArea.bindPoint(currentSeries, pointIx);\n var value = ref$1.valueFields;\n var fields = ref$1.fields;\n\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1\n }, fields));\n }\n }\n };\n\n ScatterChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y);\n };\n\n ScatterChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n };\n\n return ScatterChart;\n}(ChartElement));\nsetDefaultOptions(ScatterChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}\"\n },\n labels: {\n format: \"{0}, {1}\"\n },\n clip: true\n});\ndeepExtend(ScatterChart.prototype, ClipAnimationMixin);\n\nexport default ScatterChart;\n","import { drawing as draw, geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport LinePoint from '../line-chart/line-point';\nimport { BORDER_BRIGHTNESS } from '../constants';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend } from '../../common';\n\nvar Bubble = (function (LinePoint) {\n function Bubble(value, options) {\n LinePoint.call(this, value, options);\n\n this.category = value.category;\n }\n\n if ( LinePoint ) Bubble.__proto__ = LinePoint;\n Bubble.prototype = Object.create( LinePoint && LinePoint.prototype );\n Bubble.prototype.constructor = Bubble;\n\n Bubble.prototype.createHighlight = function createHighlight () {\n var highlight = this.options.highlight;\n var border = highlight.border;\n var markers = this.options.markers;\n var center = this.box.center();\n var radius = (markers.size + markers.border.width + border.width) / 2;\n var highlightGroup = new draw.Group();\n var shadow = new draw.Circle(new geom.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n stroke: {\n color: 'none'\n },\n fill: this.createGradient({\n gradient: 'bubbleShadow',\n color: markers.background,\n stops: [ {\n offset: 0,\n color: markers.background,\n opacity: 0.3\n }, {\n offset: 1,\n color: markers.background,\n opacity: 0\n } ]\n })\n });\n var overlay = new draw.Circle(new geom.Circle([ center.x, center.y ], radius), {\n stroke: {\n color: border.color ||\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n width: border.width,\n opacity: border.opacity\n },\n fill: {\n color: markers.background,\n opacity: highlight.opacity\n }\n });\n\n highlightGroup.append(shadow, overlay);\n\n return highlightGroup;\n };\n\n return Bubble;\n}(LinePoint));\n\nBubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n labels: {\n position: CENTER\n },\n highlight: {\n opacity: 1,\n border: {\n color: \"#fff\",\n width: 2,\n opacity: 1\n }\n }\n});\n\nBubble.prototype.defaults.highlight.zIndex = undefined;\n\nexport default Bubble;","import ScatterChart from '../scatter-charts/scatter-chart';\nimport Bubble from './bubble';\n\nimport { INITIAL_ANIMATION_DURATION, BUBBLE } from '../constants';\n\nimport { MIN_VALUE, CIRCLE } from '../../common/constants';\nimport { deepExtend, isFunction, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar BubbleChart = (function (ScatterChart) {\n function BubbleChart () {\n ScatterChart.apply(this, arguments);\n }\n\n if ( ScatterChart ) BubbleChart.__proto__ = ScatterChart;\n BubbleChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n BubbleChart.prototype.constructor = BubbleChart;\n\n BubbleChart.prototype._initFields = function _initFields () {\n this._maxSize = MIN_VALUE;\n ScatterChart.prototype._initFields.call(this);\n };\n\n BubbleChart.prototype.addValue = function addValue (value, fields) {\n if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n ScatterChart.prototype.addValue.call(this, value, fields);\n } else {\n this.points.push(null);\n this.seriesPoints[fields.seriesIx].push(null);\n }\n };\n\n BubbleChart.prototype.reflow = function reflow (box) {\n this.updateBubblesSize(box);\n ScatterChart.prototype.reflow.call(this, box);\n };\n\n BubbleChart.prototype.pointType = function pointType () {\n return Bubble;\n };\n\n BubbleChart.prototype.createPoint = function createPoint (value, fields) {\n var series = fields.series;\n var pointsCount = series.data.length;\n var delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n var animationOptions = {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay,\n type: BUBBLE\n };\n\n var color = fields.color || series.color;\n if (value.size < 0 && series.negativeValues.visible) {\n color = valueOrDefault(\n series.negativeValues.color, color\n );\n }\n\n var pointOptions = deepExtend({\n labels: {\n animation: {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay\n }\n }\n }, this.pointOptions(series, fields.seriesIx), {\n markers: {\n type: CIRCLE,\n border: series.border,\n opacity: series.opacity,\n animation: animationOptions\n }\n });\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.markers.background = color;\n\n var point = new Bubble(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n BubbleChart.prototype.updateBubblesSize = function updateBubblesSize (box) {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var boxSize = Math.min(box.width(), box.height());\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesPoints = this$1.seriesPoints[seriesIx];\n var minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n var maxSize = currentSeries.maxSize || boxSize * 0.2;\n var minR = minSize / 2;\n var maxR = maxSize / 2;\n var minArea = Math.PI * minR * minR;\n var maxArea = Math.PI * maxR * maxR;\n var areaRange = maxArea - minArea;\n var areaRatio = areaRange / this$1._maxSize;\n\n for (var pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n var point = seriesPoints[pointIx];\n if (point) {\n var area = Math.abs(point.value.size) * areaRatio;\n var radius = Math.sqrt((minArea + area) / Math.PI);\n var baseZIndex = valueOrDefault(point.options.zIndex, 0);\n var zIndex = baseZIndex + (1 - radius / maxR);\n\n deepExtend(point.options, {\n zIndex: zIndex,\n markers: {\n size: radius * 2,\n zIndex: zIndex\n },\n labels: {\n zIndex: zIndex + 1\n }\n });\n }\n }\n }\n };\n\n BubbleChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n };\n\n BubbleChart.prototype.createAnimation = function createAnimation () {};\n BubbleChart.prototype.createVisual = function createVisual () {};\n\n return BubbleChart;\n}(ScatterChart));\n\nsetDefaultOptions(BubbleChart, {\n tooltip: {\n format: \"{3}\"\n },\n labels: {\n format: \"{3}\"\n }\n});\n\nexport default BubbleChart;","import { ShapeElement } from '../../core';\nimport { deepExtend } from '../../common';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nvar Target = (function (ShapeElement) {\n\tfunction Target () {\n\t\tShapeElement.apply(this, arguments);\n\t}if ( ShapeElement ) Target.__proto__ = ShapeElement;\n\tTarget.prototype = Object.create( ShapeElement && ShapeElement.prototype );\n\tTarget.prototype.constructor = Target;\n\n\t\n\n\treturn Target;\n}(ShapeElement));\n\ndeepExtend(Target.prototype, PointEventsMixin);\n\nexport default Target;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport Target from './target';\n\nimport { Box, ChartElement } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport Bar from '../bar-chart/bar';\n\nimport { WHITE, TOP, RIGHT } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, setDefaultOptions, valueOrDefault } from '../../common';\n\nimport BarLabel from '../bar-chart/bar-label';\n\nvar Bullet = (function (ChartElement) {\n function Bullet(value, options) {\n ChartElement.call(this, options);\n\n this.aboveAxis = this.options.aboveAxis;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n if ( ChartElement ) Bullet.__proto__ = ChartElement;\n Bullet.prototype = Object.create( ChartElement && ChartElement.prototype );\n Bullet.prototype.constructor = Bullet;\n\n Bullet.prototype.render = function render () {\n var options = this.options;\n\n if (!this._rendered) {\n this._rendered = true;\n\n if (defined(this.value.target)) {\n this.target = new Target({\n type: options.target.shape,\n background: options.target.color || this.color,\n opacity: options.opacity,\n zIndex: options.zIndex,\n border: options.target.border,\n vAlign: TOP,\n align: RIGHT\n });\n\n this.target.value = this.value;\n this.target.dataItem = this.dataItem;\n this.target.series = this.series;\n\n this.append(this.target);\n }\n\n this.createLabel();\n this.createNote();\n }\n };\n\n Bullet.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText, labels, pointData);\n this.append(this.label);\n }\n };\n\n Bullet.prototype.reflow = function reflow (box) {\n this.render();\n\n var ref = this;\n var options = ref.options;\n var target = ref.target;\n var chart = ref.owner;\n var invertAxes = options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.options);\n var categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n var targetValueSlot = valueAxis.getSlot(this.value.target);\n var targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n var targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n if (target) {\n var targetSlot = new Box(\n targetSlotX.x1, targetSlotY.y1,\n targetSlotX.x2, targetSlotY.y2\n );\n target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n target.reflow(targetSlot);\n }\n\n var label = this.label;\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(box);\n }\n\n if (this.note) {\n this.note.reflow(box);\n }\n\n this.box = box;\n };\n\n Bullet.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var options = this.options;\n var body = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: options.border.color || this.color,\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n this.bodyVisual = body;\n\n alignPathToPixel(body);\n this.visual.append(body);\n };\n\n Bullet.prototype.createAnimation = function createAnimation () {\n if (this.bodyVisual) {\n this.animation = draw.Animation.create(\n this.bodyVisual, this.options.animation\n );\n }\n };\n\n Bullet.prototype.createHighlight = function createHighlight (style) {\n return draw.Path.fromRect(this.box.toRect(), style);\n };\n\n Bullet.prototype.highlightVisual = function highlightVisual () {\n return this.bodyVisual;\n };\n\n Bullet.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n rect: this.box.toRect(),\n visual: this.bodyVisual,\n options: this.options\n };\n };\n\n Bullet.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n Bullet.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series\n };\n };\n\n Bullet.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n return Bullet;\n}(ChartElement));\n\nBullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\n\nsetDefaultOptions(Bullet, {\n border: {\n width: 1\n },\n vertical: false,\n opacity: 1,\n target: {\n shape: \"\",\n border: {\n width: 0,\n color: \"green\"\n },\n line: {\n width: 2\n }\n },\n labels: {\n visible: false\n },\n tooltip: {\n format: \"Current: {0}<br />Target: {1}\"\n },\n notes: {\n label: {}\n }\n});\n\ndeepExtend(Bullet.prototype, PointEventsMixin);\ndeepExtend(Bullet.prototype, NoteMixin);\n\nexport default Bullet;","\nimport CategoricalChart from '../categorical-chart';\nimport BarChart from '../bar-chart/bar-chart';\nimport Bullet from './bullet';\nimport ClusterLayout from '../layout/cluster-layout';\nimport { BAR } from '../constants';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, defined, isArray, isFunction, isObject, setDefaultOptions } from '../../common';\n\nvar BulletChart = (function (CategoricalChart) {\n function BulletChart(plotArea, options) {\n\n wrapData(options);\n\n CategoricalChart.call(this, plotArea, options);\n }\n\n if ( CategoricalChart ) BulletChart.__proto__ = CategoricalChart;\n BulletChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n BulletChart.prototype.constructor = BulletChart;\n\n BulletChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n };\n\n BulletChart.prototype.plotRange = function plotRange (point) {\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n };\n\n BulletChart.prototype.createPoint = function createPoint (data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var value = data.valueFields;\n\n var bulletOptions = deepExtend({\n vertical: !options.invertAxes,\n overlay: series.overlay,\n categoryIx: categoryIx,\n invertAxes: options.invertAxes\n }, series);\n\n var color = data.fields.color || series.color;\n bulletOptions = this.evalPointOptions(bulletOptions, value, fields);\n if (isFunction(series.color)) {\n color = bulletOptions.color;\n }\n\n var bullet = new Bullet(value, bulletOptions);\n bullet.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n cluster.append(bullet);\n\n return bullet;\n };\n\n BulletChart.prototype.updateRange = function updateRange (value, fields) {\n var current = value.current;\n var target = value.target;\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, current, target);\n axisRange.max = Math.max(axisRange.max, current, target);\n }\n };\n\n BulletChart.prototype.formatPointValue = function formatPointValue (point, format) {\n return this.chartService.format.auto(format, point.value.current, point.value.target);\n };\n\n BulletChart.prototype.pointValue = function pointValue (data) {\n return data.valueFields.current;\n };\n\n BulletChart.prototype.aboveAxis = function aboveAxis (point) {\n var value = point.value.current;\n\n return value > 0;\n };\n\n BulletChart.prototype.createAnimation = function createAnimation () {\n var this$1 = this;\n\n var points = this.points;\n\n this._setAnimationOptions();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n point.options.animation = this$1.options.animation;\n point.createAnimation();\n }\n };\n\n return BulletChart;\n}(CategoricalChart));\n\nBulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\nsetDefaultOptions(BulletChart, {\n animation: {\n type: BAR\n }\n});\n\nfunction wrapData(options) {\n var series = options.series;\n\n for (var i = 0; i < series.length; i++) {\n var seriesItem = series[i];\n var data = seriesItem.data;\n if (data && !isArray(data[0]) && !isObject(data[0])) {\n seriesItem.data = [ data ];\n }\n }\n}\n\nexport default BulletChart;\n","import { Color } from '@progress/kendo-drawing';\n\nimport { Class, defined, deepExtend, setDefaultOptions, valueOrDefault, getSpacing, styleValue } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nvar BaseTooltip = (function (Class) {\n function BaseTooltip(chartService, options) {\n Class.call(this);\n\n this.chartService = chartService;\n this.options = deepExtend({}, this.options, options);\n }\n\n if ( Class ) BaseTooltip.__proto__ = Class;\n BaseTooltip.prototype = Object.create( Class && Class.prototype );\n BaseTooltip.prototype.constructor = BaseTooltip;\n\n BaseTooltip.prototype.getStyle = function getStyle (options, point) {\n var background = options.background;\n var border = options.border.color;\n\n if (point) {\n var pointColor = point.color || point.options.color;\n background = valueOrDefault(background, pointColor);\n border = valueOrDefault(border, pointColor);\n }\n\n var padding = getSpacing(options.padding || {}, \"auto\");\n\n return {\n backgroundColor: background,\n borderColor: border,\n font: options.font,\n color: options.color,\n opacity: options.opacity,\n borderWidth: styleValue(options.border.width),\n paddingTop: styleValue(padding.top),\n paddingBottom: styleValue(padding.bottom),\n paddingLeft: styleValue(padding.left),\n paddingRight: styleValue(padding.right)\n };\n };\n\n BaseTooltip.prototype.show = function show (options, tooltipOptions, point) {\n options.format = tooltipOptions.format;\n\n var style = this.getStyle(tooltipOptions, point);\n options.style = style;\n\n var background = new Color(style.backgroundColor);\n if (!defined(tooltipOptions.color) && !background.isDark()) {\n options.className = \"k-chart-tooltip-inverse\";\n }\n\n this.chartService.notify(SHOW_TOOLTIP, options);\n\n this.visible = true;\n };\n\n BaseTooltip.prototype.hide = function hide () {\n if (this.chartService) {\n this.chartService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n };\n\n BaseTooltip.prototype.destroy = function destroy () {\n delete this.chartService;\n };\n\n return BaseTooltip;\n}(Class));\n\nsetDefaultOptions(BaseTooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n\nexport default BaseTooltip;\n","import BaseTooltip from '../tooltip/base-tooltip';\n\nimport { HIDE_TOOLTIP } from '../constants';\nimport { TOP, BOTTOM, LEFT, RIGHT, CENTER, DATE } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nvar CrosshairTooltip = (function (BaseTooltip) {\n function CrosshairTooltip(chartService, crosshair, options) {\n BaseTooltip.call(this, chartService, options);\n\n this.crosshair = crosshair;\n this.formatService = chartService.format;\n this.initAxisName();\n }\n\n if ( BaseTooltip ) CrosshairTooltip.__proto__ = BaseTooltip;\n CrosshairTooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n CrosshairTooltip.prototype.constructor = CrosshairTooltip;\n\n CrosshairTooltip.prototype.initAxisName = function initAxisName () {\n var axis = this.crosshair.axis;\n var plotArea = axis.plotArea;\n var name;\n if (plotArea.categoryAxis) {\n name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n } else {\n name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n }\n this.axisName = name;\n };\n\n CrosshairTooltip.prototype.showAt = function showAt (point) {\n var ref = this;\n var axis = ref.crosshair.axis;\n var options = ref.options;\n var value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n var formattedValue = value;\n\n if (options.format) {\n formattedValue = this.formatService.auto(options.format, value);\n } else if (axis.options.type === DATE) {\n formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n }\n\n this.show({\n point: point,\n anchor: this.getAnchor(),\n crosshair: this.crosshair,\n value: formattedValue,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n }, this.options);\n };\n\n CrosshairTooltip.prototype.hide = function hide () {\n this.chartService.notify(HIDE_TOOLTIP, {\n crosshair: this.crosshair,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n });\n };\n\n CrosshairTooltip.prototype.getAnchor = function getAnchor () {\n var ref = this;\n var crosshair = ref.crosshair;\n var ref_options = ref.options;\n var position = ref_options.position;\n var padding = ref_options.padding;\n var vertical = !crosshair.axis.options.vertical;\n var lineBox = crosshair.line.bbox();\n var horizontalAlign, verticalAlign, point;\n\n if (vertical) {\n horizontalAlign = CENTER;\n if (position === BOTTOM) {\n verticalAlign = TOP;\n point = lineBox.bottomLeft().translate(0, padding);\n } else {\n verticalAlign = BOTTOM;\n point = lineBox.topLeft().translate(0, -padding);\n }\n } else {\n verticalAlign = CENTER;\n if (position === LEFT) {\n horizontalAlign = RIGHT;\n point = lineBox.topLeft().translate(-padding, 0);\n } else {\n horizontalAlign = LEFT;\n point = lineBox.topRight().translate(padding, 0);\n }\n }\n\n return {\n point: point,\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n };\n\n return CrosshairTooltip;\n}(BaseTooltip));\n\nsetDefaultOptions(CrosshairTooltip, {\n padding: 10\n});\n\nexport default CrosshairTooltip;\n\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, CategoryAxis } from '../../core';\nimport CrosshairTooltip from './crosshair-tooltip';\n\nimport { BLACK, X, Y } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar Crosshair = (function (ChartElement) {\n function Crosshair(chartService, axis, options) {\n ChartElement.call(this, options);\n\n this.axis = axis;\n this.stickyMode = axis instanceof CategoryAxis;\n\n var tooltipOptions = this.options.tooltip;\n\n if (tooltipOptions.visible) {\n this.tooltip = new CrosshairTooltip(chartService, this,\n deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n );\n }\n }\n\n if ( ChartElement ) Crosshair.__proto__ = ChartElement;\n Crosshair.prototype = Object.create( ChartElement && ChartElement.prototype );\n Crosshair.prototype.constructor = Crosshair;\n\n Crosshair.prototype.showAt = function showAt (point) {\n this.point = point;\n this.moveLine();\n this.line.visible(true);\n\n if (this.tooltip) {\n this.tooltip.showAt(point);\n }\n };\n\n Crosshair.prototype.hide = function hide () {\n this.line.visible(false);\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n };\n\n Crosshair.prototype.moveLine = function moveLine () {\n var ref = this;\n var axis = ref.axis;\n var point = ref.point;\n var vertical = axis.options.vertical;\n var box = this.getBox();\n var dim = vertical ? Y : X;\n var lineStart = new geom.Point(box.x1, box.y1);\n var lineEnd;\n\n if (vertical) {\n lineEnd = new geom.Point(box.x2, box.y1);\n } else {\n lineEnd = new geom.Point(box.x1, box.y2);\n }\n\n if (point) {\n if (this.stickyMode) {\n var slot = axis.getSlot(axis.pointCategoryIndex(point));\n lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n } else {\n lineStart[dim] = lineEnd[dim] = point[dim];\n }\n }\n\n this.box = box;\n\n this.line.moveTo(lineStart).lineTo(lineEnd);\n };\n\n Crosshair.prototype.getBox = function getBox () {\n var axis = this.axis;\n var axes = axis.pane.axes;\n var length = axes.length;\n var vertical = axis.options.vertical;\n var box = axis.lineBox().clone();\n var dim = vertical ? X : Y;\n var axisLineBox;\n\n for (var i = 0; i < length; i++) {\n var currentAxis = axes[i];\n if (currentAxis.options.vertical !== vertical) {\n if (!axisLineBox) {\n axisLineBox = currentAxis.lineBox().clone();\n } else {\n axisLineBox.wrap(currentAxis.lineBox());\n }\n }\n }\n\n box[dim + 1] = axisLineBox[dim + 1];\n box[dim + 2] = axisLineBox[dim + 2];\n\n return box;\n };\n\n Crosshair.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var options = this.options;\n this.line = new draw.Path({\n stroke: {\n color: options.color,\n width: options.width,\n opacity: options.opacity,\n dashType: options.dashType\n },\n visible: false\n });\n\n this.moveLine();\n this.visual.append(this.line);\n };\n\n Crosshair.prototype.destroy = function destroy () {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n ChartElement.prototype.destroy.call(this);\n };\n\n return Crosshair;\n}(ChartElement));\n\nsetDefaultOptions(Crosshair, {\n color: BLACK,\n width: 2,\n zIndex: -1,\n tooltip: {\n visible: false\n }\n});\n\nexport default Crosshair;","import { drawing as draw } from '@progress/kendo-drawing';\nimport { alignPathToPixel } from '../common';\n\nimport { ChartElement } from '../core';\n\nvar ChartContainer = (function (ChartElement) {\n function ChartContainer(options, pane) {\n ChartElement.call(this, options);\n this.pane = pane;\n }\n\n if ( ChartElement ) ChartContainer.__proto__ = ChartElement;\n ChartContainer.prototype = Object.create( ChartElement && ChartElement.prototype );\n ChartContainer.prototype.constructor = ChartContainer;\n\n ChartContainer.prototype.shouldClip = function shouldClip () {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n if (children[i].options.clip === true) {\n return true;\n }\n }\n return false;\n };\n\n ChartContainer.prototype._clipBox = function _clipBox () {\n return this.pane.chartsBox();\n };\n\n ChartContainer.prototype.createVisual = function createVisual () {\n this.visual = new draw.Group({\n zIndex: 0\n });\n\n if (this.shouldClip()) {\n var clipBox = this.clipBox = this._clipBox();\n var clipRect = clipBox.toRect();\n var clipPath = draw.Path.fromRect(clipRect);\n alignPathToPixel(clipPath);\n\n this.visual.clip(clipPath);\n this.unclipLabels();\n }\n };\n\n ChartContainer.prototype.stackRoot = function stackRoot () {\n return this;\n };\n\n ChartContainer.prototype.unclipLabels = function unclipLabels () {\n var ref = this;\n var charts = ref.children;\n var clipBox = ref.clipBox;\n\n for (var i = 0; i < charts.length; i++) {\n var points = charts[i].points || {};\n var length = points.length;\n\n for (var j = 0; j < length; j++) {\n var point = points[j];\n if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n if (point.unclipElements) {\n point.unclipElements();\n } else {\n var label = point.label;\n var note = point.note;\n\n if (label && label.options.visible) {\n if (label.alignToClipBox) {\n label.alignToClipBox(clipBox);\n }\n label.options.noclip = true;\n }\n\n if (note && note.options.visible) {\n note.options.noclip = true;\n }\n }\n }\n }\n }\n };\n\n ChartContainer.prototype.destroy = function destroy () {\n ChartElement.prototype.destroy.call(this);\n\n delete this.parent;\n };\n\n return ChartContainer;\n}(ChartElement));\n\nChartContainer.prototype.isStackRoot = true;\n\nexport default ChartContainer;","import { ChartElement, BoxElement, Title, Box } from '../core';\nimport { ChartPane } from './api-elements';\nimport ChartContainer from './chart-container';\n\nimport { PANE_RENDER } from './constants';\nimport { TOP, LEFT, X, Y } from '../common/constants';\nimport { append, deepExtend, isObject, last, setDefaultOptions } from '../common';\n\nvar Pane = (function (BoxElement) {\n function Pane(options) {\n BoxElement.call(this, options);\n\n this.id = paneID();\n\n this.createTitle();\n\n this.content = new ChartElement();\n\n this.chartContainer = new ChartContainer({}, this);\n this.append(this.content);\n\n this.axes = [];\n this.charts = [];\n }\n\n if ( BoxElement ) Pane.__proto__ = BoxElement;\n Pane.prototype = Object.create( BoxElement && BoxElement.prototype );\n Pane.prototype.constructor = Pane;\n\n Pane.prototype.createTitle = function createTitle () {\n var titleOptions = this.options.title;\n if (isObject(titleOptions)) {\n titleOptions = deepExtend({}, titleOptions, {\n align: titleOptions.position,\n position: TOP\n });\n }\n\n this.title = Title.buildTitle(titleOptions, Pane.prototype.options.title);\n if (this.title) {\n this.append(this.title);\n }\n };\n\n Pane.prototype.appendAxis = function appendAxis (axis) {\n this.content.append(axis);\n this.axes.push(axis);\n axis.pane = this;\n };\n\n Pane.prototype.appendAxisAt = function appendAxisAt (axis, pos) {\n this.content.append(axis);\n this.axes.splice(pos, 0, axis);\n axis.pane = this;\n };\n\n Pane.prototype.appendChart = function appendChart (chart) {\n if (this.chartContainer.parent !== this.content) {\n this.content.append(this.chartContainer);\n }\n\n this.charts.push(chart);\n this.chartContainer.append(chart);\n chart.pane = this;\n };\n\n Pane.prototype.empty = function empty () {\n var this$1 = this;\n\n var plotArea = this.parent;\n\n if (plotArea) {\n for (var i = 0; i < this.axes.length; i++) {\n plotArea.removeAxis(this$1.axes[i]);\n }\n\n for (var i$1 = 0; i$1 < this.charts.length; i$1++) {\n plotArea.removeChart(this$1.charts[i$1]);\n }\n }\n\n this.axes = [];\n this.charts = [];\n\n this.content.destroy();\n this.content.children = [];\n this.chartContainer.children = [];\n };\n\n Pane.prototype.reflow = function reflow (targetBox) {\n // Content (such as charts) is rendered, but excluded from reflows\n var content;\n if (last(this.children) === this.content) {\n content = this.children.pop();\n }\n\n BoxElement.prototype.reflow.call(this, targetBox);\n\n if (content) {\n this.children.push(content);\n }\n\n if (this.title) {\n this.contentBox.y1 += this.title.box.height();\n }\n };\n\n Pane.prototype.visualStyle = function visualStyle () {\n var style = BoxElement.prototype.visualStyle.call(this);\n style.zIndex = -10;\n\n return style;\n };\n\n Pane.prototype.renderComplete = function renderComplete () {\n if (this.options.visible) {\n this.createGridLines();\n }\n };\n\n Pane.prototype.stackRoot = function stackRoot () {\n return this;\n };\n\n Pane.prototype.clipRoot = function clipRoot () {\n return this;\n };\n\n Pane.prototype.createGridLines = function createGridLines () {\n var axes = this.axes;\n var allAxes = axes.concat(this.parent.axes);\n var vGridLines = [];\n var hGridLines = [];\n\n // TODO\n // Is full combination really necessary?\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var vertical = axis.options.vertical;\n var gridLines = vertical ? vGridLines : hGridLines;\n for (var j = 0; j < allAxes.length; j++) {\n if (gridLines.length === 0) {\n var altAxis = allAxes[j];\n if (vertical !== altAxis.options.vertical) {\n append(gridLines, axis.createGridLines(altAxis));\n }\n }\n }\n }\n };\n\n Pane.prototype.refresh = function refresh () {\n this.visual.clear();\n\n this.content.parent = null;\n this.content.createGradient = this.createGradient.bind(this);\n this.content.renderVisual();\n this.content.parent = this;\n\n if (this.title) {\n this.visual.append(this.title.visual);\n }\n\n this.visual.append(this.content.visual);\n\n this.renderComplete();\n this.notifyRender();\n };\n\n Pane.prototype.chartsBox = function chartsBox () {\n var axes = this.axes;\n var length = axes.length;\n var chartsBox = new Box();\n\n for (var idx = 0; idx < length; idx++) {\n var axis = axes[idx];\n var axisValueField = axis.options.vertical ? Y : X;\n var lineBox = axis.lineBox();\n chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n }\n\n if (chartsBox.x2 === 0) {\n var allAxes = this.parent.axes;\n var length$1 = allAxes.length;\n\n for (var idx$1 = 0; idx$1 < length$1; idx$1++) {\n var axis$1 = allAxes[idx$1];\n if (!axis$1.options.vertical) {\n var lineBox$1 = axis$1.lineBox();\n chartsBox.x1 = lineBox$1.x1;\n chartsBox.x2 = lineBox$1.x2;\n }\n }\n }\n return chartsBox;\n };\n\n Pane.prototype.clipBox = function clipBox () {\n return this.chartContainer.clipBox;\n };\n\n Pane.prototype.notifyRender = function notifyRender () {\n var service = this.getService();\n if (service) {\n service.notify(PANE_RENDER, {\n pane: new ChartPane(this),\n index: this.paneIndex,\n name: this.options.name\n });\n }\n };\n\n return Pane;\n}(BoxElement));\n\nvar ID = 1;\n\nfunction paneID() {\n return \"pane\" + ID++;\n}\n\nPane.prototype.isStackRoot = true;\n\nsetDefaultOptions(Pane, {\n zIndex: -1,\n shrinkToFit: true,\n title: {\n align: LEFT\n },\n visible: true\n});\n\nexport default Pane;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box } from '../../core';\nimport Crosshair from '../crosshair/crosshair';\nimport Pane from '../pane';\nimport { hasValue } from '../utils';\nimport SeriesBinder from '../series-binder';\n\nimport { WHITE, BLACK, X, Y, COORD_PRECISION, TOP, BOTTOM, LEFT, RIGHT, START, END, INHERIT } from '../../common/constants';\nimport { append, deepExtend, defined, getSpacing, getTemplate, inArray, isFunction, isString, limitValue, round, setDefaultOptions, last } from '../../common';\nimport { TRENDLINE_SERIES } from '../constants';\n\nvar PlotAreaBase = (function (ChartElement) {\n function PlotAreaBase(series, options, chartService) {\n ChartElement.call(this, options);\n\n this.initFields(series, options);\n this.series = series;\n this.initSeries();\n this.charts = [];\n this.options.legend = this.options.legend || {};\n this.options.legend.items = [];\n this.axes = [];\n this.crosshairs = [];\n this.chartService = chartService;\n this.originalOptions = options;\n this.originalSeries = series;\n this._bindCache = new WeakMap();\n\n this.createPanes();\n this.render();\n this.createCrosshairs();\n }\n\n if ( ChartElement ) PlotAreaBase.__proto__ = ChartElement;\n PlotAreaBase.prototype = Object.create( ChartElement && ChartElement.prototype );\n PlotAreaBase.prototype.constructor = PlotAreaBase;\n\n PlotAreaBase.prototype.initFields = function initFields () { };\n\n PlotAreaBase.prototype.initSeries = function initSeries () {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n series[i].index = i;\n }\n };\n\n PlotAreaBase.prototype.bindPoint = function bindPoint (series, pointIx, item) {\n var cached = this._bindCache.get(series);\n if (!cached) {\n cached = [];\n this._bindCache.set(series, cached);\n }\n\n var data = cached[pointIx];\n if (!data) {\n data = cached[pointIx] = SeriesBinder.current.bindPoint(series, pointIx, item);\n }\n\n return data;\n };\n\n PlotAreaBase.prototype.createPanes = function createPanes () {\n var this$1 = this;\n\n var titleOptions = this.options.title || {};\n var paneDefaults = this.options.paneDefaults;\n var paneOptions = this.options.panes || [];\n var panesLength = Math.max(paneOptions.length, 1);\n var panes = [];\n\n var defaults = deepExtend({\n title: {\n color: titleOptions.color\n }\n }, paneDefaults);\n\n for (var i = 0; i < panesLength; i++) {\n var options = deepExtend({}, defaults, paneOptions[i]);\n if (isString(options.title)) {\n options.title = deepExtend({ text: options.title }, defaults.title);\n }\n\n var currentPane = new Pane(options);\n currentPane.paneIndex = i;\n\n panes.push(currentPane);\n this$1.append(currentPane);\n }\n\n this.panes = panes;\n };\n\n PlotAreaBase.prototype.crosshairOptions = function crosshairOptions (axis) {\n return axis.options.crosshair;\n };\n\n PlotAreaBase.prototype.createCrosshairs = function createCrosshairs (panes) {\n var this$1 = this;\n if ( panes === void 0 ) panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n for (var j = 0; j < pane.axes.length; j++) {\n var axis = pane.axes[j];\n var options = this$1.crosshairOptions(axis);\n if (options && options.visible) {\n var currentCrosshair = new Crosshair(this$1.chartService, axis, options);\n\n this$1.crosshairs.push(currentCrosshair);\n pane.content.append(currentCrosshair);\n }\n }\n }\n };\n\n PlotAreaBase.prototype.removeCrosshairs = function removeCrosshairs (pane) {\n var crosshairs = this.crosshairs;\n var axes = pane.axes;\n\n for (var i = crosshairs.length - 1; i >= 0; i--) {\n for (var j = 0; j < axes.length; j++) {\n if (crosshairs[i].axis === axes[j]) {\n crosshairs.splice(i, 1);\n break;\n }\n }\n }\n };\n\n PlotAreaBase.prototype.hideCrosshairs = function hideCrosshairs () {\n var crosshairs = this.crosshairs;\n for (var idx = 0; idx < crosshairs.length; idx++) {\n crosshairs[idx].hide();\n }\n };\n\n PlotAreaBase.prototype.findPane = function findPane (name) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].options.name === name) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane || panes[0];\n };\n\n PlotAreaBase.prototype.findPointPane = function findPointPane (point) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].box.containsPoint(point)) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane;\n };\n\n PlotAreaBase.prototype.appendAxis = function appendAxis (axis) {\n var pane = this.findPane(axis.options.pane);\n\n pane.appendAxis(axis);\n this.axes.push(axis);\n axis.plotArea = this;\n };\n\n PlotAreaBase.prototype.removeAxis = function removeAxis (axisToRemove) {\n var this$1 = this;\n\n var filteredAxes = [];\n\n for (var i = 0; i < this.axes.length; i++) {\n var axis = this$1.axes[i];\n if (axisToRemove !== axis) {\n filteredAxes.push(axis);\n } else {\n axis.destroy();\n }\n }\n\n this.axes = filteredAxes;\n };\n\n PlotAreaBase.prototype.appendChart = function appendChart (chart, pane) {\n this.charts.push(chart);\n if (pane) {\n pane.appendChart(chart);\n } else {\n this.append(chart);\n }\n };\n\n PlotAreaBase.prototype.removeChart = function removeChart (chartToRemove) {\n var this$1 = this;\n\n var filteredCharts = [];\n\n for (var i = 0; i < this.charts.length; i++) {\n var chart = this$1.charts[i];\n if (chart !== chartToRemove) {\n filteredCharts.push(chart);\n } else {\n chart.destroy();\n }\n }\n\n this.charts = filteredCharts;\n };\n\n PlotAreaBase.prototype.addToLegend = function addToLegend (series) {\n var count = series.length;\n var legend = this.options.legend;\n var labels = legend.labels || {};\n var inactiveItems = legend.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n var data = [];\n\n for (var i = 0; i < count; i++) {\n var currentSeries = series[i];\n var seriesVisible = currentSeries.visible !== false;\n if (currentSeries.visibleInLegend === false) {\n continue;\n }\n\n var text = currentSeries.name;\n var labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n if (labelTemplate) {\n text = labelTemplate({\n text: hasValue(text) ? text : \"\",\n series: currentSeries\n });\n }\n\n var defaults = currentSeries._defaults;\n var color = currentSeries.color;\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var itemLabelOptions = (void 0), markerColor = (void 0);\n if (seriesVisible) {\n itemLabelOptions = {};\n markerColor = color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = inactiveItems.markers.color;\n }\n\n if (hasValue(text) && text !== \"\") {\n data.push({\n text: text,\n labels: itemLabelOptions,\n markerColor: markerColor,\n series: currentSeries,\n active: seriesVisible\n });\n }\n }\n\n append(legend.items, data);\n };\n\n PlotAreaBase.prototype.groupAxes = function groupAxes (panes) {\n var xAxes = [];\n var yAxes = [];\n\n for (var paneIx = 0; paneIx < panes.length; paneIx++) {\n var paneAxes = panes[paneIx].axes;\n for (var axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n var axis = paneAxes[axisIx];\n if (axis.options.vertical) {\n yAxes.push(axis);\n } else {\n xAxes.push(axis);\n }\n }\n }\n\n return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n };\n\n PlotAreaBase.prototype.groupSeriesByPane = function groupSeriesByPane () {\n var this$1 = this;\n\n var series = this.series;\n var seriesByPane = {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var pane = this$1.seriesPaneName(currentSeries);\n\n if (seriesByPane[pane]) {\n seriesByPane[pane].push(currentSeries);\n } else {\n seriesByPane[pane] = [ currentSeries ];\n }\n }\n\n return seriesByPane;\n };\n\n PlotAreaBase.prototype.filterVisibleSeries = function filterVisibleSeries (series) {\n var result = [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (currentSeries.visible !== false) {\n result.push(currentSeries);\n }\n }\n\n return result;\n };\n\n PlotAreaBase.prototype.reflow = function reflow (targetBox) {\n var options = this.options.plotArea;\n var panes = this.panes;\n var margin = getSpacing(options.margin);\n\n this.box = targetBox.clone().unpad(margin);\n this.reflowPanes();\n\n this.detachLabels();\n this.reflowAxes(panes);\n this.reflowCharts(panes);\n };\n\n PlotAreaBase.prototype.redraw = function redraw (panes) {\n var this$1 = this;\n\n var panesArray = [].concat(panes);\n this.initSeries();\n\n //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n var root = this.getRoot();\n if (root) {\n root.cleanGradients();\n }\n\n for (var i = 0; i < panesArray.length; i++) {\n this$1.removeCrosshairs(panesArray[i]);\n panesArray[i].empty();\n }\n\n this._bindCache = new WeakMap();\n\n this.render(panesArray);\n this.detachLabels();\n this.reflowAxes(this.panes);\n this.reflowCharts(panesArray);\n\n this.createCrosshairs(panesArray);\n\n for (var i$1 = 0; i$1 < panesArray.length; i$1++) {\n panesArray[i$1].refresh();\n }\n };\n\n PlotAreaBase.prototype.axisCrossingValues = function axisCrossingValues (axis, crossingAxes) {\n var options = axis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n var valuesToAdd = crossingAxes.length - crossingValues.length;\n var defaultValue = crossingValues[0] || 0;\n\n for (var i = 0; i < valuesToAdd; i++) {\n crossingValues.push(defaultValue);\n }\n\n return crossingValues;\n };\n\n PlotAreaBase.prototype.alignAxisTo = function alignAxisTo (axis, targetAxis, crossingValue, targetCrossingValue) {\n var slot = axis.getSlot(crossingValue, crossingValue, true);\n var slotEdge = axis.options.reverse ? 2 : 1;\n var targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n var targetEdge = targetAxis.options.reverse ? 2 : 1;\n var axisBox = axis.box.translate(\n targetSlot[X + targetEdge] - slot[X + slotEdge],\n targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n );\n\n if (axis.pane !== targetAxis.pane) {\n axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n }\n\n axis.reflow(axisBox);\n };\n\n PlotAreaBase.prototype.alignAxes = function alignAxes (xAxes, yAxes) {\n var this$1 = this;\n\n var xAnchor = xAxes[0];\n var yAnchor = yAxes[0];\n var xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n var yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n var leftAnchors = {};\n var rightAnchors = {};\n var topAnchors = {};\n var bottomAnchors = {};\n\n for (var i = 0; i < yAxes.length; i++) {\n var axis = yAxes[i];\n var pane = axis.pane;\n var paneId = pane.id;\n var visible = axis.options.visible !== false;\n\n // Locate pane anchor, if any, and use its axisCrossingValues\n var anchor = paneAnchor(xAxes, pane) || xAnchor;\n var anchorCrossings = xAnchorCrossings;\n\n if (anchor !== xAnchor) {\n anchorCrossings = this$1.axisCrossingValues(anchor, yAxes);\n }\n\n this$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n // Push the axis to the left the previous y-axis so they don't overlap\n if (leftAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(leftAnchors[paneId].box, LEFT)\n .translate(-axis.options.margin, 0)\n );\n }\n\n if (visible) {\n leftAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n // Flip the labels on the right if we're at the right end of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n\n this$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis to the right the previous y-axis so they don't overlap\n if (rightAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(rightAnchors[paneId].box, RIGHT)\n .translate(axis.options.margin, 0)\n );\n }\n\n if (visible) {\n rightAnchors[paneId] = axis;\n }\n }\n\n if (i !== 0 && yAnchor.pane === axis.pane) {\n axis.alignTo(yAnchor);\n axis.reflow(axis.box);\n }\n }\n\n for (var i$1 = 0; i$1 < xAxes.length; i$1++) {\n var axis$1 = xAxes[i$1];\n var pane$1 = axis$1.pane;\n var paneId$1 = pane$1.id;\n var visible$1 = axis$1.options.visible !== false;\n\n // Locate pane anchor and use its axisCrossingValues\n var anchor$1 = paneAnchor(yAxes, pane$1) || yAnchor;\n var anchorCrossings$1 = yAnchorCrossings;\n if (anchor$1 !== yAnchor) {\n anchorCrossings$1 = this$1.axisCrossingValues(anchor$1, xAxes);\n }\n\n this$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n if (axis$1.options._overlap) {\n continue;\n }\n\n if (round(axis$1.lineBox().y1) === round(anchor$1.lineBox().y1)) {\n // Flip the labels on top if we're at the top of the pane\n if (!axis$1._mirrored) {\n axis$1.options.labels.mirror = !axis$1.options.labels.mirror;\n axis$1._mirrored = true;\n }\n this$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n // Push the axis above the previous x-axis so they don't overlap\n if (topAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(topAnchors[paneId$1].box, TOP)\n .translate(0, -axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n topAnchors[paneId$1] = axis$1;\n }\n }\n\n if (round(axis$1.lineBox().y2, COORD_PRECISION) === round(anchor$1.lineBox().y2, COORD_PRECISION)) {\n // Push the axis below the previous x-axis so they don't overlap\n if (bottomAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(bottomAnchors[paneId$1].box, BOTTOM)\n .translate(0, axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n bottomAnchors[paneId$1] = axis$1;\n }\n }\n\n if (i$1 !== 0) {\n axis$1.alignTo(xAnchor);\n axis$1.reflow(axis$1.box);\n }\n }\n };\n\n PlotAreaBase.prototype.shrinkAxisWidth = function shrinkAxisWidth (panes) {\n var axes = this.groupAxes(panes).any;\n var axisBox = axisGroupBox(axes);\n var overflowX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n\n if (currentPane.axes.length > 0) {\n overflowX = Math.max(\n overflowX,\n axisBox.width() - currentPane.contentBox.width()\n );\n }\n }\n\n if (overflowX !== 0) {\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis = axes[i$1];\n\n if (!currentAxis.options.vertical) {\n currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n }\n }\n }\n };\n\n PlotAreaBase.prototype.shrinkAxisHeight = function shrinkAxisHeight (panes) {\n var shrinked;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var axes = currentPane.axes;\n var overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n if (overflowY !== 0) {\n for (var j = 0; j < axes.length; j++) {\n var currentAxis = axes[j];\n\n if (currentAxis.options.vertical) {\n currentAxis.reflow(\n currentAxis.box.shrink(0, overflowY)\n );\n }\n }\n shrinked = true;\n }\n }\n\n return shrinked;\n };\n\n PlotAreaBase.prototype.fitAxes = function fitAxes (panes) {\n var axes = this.groupAxes(panes).any;\n var offsetX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var paneAxes = currentPane.axes;\n var paneBox = currentPane.contentBox;\n\n if (paneAxes.length > 0) {\n var axisBox = axisGroupBox(paneAxes);\n // OffsetY is calculated and applied per pane\n var offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n // OffsetX is calculated and applied globally\n offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n\n for (var j = 0; j < paneAxes.length; j++) {\n var currentAxis = paneAxes[j];\n\n currentAxis.reflow(\n currentAxis.box.translate(0, offsetY)\n );\n }\n }\n }\n\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis$1 = axes[i$1];\n\n currentAxis$1.reflow(\n currentAxis$1.box.translate(offsetX, 0)\n );\n }\n };\n\n PlotAreaBase.prototype.reflowAxes = function reflowAxes (panes) {\n var this$1 = this;\n\n var axes = this.groupAxes(panes);\n\n for (var i = 0; i < panes.length; i++) {\n this$1.reflowPaneAxes(panes[i]);\n }\n\n if (axes.x.length > 0 && axes.y.length > 0) {\n this.alignAxes(axes.x, axes.y);\n this.shrinkAxisWidth(panes);\n\n this.autoRotateAxisLabels(axes);\n\n this.alignAxes(axes.x, axes.y);\n if (this.shrinkAxisWidth(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.shrinkAxisHeight(panes);\n this.alignAxes(axes.x, axes.y);\n\n if (this.shrinkAxisHeight(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.fitAxes(panes);\n }\n };\n\n PlotAreaBase.prototype.autoRotateAxisLabels = function autoRotateAxisLabels (groupedAxes) {\n var this$1 = this;\n\n var ref = this;\n var panes = ref.panes;\n var axes = allPaneAxes(panes);\n var rotated;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n if (axis.autoRotateLabels()) {\n rotated = true;\n }\n }\n\n if (rotated) {\n for (var idx$1 = 0; idx$1 < panes.length; idx$1++) {\n this$1.reflowPaneAxes(panes[idx$1]);\n }\n\n if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n this.alignAxes(groupedAxes.x, groupedAxes.y);\n this.shrinkAxisWidth(panes);\n }\n }\n };\n\n PlotAreaBase.prototype.reflowPaneAxes = function reflowPaneAxes (pane) {\n var axes = pane.axes;\n var length = axes.length;\n\n if (length > 0) {\n for (var i = 0; i < length; i++) {\n axes[i].reflow(pane.contentBox);\n }\n }\n };\n\n PlotAreaBase.prototype.reflowCharts = function reflowCharts (panes) {\n var charts = this.charts;\n var count = charts.length;\n var box = this.box;\n\n for (var i = 0; i < count; i++) {\n var chartPane = charts[i].pane;\n if (!chartPane || inArray(chartPane, panes)) {\n charts[i].reflow(box);\n }\n }\n };\n\n PlotAreaBase.prototype.reflowPanes = function reflowPanes () {\n var ref = this;\n var box = ref.box;\n var panes = ref.panes;\n var panesLength = panes.length;\n var remainingHeight = box.height();\n var remainingPanes = panesLength;\n var autoHeightPanes = 0;\n var top = box.y1;\n\n for (var i = 0; i < panesLength; i++) {\n var currentPane = panes[i];\n var height = currentPane.options.height;\n\n currentPane.options.width = box.width();\n\n if (!currentPane.options.height) {\n autoHeightPanes++;\n } else {\n if (height.indexOf && height.indexOf(\"%\")) {\n var percents = parseInt(height, 10) / 100;\n currentPane.options.height = percents * box.height();\n }\n\n currentPane.reflow(box.clone());\n\n remainingHeight -= currentPane.options.height;\n }\n }\n\n for (var i$1 = 0; i$1 < panesLength; i$1++) {\n var currentPane$1 = panes[i$1];\n\n if (!currentPane$1.options.height) {\n currentPane$1.options.height = remainingHeight / autoHeightPanes;\n }\n }\n\n for (var i$2 = 0; i$2 < panesLength; i$2++) {\n var currentPane$2 = panes[i$2];\n var paneBox = box\n .clone()\n .move(box.x1, top);\n\n currentPane$2.reflow(paneBox);\n\n remainingPanes--;\n top += currentPane$2.options.height;\n }\n };\n\n PlotAreaBase.prototype.backgroundBox = function backgroundBox () {\n var axes = this.axes;\n var axesCount = axes.length;\n var box;\n\n for (var i = 0; i < axesCount; i++) {\n var axisA = axes[i];\n\n for (var j = 0; j < axesCount; j++) {\n var axisB = axes[j];\n\n if (axisA.options.vertical !== axisB.options.vertical) {\n var lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n if (!box) {\n box = lineBox;\n } else {\n box = box.wrap(lineBox);\n }\n }\n }\n }\n\n return box || this.box;\n };\n\n PlotAreaBase.prototype.chartsBoxes = function chartsBoxes () {\n var panes = this.panes;\n var boxes = [];\n\n for (var idx = 0; idx < panes.length; idx++) {\n boxes.push(panes[idx].chartsBox());\n }\n\n return boxes;\n };\n\n PlotAreaBase.prototype.addBackgroundPaths = function addBackgroundPaths (multipath) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n multipath.paths.push(draw.Path.fromRect(boxes[idx].toRect()));\n }\n };\n\n PlotAreaBase.prototype.backgroundContainsPoint = function backgroundContainsPoint (point) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n if (boxes[idx].containsPoint(point)) {\n return true;\n }\n }\n };\n\n PlotAreaBase.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var options = this.options.plotArea;\n var opacity = options.opacity;\n var background = options.background;\n var border = options.border; if ( border === void 0 ) border = {};\n if (isTransparent(background)) {\n background = WHITE;\n opacity = 0;\n }\n\n var bg = this._bgVisual = new draw.MultiPath({\n fill: {\n color: background,\n opacity: opacity\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n zIndex: -1\n });\n\n this.addBackgroundPaths(bg);\n\n this.appendVisual(bg);\n };\n\n PlotAreaBase.prototype.pointsByCategoryIndex = function pointsByCategoryIndex (categoryIndex) {\n var charts = this.charts;\n var result = [];\n\n if (categoryIndex !== null) {\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n if (chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n var points = charts[i].categoryPoints[categoryIndex];\n if (points && points.length) {\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && defined(point.value) && point.value !== null) {\n result.push(point);\n }\n }\n }\n }\n }\n\n return result;\n };\n\n PlotAreaBase.prototype.pointsBySeriesIndex = function pointsBySeriesIndex (seriesIndex) {\n return this.filterPoints(function(point) {\n return point.series.index === seriesIndex;\n });\n };\n\n PlotAreaBase.prototype.pointsBySeriesName = function pointsBySeriesName (name) {\n return this.filterPoints(function(point) {\n return point.series.name === name;\n });\n };\n\n PlotAreaBase.prototype.filterPoints = function filterPoints (callback) {\n var charts = this.charts;\n var result = [];\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n result.push(point);\n }\n }\n }\n\n return result;\n };\n\n PlotAreaBase.prototype.findPoint = function findPoint (callback) {\n var charts = this.charts;\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n return point;\n }\n }\n }\n };\n\n PlotAreaBase.prototype.paneByPoint = function paneByPoint (point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n if (pane.box.containsPoint(point)) {\n return pane;\n }\n }\n };\n\n PlotAreaBase.prototype.detachLabels = function detachLabels () {\n var axes = this.groupAxes(this.panes);\n var xAxes = axes.x;\n var yAxes = axes.y;\n\n this.detachAxisGroupLabels(yAxes, xAxes);\n this.detachAxisGroupLabels(xAxes, yAxes);\n };\n\n PlotAreaBase.prototype.detachAxisGroupLabels = function detachAxisGroupLabels (axes, crossingAxes) {\n var this$1 = this;\n\n var labelAxisCount = 0;\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var pane = axis.pane;\n var anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n var axisIndex = i + labelAxisCount;\n var labelAxis = this$1.createLabelAxis(axis, axisIndex, anchor);\n\n if (labelAxis) {\n labelAxisCount++;\n\n var pos = pane.axes.indexOf(axis) + labelAxisCount;\n pane.appendAxisAt(labelAxis, pos);\n }\n }\n };\n\n PlotAreaBase.prototype.createLabelAxis = function createLabelAxis (axis, axisIndex, anchor) {\n var labelOptions = axis.options.labels;\n var position = labelOptions.position;\n var onAxis = position !== END && position !== START;\n var visible = labelOptions.visible;\n\n if (onAxis || visible === false) {\n return null;\n }\n\n var allAxes = this.groupAxes(this.panes);\n var crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n var anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n var end = position === END;\n var range = anchor.range();\n var edge = end ? range.max : range.min;\n var crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n if (crossingValue - edge === 0) {\n return null;\n }\n\n anchorCrossings.splice(axisIndex + 1, 0, edge);\n anchor.options.axisCrossingValues = anchorCrossings;\n\n var labelAxis = axis.clone();\n axis.clear();\n\n labelAxis.options.name = undefined;\n labelAxis.options.line.visible = false;\n\n labelAxis.options.crosshair = undefined;\n labelAxis.options.notes = undefined;\n labelAxis.options.plotBands = undefined;\n\n return labelAxis;\n };\n\n PlotAreaBase.prototype.isTrendline = function isTrendline (series) {\n return series && inArray(series.type, TRENDLINE_SERIES);\n };\n\n PlotAreaBase.prototype.trendlineFactory = function trendlineFactory () { /* abstract */ };\n\n PlotAreaBase.prototype.createTrendlineSeries = function createTrendlineSeries () {\n var this$1 = this;\n\n var modifiedSeries = [];\n\n this.series = this.series.map(function (series) {\n if (!this$1.isTrendline(series)) {\n return series;\n }\n\n var forSeries = this$1.seriesByName(series.for);\n if (!forSeries) {\n throw new Error('Invalid Configuration: Unable to locate linked series ' +\n \"\\\"\" + (series.for) + \"\\\" for trendline \\\"\" + (series.name) + \"\\\".\");\n }\n\n var valueFields = SeriesBinder.current.valueFields(forSeries);\n var field = last(valueFields); // Use the last field for multi-field series\n\n var trendlineSeries = this$1.trendlineFactory(Object.assign({}, {field: field}, series), forSeries);\n if (trendlineSeries) {\n if (forSeries.visible === false) {\n trendlineSeries.visible = false;\n }\n\n if (trendlineSeries.color === INHERIT) {\n trendlineSeries.color = forSeries.color;\n }\n\n modifiedSeries.push(trendlineSeries);\n }\n\n return trendlineSeries;\n }).filter(function (series) { return series !== null; });\n\n return modifiedSeries;\n };\n\n PlotAreaBase.prototype.seriesByName = function seriesByName (name) {\n return this.series.find(function (series) { return series.name === name; });\n };\n\n return PlotAreaBase;\n}(ChartElement));\n\nfunction isSingleAxis(axis) {\n return !axis.pane.axes.some(function (a) { return a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false; }\n );\n}\n\nfunction axisGroupBox(axes) {\n var length = axes.length;\n var box;\n\n for (var i = 0; i < length; i++) {\n var axis = axes[i];\n var visible = axis.options.visible !== false;\n if (visible || isSingleAxis(axis)) {\n var axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n if (!box) {\n box = axisBox.clone();\n } else {\n box.wrap(axisBox);\n }\n }\n }\n\n return box || new Box();\n}\n\nfunction paneAnchor(axes, pane) {\n for (var i = 0; i < axes.length; i++) {\n var anchor = axes[i];\n if (anchor && anchor.pane === pane) {\n return anchor;\n }\n }\n}\n\nfunction isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}\n\nvar allPaneAxes = function (panes) { return panes.reduce(function (acc, pane) { return acc.concat(pane.axes); }, []); };\n\nsetDefaultOptions(PlotAreaBase, {\n series: [],\n plotArea: {\n margin: {}\n },\n background: \"\",\n border: {\n color: BLACK,\n width: 0\n },\n paneDefaults: {\n title: {}\n },\n legend: {\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n }\n});\n\nexport default PlotAreaBase;\n","import { PLOT_AREA_HOVER, PLOT_AREA_CLICK } from '../constants';\n\nvar PlotAreaEventsMixin = {\n hover: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n },\n\n click: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n }\n};\n\nexport default PlotAreaEventsMixin;","import Aggregates from './aggregates';\n\nimport { Class, defined, inArray, isArray, isFunction, isNumber, isObject } from '../../common';\n\nvar SeriesAggregator = (function (Class) {\n function SeriesAggregator(series, binder, defaultAggregates) {\n Class.call(this);\n\n var canonicalFields = binder.canonicalFields(series);\n var valueFields = binder.valueFields(series);\n var sourceFields = binder.sourceFields(series, canonicalFields);\n var seriesFields = this._seriesFields = [];\n var defaults = defaultAggregates.query(series.type);\n var rootAggregate = series.aggregate || defaults;\n\n this._series = series;\n this._binder = binder;\n\n for (var i = 0; i < canonicalFields.length; i++) {\n var field = canonicalFields[i];\n var fieldAggregate = (void 0);\n\n if (isObject(rootAggregate)) {\n fieldAggregate = rootAggregate[field];\n } else if (i === 0 || inArray(field, valueFields)) {\n fieldAggregate = rootAggregate;\n } else {\n break;\n }\n\n if (fieldAggregate) {\n seriesFields.push({\n canonicalName: field,\n name: sourceFields[i],\n transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n });\n }\n }\n }\n\n if ( Class ) SeriesAggregator.__proto__ = Class;\n SeriesAggregator.prototype = Object.create( Class && Class.prototype );\n SeriesAggregator.prototype.constructor = SeriesAggregator;\n\n SeriesAggregator.prototype.aggregatePoints = function aggregatePoints (srcPoints, group) {\n var this$1 = this;\n\n var ref = this;\n var series = ref._series;\n var seriesFields = ref._seriesFields;\n var data = this._bindPoints(srcPoints || []);\n var firstDataItem = data.dataItems[0];\n var result = {};\n\n if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n var fn = function() {};\n fn.prototype = firstDataItem;\n result = new fn();\n }\n\n for (var i = 0; i < seriesFields.length; i++) {\n var field = seriesFields[i];\n var srcValues = this$1._bindField(data.values, field.canonicalName);\n var value = field.transform(srcValues, series, data.dataItems, group);\n\n if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n result = value;\n break;\n } else {\n if (defined(value)) {\n setValue(field.name, result, value);\n }\n }\n }\n\n return result;\n };\n\n SeriesAggregator.prototype._bindPoints = function _bindPoints (points) {\n var ref = this;\n var binder = ref._binder;\n var series = ref._series;\n var values = [];\n var dataItems = [];\n\n for (var i = 0; i < points.length; i++) {\n var pointIx = points[i];\n\n values.push(binder.bindPoint(series, pointIx));\n dataItems.push(series.data[pointIx]);\n }\n\n return {\n values: values,\n dataItems: dataItems\n };\n };\n\n SeriesAggregator.prototype._bindField = function _bindField (data, field) {\n var values = [];\n var count = data.length;\n\n for (var i = 0; i < count; i++) {\n var item = data[i];\n var valueFields = item.valueFields;\n var value = (void 0);\n\n if (defined(valueFields[field])) {\n value = valueFields[field];\n } else {\n value = item.fields[field];\n }\n\n values.push(value);\n }\n\n return values;\n };\n\n return SeriesAggregator;\n}(Class));\n\nfunction setValue(fieldName, target, value) {\n var parentObj = target;\n var field = fieldName;\n\n if (fieldName.indexOf(\".\") > -1) {\n var parts = fieldName.split(\".\");\n\n while (parts.length > 1) {\n field = parts.shift();\n if (!defined(parentObj[field])) {\n parentObj[field] = {};\n }\n parentObj = parentObj[field];\n }\n field = parts.shift();\n }\n\n parentObj[field] = value;\n}\n\nexport default SeriesAggregator;","import { Class } from '../../common';\n\nvar DefaultAggregates = (function (Class) {\n function DefaultAggregates() {\n Class.call(this);\n\n this._defaults = {};\n }\n\n if ( Class ) DefaultAggregates.__proto__ = Class;\n DefaultAggregates.prototype = Object.create( Class && Class.prototype );\n DefaultAggregates.prototype.constructor = DefaultAggregates;\n\n DefaultAggregates.prototype.register = function register (seriesTypes, aggregates) {\n var this$1 = this;\n\n for (var i = 0; i < seriesTypes.length; i++) {\n this$1._defaults[seriesTypes[i]] = aggregates;\n }\n };\n\n DefaultAggregates.prototype.query = function query (seriesType) {\n return this._defaults[seriesType];\n };\n\n return DefaultAggregates;\n}(Class));\n\nDefaultAggregates.current = new DefaultAggregates();\n\nexport default DefaultAggregates;","import Bar from '../bar-chart/bar';\nimport BarLabel from '../bar-chart/bar-label';\n\nimport { deepExtend, getTemplate } from '../../common';\n\nvar RangeBar = (function (Bar) {\n function RangeBar () {\n Bar.apply(this, arguments);\n }\n\n if ( Bar ) RangeBar.__proto__ = Bar;\n RangeBar.prototype = Object.create( Bar && Bar.prototype );\n RangeBar.prototype.constructor = RangeBar;\n\n RangeBar.prototype.createLabel = function createLabel () {\n var labels = this.options.labels;\n var fromOptions = deepExtend({}, labels, labels.from);\n var toOptions = deepExtend({}, labels, labels.to);\n\n if (fromOptions.visible) {\n this.labelFrom = this._createLabel(fromOptions);\n this.append(this.labelFrom);\n }\n\n if (toOptions.visible) {\n this.labelTo = this._createLabel(toOptions);\n this.append(this.labelTo);\n }\n };\n\n RangeBar.prototype._createLabel = function _createLabel (options) {\n var labelTemplate = getTemplate(options);\n var pointData = this.pointData();\n\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(options.format);\n }\n\n return new BarLabel(labelText,\n deepExtend({\n vertical: this.options.vertical\n },\n options\n ), pointData);\n };\n\n RangeBar.prototype.reflow = function reflow (targetBox) {\n this.render();\n\n var ref = this;\n var labelFrom = ref.labelFrom;\n var labelTo = ref.labelTo;\n var value = ref.value;\n\n this.box = targetBox;\n\n if (labelFrom) {\n labelFrom.options.aboveAxis = value.from > value.to;\n labelFrom.reflow(targetBox);\n }\n\n if (labelTo) {\n labelTo.options.aboveAxis = value.to > value.from;\n labelTo.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n };\n\n return RangeBar;\n}(Bar));\n\nRangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n labels: {\n format: \"{0} - {1}\"\n },\n tooltip: {\n format: \"{1}\"\n }\n});\n\nexport default RangeBar;","import BarChart from '../bar-chart/bar-chart';\nimport RangeBar from './range-bar';\nimport CategoricalChart from '../categorical-chart';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\n\nvar RangeBarChart = (function (BarChart) {\n function RangeBarChart () {\n BarChart.apply(this, arguments);\n }\n\n if ( BarChart ) RangeBarChart.__proto__ = BarChart;\n RangeBarChart.prototype = Object.create( BarChart && BarChart.prototype );\n RangeBarChart.prototype.constructor = RangeBarChart;\n\n RangeBarChart.prototype.pointType = function pointType () {\n return RangeBar;\n };\n\n RangeBarChart.prototype.pointValue = function pointValue (data) {\n return data.valueFields;\n };\n\n RangeBarChart.prototype.formatPointValue = function formatPointValue (point, format) {\n if (point.value.from === null && point.value.to === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value.from, point.value.to);\n };\n\n RangeBarChart.prototype.plotRange = function plotRange (point) {\n if (!point) {\n return 0;\n }\n\n return [ point.value.from, point.value.to ];\n };\n\n RangeBarChart.prototype.updateRange = function updateRange (value, fields) {\n var axisName = fields.series.axis;\n var from = value.from;\n var to = value.to;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (value !== null && isNumber(from) && isNumber(to)) {\n axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, from);\n axisRange.max = Math.max(axisRange.max, from);\n\n axisRange.min = Math.min(axisRange.min, to);\n axisRange.max = Math.max(axisRange.max, to);\n }\n };\n\n RangeBarChart.prototype.aboveAxis = function aboveAxis (point) {\n var value = point.value;\n return value.from < value.to;\n };\n\n return RangeBarChart;\n}(BarChart));\n\nRangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\nexport default RangeBarChart;","import LinePoint from '../line-chart/line-point';\n\nvar RangeLinePoint = (function (LinePoint) {\n function RangeLinePoint () {\n LinePoint.apply(this, arguments);\n }\n\n if ( LinePoint ) RangeLinePoint.__proto__ = LinePoint;\n RangeLinePoint.prototype = Object.create( LinePoint && LinePoint.prototype );\n RangeLinePoint.prototype.constructor = RangeLinePoint;\n\n RangeLinePoint.prototype.aliasFor = function aliasFor () {\n return this.parent;\n };\n\n return RangeLinePoint;\n}(LinePoint));\n\nexport default RangeLinePoint;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport RangeLinePoint from './range-line-point';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\nimport { WHITE, CIRCLE, HIGHLIGHT_ZINDEX, LEFT, RIGHT, BOTTOM, CENTER } from '../../common/constants';\nimport { deepExtend, valueOrDefault, getSpacing } from '../../common';\n\nvar AUTO = 'auto';\nvar DEFAULT_FROM_FORMAT = '{0}';\nvar DEFAULT_TO_FORMAT = '{1}';\n\nvar RangeAreaPoint = (function (ChartElement) {\n function RangeAreaPoint(value, options) {\n ChartElement.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this.initLabelsFormat();\n }\n\n if ( ChartElement ) RangeAreaPoint.__proto__ = ChartElement;\n RangeAreaPoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n RangeAreaPoint.prototype.constructor = RangeAreaPoint;\n\n RangeAreaPoint.prototype.render = function render () {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\n var value = this.value;\n\n var fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.from,\n markers: markers.from\n }));\n\n var toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.to,\n markers: markers.to\n }));\n\n this.copyFields(fromPoint);\n this.copyFields(toPoint);\n\n this.append(fromPoint);\n this.append(toPoint);\n };\n\n RangeAreaPoint.prototype.reflow = function reflow (targetBox) {\n this.render();\n\n var fromBox = targetBox.from;\n var toBox = targetBox.to;\n\n this.positionLabels(fromBox, toBox);\n\n this.fromPoint.reflow(fromBox);\n this.toPoint.reflow(toBox);\n\n this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n };\n\n RangeAreaPoint.prototype.createHighlight = function createHighlight () {\n var group = new draw.Group();\n group.append(this.fromPoint.createHighlight());\n group.append(this.toPoint.createHighlight());\n\n return group;\n };\n\n RangeAreaPoint.prototype.highlightVisual = function highlightVisual () {\n return this.visual;\n };\n\n RangeAreaPoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n from: this.fromPoint.highlightVisualArgs(),\n to: this.toPoint.highlightVisualArgs()\n };\n };\n\n RangeAreaPoint.prototype.tooltipAnchor = function tooltipAnchor () {\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n if (showTooltip) {\n var box = this.box;\n var center = box.center();\n var horizontalAlign = LEFT;\n var x, y, verticalAlign;\n\n if (this.options.vertical) {\n x = center.x;\n y = box.y1 - TOOLTIP_OFFSET;\n verticalAlign = BOTTOM;\n } else {\n x = box.x2 + TOOLTIP_OFFSET;\n y = center.y;\n verticalAlign = CENTER;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n };\n\n RangeAreaPoint.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n RangeAreaPoint.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n RangeAreaPoint.prototype.unclipElements = function unclipElements () {\n this.fromPoint.unclipElements();\n this.toPoint.unclipElements();\n };\n\n RangeAreaPoint.prototype.initLabelsFormat = function initLabelsFormat () {\n var labels = this.options.labels;\n if (!labels.format) {\n if (!labels.from || !labels.from.format) {\n labels.from = Object.assign({}, labels.from, {\n format: DEFAULT_FROM_FORMAT\n });\n }\n\n if (!labels.to || !labels.to.format) {\n labels.to = Object.assign({}, labels.to, {\n format: DEFAULT_TO_FORMAT\n });\n }\n }\n };\n\n RangeAreaPoint.prototype.positionLabels = function positionLabels (fromBox, toBox) {\n var ref = this.options;\n var labels = ref.labels;\n var vertical = ref.vertical;\n\n if (labels.position === AUTO) {\n var fromLabelPosition, toLabelPosition;\n if (vertical) {\n if (toBox.y1 <= fromBox.y1) {\n toLabelPosition = ABOVE;\n fromLabelPosition = BELOW;\n } else {\n toLabelPosition = BELOW;\n fromLabelPosition = ABOVE;\n }\n } else {\n if (toBox.x1 <= fromBox.x1) {\n toLabelPosition = LEFT;\n fromLabelPosition = RIGHT;\n } else {\n toLabelPosition = RIGHT;\n fromLabelPosition = LEFT;\n }\n }\n\n if (!labels.from || !labels.from.position) {\n this.fromPoint.options.labels.position = fromLabelPosition;\n }\n\n if (!labels.to || !labels.to.position) {\n this.toPoint.options.labels.position = toLabelPosition;\n }\n }\n };\n\n RangeAreaPoint.prototype.copyFields = function copyFields (point) {\n point.dataItem = this.dataItem;\n point.category = this.category;\n point.series = this.series;\n point.color = this.color;\n point.owner = this.owner;\n };\n\n return RangeAreaPoint;\n}(ChartElement));\n\ndeepExtend(RangeAreaPoint.prototype, PointEventsMixin);\ndeepExtend(RangeAreaPoint.prototype, NoteMixin);\n\nRangeAreaPoint.prototype.defaults = {\n markers: {\n visible: false,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n position: AUTO\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: WHITE,\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n tooltip: {\n format: '{0} - {1}'\n }\n};\n\nexport default RangeAreaPoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nvar RangeAreaSegment = (function (AreaSegment) {\n function RangeAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) RangeAreaSegment.__proto__ = AreaSegment;\n RangeAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n RangeAreaSegment.prototype.constructor = RangeAreaSegment;\n\n RangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n };\n\n RangeAreaSegment.prototype.stackSegments = function stackSegments () {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n }\n\n return fromSegments;\n };\n\n RangeAreaSegment.prototype.createStroke = function createStroke (style) {\n var toPath = new draw.Path(style);\n var fromPath = new draw.Path(style);\n\n toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n this.visual.append(toPath);\n this.visual.append(fromPath);\n };\n\n RangeAreaSegment.prototype.hasStackSegment = function hasStackSegment () {\n return true;\n };\n\n RangeAreaSegment.prototype.fromPoints = function fromPoints () {\n return this.linePoints.map(function (point) { return point.fromPoint; });\n };\n\n RangeAreaSegment.prototype.toPoints = function toPoints () {\n return this.linePoints.map(function (point) { return point.toPoint; });\n };\n\n return RangeAreaSegment;\n}(AreaSegment));\n\nexport default RangeAreaSegment;","import { CurveProcessor } from '../../core';\n\nimport RangeAreaSegment from './range-area-segment';\n\nvar SplineRangeAreaSegment = (function (RangeAreaSegment) {\n function SplineRangeAreaSegment () {\n RangeAreaSegment.apply(this, arguments);\n }\n\n if ( RangeAreaSegment ) SplineRangeAreaSegment.__proto__ = RangeAreaSegment;\n SplineRangeAreaSegment.prototype = Object.create( RangeAreaSegment && RangeAreaSegment.prototype );\n SplineRangeAreaSegment.prototype.constructor = SplineRangeAreaSegment;\n\n SplineRangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.createCurveSegments(this.toPoints());\n };\n\n SplineRangeAreaSegment.prototype.stackSegments = function stackSegments () {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n }\n\n return fromSegments;\n };\n\n SplineRangeAreaSegment.prototype.createCurveSegments = function createCurveSegments (points) {\n var curveProcessor = new CurveProcessor();\n\n return curveProcessor.process(this.toGeometryPoints(points));\n };\n\n return SplineRangeAreaSegment;\n}(RangeAreaSegment));\n\nexport default SplineRangeAreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport RangeAreaSegment from './range-area-segment';\nimport { deepExtend } from '../../common';\n\nvar StepRangeAreaSegment = (function (RangeAreaSegment) {\n function StepRangeAreaSegment () {\n RangeAreaSegment.apply(this, arguments);\n }\n\n if ( RangeAreaSegment ) StepRangeAreaSegment.__proto__ = RangeAreaSegment;\n StepRangeAreaSegment.prototype = Object.create( RangeAreaSegment && RangeAreaSegment.prototype );\n StepRangeAreaSegment.prototype.constructor = StepRangeAreaSegment;\n\n StepRangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n };\n\n StepRangeAreaSegment.prototype.stackSegments = function stackSegments () {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n fromSegments.reverse();\n }\n\n return fromSegments;\n };\n\n return StepRangeAreaSegment;\n}(RangeAreaSegment));\n\ndeepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\nexport default StepRangeAreaSegment;","import CategoricalChart from '../categorical-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport RangeAreaPoint from './range-area-point';\nimport RangeAreaSegment from './range-area-segment';\nimport SplineRangeAreaSegment from './spline-range-area-segment';\nimport StepRangeAreaSegment from './step-range-area-segment';\n\nimport { Box } from '../../core';\nimport { ZERO } from '../constants';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\nimport { deepExtend, isFunction } from '../../common';\nimport { hasValue } from '../utils';\n\nvar RangeAreaChart = (function (CategoricalChart) {\n function RangeAreaChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) RangeAreaChart.__proto__ = CategoricalChart;\n RangeAreaChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n RangeAreaChart.prototype.constructor = RangeAreaChart;\n\n RangeAreaChart.prototype.render = function render () {\n CategoricalChart.prototype.render.call(this);\n\n this.renderSegments();\n };\n\n RangeAreaChart.prototype.pointType = function pointType () {\n return RangeAreaPoint;\n };\n\n RangeAreaChart.prototype.createPoint = function createPoint (data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var value = data.valueFields;\n\n if (!hasValue(value.from) && !hasValue(value.to)) {\n if (this.seriesMissingValues(series) === ZERO) {\n value = {\n from: 0,\n to: 0\n };\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new RangeAreaPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n RangeAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segmentType;\n if (style === \"smooth\") {\n segmentType = SplineRangeAreaSegment;\n } else if (style === \"step\") {\n segmentType = StepRangeAreaSegment;\n } else {\n segmentType = RangeAreaSegment;\n }\n\n return new segmentType(linePoints, currentSeries, seriesIx);\n };\n\n RangeAreaChart.prototype.plotRange = function plotRange (point, startValue) {\n if (!point) {\n return [ startValue, startValue ];\n }\n\n return [ point.value.from, point.value.to ];\n };\n\n RangeAreaChart.prototype.valueSlot = function valueSlot (valueAxis, plotRange) {\n var fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n var toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n if (fromSlot && toSlot) {\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n };\n\n RangeAreaChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var from = valueSlot.from;\n var to = valueSlot.to;\n var fromSlot, toSlot;\n\n if (this.options.invertAxes) {\n fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n } else {\n fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n }\n\n return {\n from: fromSlot,\n to: toSlot\n };\n };\n\n RangeAreaChart.prototype.addValue = function addValue (data, fields) {\n var valueFields = data.valueFields;\n if (!isNumber(valueFields.from)) {\n valueFields.from = valueFields.to;\n }\n\n if (!isNumber(valueFields.to)) {\n valueFields.to = valueFields.from;\n }\n\n CategoricalChart.prototype.addValue.call(this, data, fields);\n };\n\n RangeAreaChart.prototype.updateRange = function updateRange (value, fields) {\n if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n var from = value.from;\n var to = value.to;\n\n axisRange.min = Math.min(axisRange.min, from, to);\n axisRange.max = Math.max(axisRange.max, from, to);\n }\n };\n\n RangeAreaChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format, value.from, value.to);\n };\n\n RangeAreaChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n result.push((point.fromPoint || {}).marker);\n result.push((point.toPoint || {}).marker);\n }\n }\n\n return result.concat(this._segments);\n };\n\n return RangeAreaChart;\n}(CategoricalChart));\n\ndeepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default RangeAreaChart;\n","import Candlestick from '../candlestick-chart/candlestick';\n\nvar OHLCPoint = (function (Candlestick) {\n function OHLCPoint () {\n Candlestick.apply(this, arguments);\n }\n\n if ( Candlestick ) OHLCPoint.__proto__ = Candlestick;\n OHLCPoint.prototype = Object.create( Candlestick && Candlestick.prototype );\n OHLCPoint.prototype.constructor = OHLCPoint;\n\n OHLCPoint.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var oPoints = [];\n var cPoints = [];\n var lhPoints = [];\n\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n var oSlot = valueAxis.getSlot(value.open, value.open);\n var cSlot = valueAxis.getSlot(value.close, value.close);\n\n oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n var mid = lhSlot.center().x;\n\n oPoints.push([ oSlot.x1, oSlot.y1 ]);\n oPoints.push([ mid, oSlot.y1 ]);\n cPoints.push([ mid, cSlot.y1 ]);\n cPoints.push([ cSlot.x2, cSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y2 ]);\n\n this.lines = [\n oPoints, cPoints, lhPoints\n ];\n\n this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n this.reflowNote();\n };\n\n OHLCPoint.prototype.createBody = function createBody () {};\n\n return OHLCPoint;\n}(Candlestick));\n\nexport default OHLCPoint;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport OHLCPoint from './ohlc-point';\n\nvar OHLCChart = (function (CandlestickChart) {\n function OHLCChart () {\n CandlestickChart.apply(this, arguments);\n }\n\n if ( CandlestickChart ) OHLCChart.__proto__ = CandlestickChart;\n OHLCChart.prototype = Object.create( CandlestickChart && CandlestickChart.prototype );\n OHLCChart.prototype.constructor = OHLCChart;\n\n OHLCChart.prototype.pointType = function pointType () {\n return OHLCPoint;\n };\n\n return OHLCChart;\n}(CandlestickChart));\n\nexport default OHLCChart;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { alignPathToPixel, setDefaultOptions } from '../../common';\n\nvar WaterfallSegment = (function (ChartElement) {\n function WaterfallSegment(from, to, series) {\n ChartElement.call(this);\n\n this.from = from;\n this.to = to;\n this.series = series;\n }\n\n if ( ChartElement ) WaterfallSegment.__proto__ = ChartElement;\n WaterfallSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n WaterfallSegment.prototype.constructor = WaterfallSegment;\n\n WaterfallSegment.prototype.linePoints = function linePoints () {\n var from = this.from;\n var ref = this;\n var fromBox = ref.from.box;\n var toBox = ref.to.box;\n var points = [];\n\n if (from.isVertical) {\n var y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n points.push(\n [ fromBox.x1, y ],\n [ toBox.x2, y ]\n );\n } else {\n var x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n points.push(\n [ x, fromBox.y1 ],\n [ x, toBox.y2 ]\n );\n }\n\n return points;\n };\n\n WaterfallSegment.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var line = this.series.line || {};\n\n var path = draw.Path.fromPoints(this.linePoints(), {\n stroke: {\n color: line.color,\n width: line.width,\n opacity: line.opacity,\n dashType: line.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n };\n\n return WaterfallSegment;\n}(ChartElement));\n\nsetDefaultOptions(WaterfallSegment, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n});\n\nexport default WaterfallSegment;","import BarChart from '../bar-chart/bar-chart';\nimport SeriesBinder from '../series-binder';\nimport WaterfallSegment from './waterfall-segment';\n\nimport categoriesCount from '../utils/categories-count';\n\nimport { isNumber } from '../../common';\n\nvar WaterfallChart = (function (BarChart) {\n function WaterfallChart () {\n BarChart.apply(this, arguments);\n }\n\n if ( BarChart ) WaterfallChart.__proto__ = BarChart;\n WaterfallChart.prototype = Object.create( BarChart && BarChart.prototype );\n WaterfallChart.prototype.constructor = WaterfallChart;\n\n WaterfallChart.prototype.render = function render () {\n BarChart.prototype.render.call(this);\n this.createSegments();\n };\n\n WaterfallChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var series = this.options.series;\n var totalCategories = categoriesCount(series);\n var isVertical = !this.options.invertAxes;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var total = 0;\n var runningTotal = 0;\n\n for (var categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n var data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n var value = data.valueFields.value;\n var summary = data.fields.summary;\n var from = total;\n var to = (void 0);\n\n if (summary) {\n if (summary.toLowerCase() === \"total\") {\n data.valueFields.value = total;\n from = 0;\n to = total;\n } else {\n data.valueFields.value = runningTotal;\n to = from - runningTotal;\n runningTotal = 0;\n }\n } else if (isNumber(value)) {\n runningTotal += value;\n total += value;\n to = total;\n }\n\n callback(data, {\n category: this$1.categoryAxis.categoryAt(categoryIx),\n categoryIx: categoryIx,\n series: currentSeries,\n seriesIx: seriesIx,\n total: total,\n runningTotal: runningTotal,\n from: from,\n to: to,\n isVertical: isVertical\n });\n }\n }\n };\n\n WaterfallChart.prototype.updateRange = function updateRange (value, fields) {\n BarChart.prototype.updateRange.call(this, { value: fields.to }, fields);\n };\n\n WaterfallChart.prototype.aboveAxis = function aboveAxis (point) {\n return point.value >= 0;\n };\n\n WaterfallChart.prototype.plotRange = function plotRange (point) {\n return [ point.from, point.to ];\n };\n\n WaterfallChart.prototype.createSegments = function createSegments () {\n var this$1 = this;\n\n var series = this.options.series;\n var seriesPoints = this.seriesPoints;\n var segments = this.segments = [];\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var points = seriesPoints[seriesIx];\n\n if (points) {\n var prevPoint = (void 0);\n for (var pointIx = 0; pointIx < points.length; pointIx++) {\n var point = points[pointIx];\n\n if (point && prevPoint) {\n var segment = new WaterfallSegment(prevPoint, point, currentSeries);\n segments.push(segment);\n this$1.append(segment);\n }\n\n prevPoint = point;\n }\n }\n }\n };\n\n return WaterfallChart;\n}(BarChart));\n\nexport default WaterfallChart;","function trendlineFactory(registry, type, context) {\n var impl = registry[String(type)];\n if (impl) {\n return impl(context);\n }\n\n return null;\n}\n\nexport default trendlineFactory;\n","function calculateSlope(sourceValues, valueGetter) {\n var x = 0;\n var y = 0;\n var x2 = 0;\n var xy = 0;\n var count = 0;\n var slope, intercept;\n var xMin = Number.MAX_VALUE;\n var xMax = Number.MIN_VALUE;\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\n\n if (isFinite(xValue) && xValue !== null && isFinite(yValue) && yValue !== null) {\n xMin = Math.min(xValue, xMin);\n xMax = Math.max(xValue, xMax);\n\n count++;\n x += xValue;\n y += yValue;\n x2 += Math.pow(xValue, 2);\n xy += xValue * yValue;\n }\n }\n\n if (count > 0) {\n slope = (count * xy - x * y) / (count * x2 - Math.pow(x, 2));\n intercept = (y - slope * x) / count;\n }\n\n return { slope: slope, intercept: intercept, count: count, xMin: xMin, xMax: xMax };\n}\n\nexport default calculateSlope;\n","import calculateSlope from './calculate-slope';\n\nfunction linearTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var ref = getData({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n var data = ref.data;\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx + 1, yValue: valueFields[fieldName] });\n; } };\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var ref$1 = calculateSlope(seriesValues(), valueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n\n if (count > 0) {\n var data = [];\n var totalRange = categoryAxis.totalRangeIndices();\n var currentRange = categoryAxis.currentRangeIndices();\n var range = {\n min: Math.floor(Math.max(currentRange.min - 1, totalRange.min)),\n max: Math.ceil(Math.min(currentRange.max + 2, totalRange.max))\n };\n\n for (var i = range.min; i < range.max; i++) {\n data[i] = {\n category: categoryAxis.categoryAt(i, true),\n value: slope * (i + 1) + intercept\n };\n }\n\n return { data: data };\n }\n\n return { data: null };\n}\n\nexport default linearTrendline;\n","import { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\n\nfunction calculateMovingAverage(sourceValues, valueGetter, period) {\n var averagePoints = [];\n var values = [];\n var start = Math.max(MIN_MOVING_AVERAGE_PERIOD, period) - 1;\n\n var end = 0;\n var sum = 0;\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\n\n if (isFinite(yValue) && yValue !== null) {\n values.push(yValue);\n sum += yValue;\n end = Math.max(i, end);\n } else {\n values.push(null);\n }\n\n if (i >= start) {\n var count = values.filter(function (value) { return value !== null; }).length;\n var lastValue = values.shift() || 0;\n\n if (count > 0) {\n var average = sum / count;\n averagePoints.push([xValue, average]);\n\n sum -= lastValue;\n continue;\n }\n }\n\n averagePoints.push([xValue, null]);\n }\n\n return averagePoints.slice(0, end + 1);\n}\n\nexport default calculateMovingAverage;\n","import { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\nimport calculateMovingAverage from './calculate-moving-average';\n\nfunction movingAverageTrendline(context) {\n var options = context.options;\n\n var ref = getData(context);\n var data = ref.data;\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx, yValue: valueFields[fieldName] });\n; } };\n\nfunction calculatePoints(ref) {\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var seriesValues = ref.seriesValues;\n\n var period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n var totalRange = categoryAxis.totalRangeIndices();\n var currentRange = categoryAxis.currentRangeIndices();\n var range = {\n min: Math.floor(Math.max(currentRange.min - period, totalRange.min)),\n max: Math.ceil(Math.min(currentRange.max + period + 2, totalRange.max))\n };\n\n return calculateMovingAverage(seriesValues(range), valueGetter(options.field), period);\n}\n\nfunction getData(context) {\n var categoryAxis = context.categoryAxis;\n var points = calculatePoints(context);\n var data = [];\n points.forEach(function (ref) {\n var categoryIx = ref[0];\n var value = ref[1];\n\n data[categoryIx] = {\n category: categoryAxis.categoryAt(categoryIx, true),\n value: value\n };\n });\n\n if (data.length > 0) {\n return { data: data };\n }\n\n return { data: null };\n}\n\nexport default movingAverageTrendline;\n","import linearTrendline from './linear-trendline';\nimport movingAverageTrendline from './moving-average';\nimport { TRENDLINE_LINEAR, TRENDLINE_MOVING_AVERAGE } from '../constants';\n\nvar registry = {};\nregistry[TRENDLINE_LINEAR] = linearTrendline;\nregistry[TRENDLINE_MOVING_AVERAGE] = movingAverageTrendline;\n\nexport default registry;\n","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesAggregator from '../aggregates/series-aggregator';\nimport DefaultAggregates from '../aggregates/default-aggregates';\nimport SeriesBinder from '../series-binder';\nimport BarChart from '../bar-chart/bar-chart';\nimport RangeBarChart from '../range-bar-chart/range-bar-chart';\nimport BulletChart from '../bullet-chart/bullet-chart';\nimport LineChart from '../line-chart/line-chart';\nimport AreaChart from '../area-chart/area-chart';\nimport RangeAreaChart from '../range-area-chart/range-area-chart';\nimport OHLCChart from '../ohlc-chart/ohlc-chart';\nimport CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport BoxPlotChart from '../box-plot-chart/box-plot-chart';\nimport WaterfallChart from '../waterfall-chart/waterfall-chart';\nimport trendlineFactory from '../trendlines/trendline-factory';\nimport trendlineRegistry from '../trendlines/trendline-registry';\n\nimport { CategoryAxis, DateCategoryAxis, NumericAxis, LogarithmicAxis, Point } from '../../core';\n\nimport { appendIfNotNull, categoriesCount, createOutOfRangePoints, equalsIgnoreCase, filterSeriesByType,\n getDateField, getField, isDateAxis, singleItemOrArray } from '../utils';\n\nimport { BAR, COLUMN, BULLET, VERTICAL_BULLET, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n RANGE_AREA, VERTICAL_RANGE_AREA, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL,\n BOX_PLOT, VERTICAL_BOX_PLOT, OHLC, CANDLESTICK, LOGARITHMIC, STEP, EQUALLY_SPACED_SERIES } from '../constants';\n\nimport { DATE, MAX_VALUE } from '../../common/constants';\nimport { setDefaultOptions, inArray, deepExtend, defined, eventElement, grep } from '../../common';\n\nvar AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\nvar OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\nvar CategoricalPlotArea = (function (PlotAreaBase) {\n function CategoricalPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) CategoricalPlotArea.__proto__ = PlotAreaBase;\n CategoricalPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n CategoricalPlotArea.prototype.constructor = CategoricalPlotArea;\n\n CategoricalPlotArea.prototype.initFields = function initFields (series) {\n var this$1 = this;\n\n this.namedCategoryAxes = {};\n this.namedValueAxes = {};\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n this._seriesPointsCache = {};\n this._currentPointsCache = {};\n\n if (series.length > 0) {\n this.invertAxes = inArray(\n series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n );\n\n for (var i = 0; i < series.length; i++) {\n var stack = series[i].stack;\n if (stack && stack.type === \"100%\") {\n this$1.stack100 = true;\n break;\n }\n }\n }\n };\n\n CategoricalPlotArea.prototype.render = function render (panes) {\n if ( panes === void 0 ) panes = this.panes;\n\n this.series = [].concat( this.originalSeries );\n this.createCategoryAxes(panes);\n\n this.aggregateCategories(panes);\n this.createTrendlineSeries(panes);\n\n this.createCategoryAxesLabels(panes);\n this.createCharts(panes);\n this.createValueAxes(panes);\n };\n\n CategoricalPlotArea.prototype.removeAxis = function removeAxis (axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n if (axis instanceof CategoryAxis) {\n delete this.namedCategoryAxes[axisName];\n } else {\n this.valueAxisRangeTracker.reset(axisName);\n delete this.namedValueAxes[axisName];\n }\n\n if (axis === this.categoryAxis) {\n delete this.categoryAxis;\n }\n\n if (axis === this.valueAxis) {\n delete this.valueAxis;\n }\n };\n\n CategoricalPlotArea.prototype.trendlineFactory = function trendlineFactory$1 (options, series) {\n var categoryAxis = this.seriesCategoryAxis(options);\n var seriesValues = this.seriesValues.bind(this, series.index);\n\n var trendline = trendlineFactory(trendlineRegistry, options.type, {\n options: options,\n categoryAxis: categoryAxis,\n seriesValues: seriesValues\n });\n\n if (trendline) {\n // Inherit settings\n trendline.categoryAxis = series.categoryAxis;\n trendline.valueAxis = series.valueAxis;\n\n return this.filterSeries(trendline, categoryAxis);\n }\n\n return trendline;\n };\n\n CategoricalPlotArea.prototype.trendlineAggregateForecast = function trendlineAggregateForecast () {\n return this.series\n .map(function (series) { return (series.trendline || {}).forecast; })\n .filter(function (forecast) { return forecast !== undefined; })\n .reduce(function (result, forecast) { return ({\n before: Math.max(result.before, forecast.before || 0),\n after: Math.max(result.after, forecast.after || 0)\n }); }, { before: 0, after: 0 });\n };\n\n CategoricalPlotArea.prototype.seriesValues = function seriesValues (seriesIx, range) {\n var this$1 = this;\n\n var result = [];\n\n var series = this.srcSeries[seriesIx];\n var categoryAxis = this.seriesCategoryAxis(series);\n var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n if (dateAxis) {\n this._seriesPointsCache = {};\n this._currentPointsCache = {};\n categoryAxis.options.dataItems = [];\n series = this.aggregateSeries(series, categoryAxis, categoryAxis.totalRangeIndices());\n }\n\n var min = range ? range.min : 0;\n var max = range ? range.max : series.data.length;\n for (var categoryIx = min; categoryIx < max; categoryIx++) {\n var data = this$1.bindPoint(series, categoryIx);\n result.push({ categoryIx: categoryIx, category: data.fields.category, valueFields: data.valueFields });\n }\n\n return result;\n };\n\n CategoricalPlotArea.prototype.createCharts = function createCharts (panes) {\n var this$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1.addToLegend(paneSeries);\n\n var visibleSeries = this$1.filterVisibleSeries(paneSeries);\n if (!visibleSeries) {\n continue;\n }\n\n var groups = this$1.groupSeriesByCategoryAxis(visibleSeries);\n for (var groupIx = 0; groupIx < groups.length; groupIx++) {\n this$1.createChartGroup(groups[groupIx], pane);\n }\n }\n };\n\n CategoricalPlotArea.prototype.createChartGroup = function createChartGroup (series, pane) {\n this.createAreaChart(\n filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n );\n\n this.createRangeAreaChart(\n filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ COLUMN, BAR ]), pane\n );\n\n this.createRangeBarChart(\n filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n );\n\n this.createBulletChart(\n filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n );\n\n this.createCandlestickChart(\n filterSeriesByType(series, CANDLESTICK), pane\n );\n\n this.createBoxPlotChart(\n filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n );\n\n this.createOHLCChart(\n filterSeriesByType(series, OHLC), pane\n );\n\n this.createWaterfallChart(\n filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n );\n };\n\n CategoricalPlotArea.prototype.aggregateCategories = function aggregateCategories (panes) {\n var this$1 = this;\n\n var series = [].concat( this.series );\n var processedSeries = [];\n this._currentPointsCache = {};\n this._seriesPointsCache = this._seriesPointsCache || {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n\n if (!this$1.isTrendline(currentSeries)) {\n var categoryAxis = this$1.seriesCategoryAxis(currentSeries);\n var axisPane = this$1.findPane(categoryAxis.options.pane);\n var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n currentSeries = this$1.aggregateSeries(currentSeries, categoryAxis, categoryAxis.currentRangeIndices());\n } else {\n currentSeries = this$1.filterSeries(currentSeries, categoryAxis);\n }\n }\n\n processedSeries.push(currentSeries);\n }\n\n this._seriesPointsCache = this._currentPointsCache;\n this._currentPointsCache = null;\n\n this.srcSeries = series;\n this.series = processedSeries;\n };\n\n CategoricalPlotArea.prototype.filterSeries = function filterSeries (series, categoryAxis) {\n var dataLength = (series.data || {}).length;\n categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n if (!(defined(categoryAxis.options.min) || defined(categoryAxis.options.max))) {\n return series;\n }\n\n var range = categoryAxis.currentRangeIndices();\n var outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n var currentSeries = deepExtend({}, series);\n\n currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n if (outOfRangePoints) {\n createOutOfRangePoints(currentSeries, range, dataLength, function (idx) { return ({\n item: series.data[idx],\n category: categoryAxis.categoryAt(idx, true),\n categoryIx: idx - range.min\n }); }, function (idx) { return defined(series.data[idx]); });\n }\n\n return currentSeries;\n };\n\n CategoricalPlotArea.prototype.clearSeriesPointsCache = function clearSeriesPointsCache () {\n this._seriesPointsCache = {};\n };\n\n CategoricalPlotArea.prototype.seriesSourcePoints = function seriesSourcePoints (series, categoryAxis) {\n var this$1 = this;\n\n var key = (series.index) + \";\" + (categoryAxis.categoriesHash());\n if (this._seriesPointsCache && this._seriesPointsCache[key]) {\n this._currentPointsCache[key] = this._seriesPointsCache[key];\n return this._seriesPointsCache[key];\n }\n\n var axisOptions = categoryAxis.options;\n var srcCategories = axisOptions.srcCategories;\n var dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n var srcData = series.data;\n var getFn = dateAxis ? getDateField : getField;\n var result = [];\n if (!dateAxis) {\n categoryAxis.mapCategories(); //fixes major performance issue caused by searching for the index for large data\n }\n\n for (var idx = 0; idx < srcData.length; idx++) {\n var category = (void 0);\n if (series.categoryField) {\n category = getFn(series.categoryField, srcData[idx], this$1.chartService.intl);\n } else {\n category = srcCategories[idx];\n }\n\n if (defined(category) && category !== null) {\n var categoryIx = categoryAxis.totalIndex(category);\n result[categoryIx] = result[categoryIx] || { items: [], category: category };\n result[categoryIx].items.push(idx);\n }\n }\n\n this._currentPointsCache[key] = result;\n\n return result;\n };\n\n CategoricalPlotArea.prototype.aggregateSeries = function aggregateSeries (series, categoryAxis, range) {\n var srcData = series.data;\n if (!srcData.length) {\n return series;\n }\n\n var srcPoints = this.seriesSourcePoints(series, categoryAxis);\n var result = deepExtend({}, series);\n var aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n var data = result.data = [];\n\n var dataItems = categoryAxis.options.dataItems || [];\n\n var categoryItem = function (idx) {\n var categoryIdx = idx - range.min;\n var point = srcPoints[idx];\n if (!point) {\n point = srcPoints[idx] = {};\n }\n\n point.categoryIx = categoryIdx;\n\n if (!point.item) {\n var category = categoryAxis.categoryAt(idx, true);\n point.category = category;\n point.item = aggregator.aggregatePoints(point.items, category);\n }\n\n return point;\n };\n\n for (var idx = range.min; idx <= range.max; idx++) {\n var point = categoryItem(idx);\n data[point.categoryIx] = point.item;\n\n if (point.items && point.items.length) {\n dataItems[point.categoryIx] = point.item;\n }\n }\n\n if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, function (idx) { return srcPoints[idx]; });\n }\n\n categoryAxis.options.dataItems = dataItems;\n\n return result;\n };\n\n CategoricalPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n var series = chart.options.series;\n var categoryAxis = this.seriesCategoryAxis(series[0]);\n var categories = categoryAxis.options.categories;\n var categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n while (categoriesToAdd--) {\n categories.push(\"\");\n }\n }\n\n this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n };\n\n // TODO: Refactor, optionally use series.pane option\n CategoricalPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n var options = this.options;\n var axisName = series.axis;\n var axisOptions = [].concat(options.valueAxis);\n var axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = (panes[0] || {}).name || \"default\";\n var paneName = (axis || {}).pane || defaultPaneName;\n\n return paneName;\n };\n\n CategoricalPlotArea.prototype.seriesCategoryAxis = function seriesCategoryAxis (series) {\n var axisName = series.categoryAxis;\n var axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate category axis with name \" + axisName);\n }\n\n return axis;\n };\n\n CategoricalPlotArea.prototype.stackableChartOptions = function stackableChartOptions (firstSeries, pane) {\n var stack = firstSeries.stack;\n var isStacked100 = stack && stack.type === \"100%\";\n var clip = pane.options.clip;\n\n return {\n isStacked: stack,\n isStacked100: isStacked100,\n clip: clip\n };\n };\n\n CategoricalPlotArea.prototype.groupSeriesByCategoryAxis = function groupSeriesByCategoryAxis (series) {\n var categoryAxes = [];\n var unique = {};\n for (var idx = 0; idx < series.length; idx++) {\n var name = series[idx].categoryAxis || \"$$default$$\";\n if (!unique.hasOwnProperty(name)) {\n unique[name] = true;\n categoryAxes.push(name);\n }\n }\n\n var groups = [];\n for (var axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n var axis = categoryAxes[axisIx];\n var axisSeries = groupSeries(series, axis, axisIx);\n if (axisSeries.length === 0) {\n continue;\n }\n\n groups.push(axisSeries);\n }\n\n return groups;\n };\n\n CategoricalPlotArea.prototype.createBarChart = function createBarChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var barChart = new BarChart(this, Object.assign({\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(barChart, pane);\n };\n\n CategoricalPlotArea.prototype.createRangeBarChart = function createRangeBarChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var rangeColumnChart = new RangeBarChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(rangeColumnChart, pane);\n };\n\n CategoricalPlotArea.prototype.createBulletChart = function createBulletChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var bulletChart = new BulletChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(bulletChart, pane);\n };\n\n CategoricalPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var lineChart = new LineChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(lineChart, pane);\n };\n\n CategoricalPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var areaChart = new AreaChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(areaChart, pane);\n };\n\n CategoricalPlotArea.prototype.createRangeAreaChart = function createRangeAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var rangeAreaChart = new RangeAreaChart(this, {\n invertAxes: this.invertAxes,\n series: series,\n clip: pane.options.clip\n });\n\n this.appendChart(rangeAreaChart, pane);\n };\n\n CategoricalPlotArea.prototype.createOHLCChart = function createOHLCChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new OHLCChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n };\n\n CategoricalPlotArea.prototype.createCandlestickChart = function createCandlestickChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new CandlestickChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n };\n\n CategoricalPlotArea.prototype.createBoxPlotChart = function createBoxPlotChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new BoxPlotChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n };\n\n CategoricalPlotArea.prototype.createWaterfallChart = function createWaterfallChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var waterfallChart = new WaterfallChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(waterfallChart, pane);\n };\n\n CategoricalPlotArea.prototype.axisRequiresRounding = function axisRequiresRounding (categoryAxisName, categoryAxisIndex) {\n var this$1 = this;\n\n var centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n for (var seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n var currentSeries = this$1.series[seriesIx];\n if (inArray(currentSeries.type, AREA_SERIES)) {\n var line = currentSeries.line;\n if (line && line.style === STEP) {\n centeredSeries.push(currentSeries);\n }\n }\n }\n\n for (var seriesIx$1 = 0; seriesIx$1 < centeredSeries.length; seriesIx$1++) {\n var seriesAxis = centeredSeries[seriesIx$1].categoryAxis || \"\";\n if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n return true;\n }\n }\n };\n\n CategoricalPlotArea.prototype.aggregatedAxis = function aggregatedAxis (categoryAxisName, categoryAxisIndex) {\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var seriesAxis = series[seriesIx].categoryAxis || \"\";\n if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n return true;\n }\n }\n };\n\n CategoricalPlotArea.prototype.createCategoryAxesLabels = function createCategoryAxesLabels () {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n if (axes[i] instanceof CategoryAxis) {\n axes[i].createLabels();\n }\n }\n };\n\n CategoricalPlotArea.prototype.createCategoryAxes = function createCategoryAxes (panes) {\n var this$1 = this;\n\n var invertAxes = this.invertAxes;\n var definitions = [].concat(this.options.categoryAxis);\n var axes = [];\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var categories = axisOptions.categories; if ( categories === void 0 ) categories = [];\n axisOptions = deepExtend({\n vertical: invertAxes,\n reverse: !invertAxes && this$1.chartService.rtl,\n axisCrossingValue: invertAxes ? MAX_VALUE : 0\n }, axisOptions);\n\n if (!defined(axisOptions.justified)) {\n axisOptions.justified = this$1.isJustified();\n }\n\n if (this$1.axisRequiresRounding(name, i)) {\n axisOptions.justified = false;\n }\n\n var categoryAxis = (void 0);\n\n if (isDateAxis(axisOptions, categories[0])) {\n axisOptions._forecast = this$1.trendlineAggregateForecast();\n categoryAxis = new DateCategoryAxis(axisOptions, this$1.chartService);\n } else {\n categoryAxis = new CategoryAxis(axisOptions, this$1.chartService);\n }\n\n definitions[i].categories = categoryAxis.options.srcCategories;\n\n if (name) {\n if (this$1.namedCategoryAxes[name]) {\n throw new Error((\"Category axis with name \" + name + \" is already defined\"));\n }\n this$1.namedCategoryAxes[name] = categoryAxis;\n }\n\n categoryAxis.axisIndex = i;\n axes.push(categoryAxis);\n this$1.appendAxis(categoryAxis);\n }\n }\n\n var primaryAxis = this.categoryAxis || axes[0];\n this.categoryAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisY = primaryAxis;\n } else {\n this.axisX = primaryAxis;\n }\n };\n\n CategoricalPlotArea.prototype.isJustified = function isJustified () {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (!inArray(currentSeries.type, AREA_SERIES)) {\n return false;\n }\n }\n\n return true;\n };\n\n CategoricalPlotArea.prototype.createValueAxes = function createValueAxes (panes) {\n var this$1 = this;\n\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var definitions = [].concat(this.options.valueAxis);\n var invertAxes = this.invertAxes;\n var baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n var axes = [];\n\n if (this.stack100) {\n baseOptions.roundToMajorUnit = false;\n baseOptions.labels = { format: \"P0\" };\n }\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n if (i === 0 && range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var axisType = (void 0);\n if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n var valueAxis = new axisType(range.min, range.max,\n deepExtend({}, baseOptions, axisOptions),\n this$1.chartService\n );\n\n if (name) {\n if (this$1.namedValueAxes[name]) {\n throw new Error((\"Value axis with name \" + name + \" is already defined\"));\n }\n this$1.namedValueAxes[name] = valueAxis;\n }\n valueAxis.axisIndex = i;\n\n axes.push(valueAxis);\n this$1.appendAxis(valueAxis);\n }\n }\n\n var primaryAxis = this.valueAxis || axes[0];\n this.valueAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisX = primaryAxis;\n } else {\n this.axisY = primaryAxis;\n }\n };\n\n CategoricalPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var pane = this.pointPane(point);\n var categories = [];\n var values = [];\n\n if (!pane) {\n return;\n }\n\n var allAxes = pane.axes;\n for (var i = 0; i < allAxes.length; i++) {\n var axis = allAxes[i];\n if (axis.getValue) {\n appendIfNotNull(values, axis.getValue(point));\n } else {\n appendIfNotNull(categories, axis.getCategory(point));\n }\n }\n\n if (categories.length === 0) {\n appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n }\n\n if (categories.length > 0 && values.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n category: singleItemOrArray(categories),\n value: singleItemOrArray(values)\n });\n }\n };\n\n CategoricalPlotArea.prototype.pointPane = function pointPane (point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n if (currentPane.contentBox.containsPoint(point)) {\n return currentPane;\n }\n }\n };\n\n CategoricalPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n updateAxisOptions(this.options, axis, options);\n updateAxisOptions(this.originalOptions, axis, options);\n };\n\n return CategoricalPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axis, options) {\n var axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n deepExtend(axesOptions[axis.axisIndex], options);\n}\n\nfunction groupSeries(series, axis, axisIx) {\n return grep(series, function(s) {\n return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n });\n}\n\nsetDefaultOptions(CategoricalPlotArea, {\n categoryAxis: {},\n valueAxis: {}\n});\n\ndeepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default CategoricalPlotArea;\n","import Class from './class';\n\nvar Observable = (function (Class) {\n function Observable() {\n Class.call(this);\n\n this._events = {};\n }\n\n if ( Class ) Observable.__proto__ = Class;\n Observable.prototype = Object.create( Class && Class.prototype );\n Observable.prototype.constructor = Observable;\n\n Observable.prototype.bind = function bind (eventName, handlers, one) {\n var arguments$1 = arguments;\n var this$1 = this;\n\n var eventNames = getArray(eventName);\n var handlersIsFunction = isFunction(handlers);\n var length = eventNames.length;\n\n if (handlers === undefined) {\n for (var field in eventName) {\n this$1.bind(field, eventName[field]);\n }\n return this;\n }\n\n var loop = function ( idx ) {\n var eventName$1 = eventNames[idx];\n\n var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n if (one) {\n var original = handler;\n handler = function () { // eslint-disable-line no-loop-func\n this$1.unbind(eventName$1, handler);\n original.apply(this$1, arguments$1);\n };\n handler.original = original;\n }\n var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n events.push(handler);\n }\n };\n\n for (var idx = 0; idx < length; idx++) loop( idx );\n\n return this;\n };\n\n Observable.prototype.one = function one (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n };\n\n Observable.prototype.first = function first (eventName, handlers) {\n var this$1 = this;\n\n var eventNames = getArray(eventName);\n var handlersIsFunction = isFunction(handlers);\n\n for (var idx = 0, length = eventNames.length; idx < length; idx++) {\n var eventName$1 = eventNames[idx];\n\n var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n events.unshift(handler);\n }\n }\n\n return this;\n };\n\n Observable.prototype.trigger = function trigger (eventName, e) {\n var this$1 = this;\n if ( e === void 0 ) e = {};\n\n var events = this._events[eventName];\n\n if (events) {\n var length = events.length;\n\n e.sender = this;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (var idx = 0; idx < length; idx++) {\n events[idx].call(this$1, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n };\n\n Observable.prototype.unbind = function unbind (eventName, handler) {\n var events = this._events[eventName];\n\n if (eventName === undefined) {\n this._events = {};\n } else if (events) {\n if (handler) {\n for (var idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n this._events[eventName] = [];\n }\n }\n\n return this;\n };\n\n return Observable;\n}(Class));\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction getArray(value) {\n return typeof value === \"string\" ? [ value ] : value;\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nfunction isDefaultPrevented() {\n return this._defaultPrevented === true;\n}\n\nexport default Observable;","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementPadding, elementScale, elementSize, elementOffset } from '../util';\n\nvar events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n];\n\nvar Surface = (function (Observable) {\n function Surface(element, options) {\n Observable.call(this);\n\n this.options = Object.assign({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n if ( Observable ) Surface.__proto__ = Observable;\n Surface.prototype = Object.create( Observable && Observable.prototype );\n Surface.prototype.constructor = Surface;\n\n Surface.prototype.draw = function draw (element) {\n this._visual.children.push(element);\n };\n\n Surface.prototype.clear = function clear () {\n this._visual.children = [];\n };\n\n Surface.prototype.destroy = function destroy () {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n var this$1 = this;\n\n var domNode = eventElement(e);\n var node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this$1.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n return this._visual;\n };\n\n Surface.prototype.getSize = function getSize () {\n return elementSize(this.element);\n };\n\n Surface.prototype.currentSize = function currentSize (size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n };\n\n Surface.prototype.setSize = function setSize (size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n };\n\n Surface.prototype.resize = function resize (force) {\n var size = this.getSize();\n var currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n };\n\n Surface.prototype.size = function size (value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n this._suspendedTracking = true;\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n this._suspendedTracking = false;\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {};\n\n Surface.prototype._resize = function _resize () {};\n\n Surface.prototype._handler = function _handler (eventName) {\n var this$1 = this;\n\n return function (e) {\n var node = this$1.eventTarget(e);\n if (node && !this$1._suspendedTracking) {\n this$1.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n };\n\n Surface.prototype._elementOffset = function _elementOffset () {\n var element = this.element;\n var padding = elementPadding(element);\n var ref = elementOffset(element);\n var left = ref.left;\n var top = ref.top;\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n };\n\n Surface.prototype._surfacePoint = function _surfacePoint (e) {\n var offset = this._elementOffset();\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n\n var inverseTransform = elementScale(this.element).invert();\n var point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n };\n\n return Surface;\n}(Observable));\n\nexport default Surface;\n","import { Class } from '../common';\n\nvar BaseNode = (function (Class) {\n function BaseNode(srcElement) {\n Class.call(this);\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n if ( Class ) BaseNode.__proto__ = Class;\n BaseNode.prototype = Object.create( Class && Class.prototype );\n BaseNode.prototype.constructor = BaseNode;\n\n BaseNode.prototype.destroy = function destroy () {\n var this$1 = this;\n\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n this$1.childNodes[i].destroy();\n }\n\n this.parent = null;\n };\n\n BaseNode.prototype.load = function load () {};\n\n BaseNode.prototype.observe = function observe () {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n };\n\n BaseNode.prototype.append = function append (node) {\n this.childNodes.push(node);\n node.parent = this;\n };\n\n BaseNode.prototype.insertAt = function insertAt (node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n };\n\n BaseNode.prototype.remove = function remove (index, count) {\n var this$1 = this;\n\n var end = index + count;\n for (var i = index; i < end; i++) {\n this$1.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n };\n\n BaseNode.prototype.removeSelf = function removeSelf () {\n this.clear();\n this.destroy();\n };\n\n BaseNode.prototype.clear = function clear () {\n this.remove(0, this.childNodes.length);\n };\n\n BaseNode.prototype.invalidate = function invalidate () {\n if (this.parent) {\n this.parent.invalidate();\n }\n };\n\n BaseNode.prototype.geometryChange = function geometryChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.optionsChange = function optionsChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.childrenChange = function childrenChange (e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n };\n\n return BaseNode;\n}(Class));\n\nexport default BaseNode;","import { defined } from '../../util';\n\nexport default function renderAttr(name, value) {\n return (defined(value) && value !== null) ? (\" \" + name + \"=\\\"\" + value + \"\\\" \") : \"\";\n}","import renderAttr from './render-attribute';\n\nexport default function renderAllAttr(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n}","import { defined } from '../../util';\n\nexport default function renderStyle(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n}","var NODE_MAP = {};\n\nexport default NODE_MAP;","/**\n * @hidden\n */\nexport var isWindowAvailable = function () {\n return typeof window !== 'undefined';\n};\n","/* tslint:disable:object-literal-sort-keys max-line-length */\nimport { isWindowAvailable } from './util';\nvar agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)(\\.(\\d+(\\.\\d+)?))?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n};\nvar osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n};\nvar desktopBrowserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\nvar mobileBrowserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n};\nvar testRx = function (agent, rxs, dflt) {\n for (var rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined ? dflt : agent;\n};\n/**\n * A function that detects the mobile browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Linux; Android 8.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.3 Chrome/61.0.3163.81 Mobile Safari/537.36';\n * detectMobileOS(userAgent); // { android: true };\n * ```\n */\nexport var detectMobileOS = function (ua) {\n var minorVersion;\n var match = [];\n for (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (!match) {\n continue;\n }\n if (agent === 'windows' && 'plugins' in window.navigator) {\n return null;\n } // Break if not Metro/Mobile Windows\n var os = {};\n os.device = agent;\n os.browser = testRx(ua, mobileBrowserRxs, 'default');\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = match[3] ? match[3].replace('_', '.') : '.0';\n minorVersion = os.minorVersion.replace('.', '').substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion +\n (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0'));\n os.cordova = typeof window.PhoneGap !== undefined\n || typeof window.cordova !== undefined; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone\n || (/file|local|wmapp/).test(window.location.protocol)\n || os.cordova; // Use file protocol to detect appModes.\n return os;\n }\n }\n return null;\n};\n/**\n * A function that detects the desktop browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19';\n * detectDesktopBrowser(userAgent); // { chrome: true, webkit: true };\n * ```\n */\nexport var detectDesktopBrowser = function (ua) {\n var browserInfo = null;\n var match = [];\n for (var agent in desktopBrowserRxs) {\n if (desktopBrowserRxs.hasOwnProperty(agent)) {\n match = ua.match(desktopBrowserRxs[agent]);\n if (match) {\n browserInfo = {};\n browserInfo[agent] = true;\n browserInfo[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true;\n browserInfo.version = parseInt(document.documentMode || match[2], 10);\n break;\n }\n }\n }\n return browserInfo;\n};\nvar userAgent = isWindowAvailable() && window.navigator ? window.navigator.userAgent : null;\n/**\n * A constant holding the desktop browser info. The variable persists the result of the detectDesktopBrowser(window.navigator.userAgent) call.\n * If no desktop browser is detected, the constant will be `null`.\n */\nexport var browser = userAgent ? detectDesktopBrowser(userAgent) : null;\n/**\n * A constant holding the mobile OS info. The variable persists the result of the detectMobileOS(window.navigator.userAgent) call.\n * If no mobile OS is detected, the constant will be `null`.\n */\nexport var mobileOS = userAgent ? detectMobileOS(userAgent) : null;\n/**\n * A constant reporting the browser `touch` events support.\n */\nexport var touch = isWindowAvailable() && 'ontouchstart' in window;\n/**\n * @hidden\n * A constant reporting the browser `msPointers` events support.\n */\nexport var msPointers = browser && !browser.chrome && window.MSPointerEvent;\n/**\n * A constant reporting the browser `pointers` events support.\n */\nexport var pointers = browser && !browser.chrome && window.PointerEvent;\n/**\n * A constant reporting whether the browser is touch enabled.\n */\nexport var touchEnabled = mobileOS && (touch || msPointers || pointers);\n","import { fieldList } from './field-list';\nvar getterCache = {};\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n var fields = fieldList(field);\n getterCache[field] = function (obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}\n","var reComment = /\\/\\*[\\s\\S]*?\\*\\//g;\n/*\n([^\\s:;]+?)\\s*:\\s* # Property name and colon\n(\n (?:\n (?: # Begin alternation\n url\\( # Match 'url('\n \\s*\n (?:\n (?:[^\"')\\\\]|\\\\.)* # Content inside url(), excluding quotes and closing parenthesis\n |\n \"(?:[^\"\\\\]|\\\\.)*\" # Double-quoted strings, handling escaped characters\n |\n '(?:[^'\\\\]|\\\\.)*' # Single-quoted strings, handling escaped characters\n )\n \\s*\n \\)\n |\n \"(?:[^\"\\\\]|\\\\.)*\" # Double-quoted strings, handling escaped characters\n |\n '(?:[^'\\\\]|\\\\.)*' # Single-quoted strings, handling escaped characters\n |\n [^;\"'] # Any character except ';', double or single quotes\n )*? # Repeat zero or more times, non-greedy\n \\s*\n )\n)\n(?=;|$) # Lookahead for ';' or end of string\n*/\nvar reDeclaration = /([^\\s:;]+?)\\s*:\\s*((?:(?:url\\(\\s*(?:(?:[^\"')\\\\]|\\\\.)*|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')\\s*\\)|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|[^;\"'])*?)\\s*)(?=;|$)/gi;\nvar reDoubleQuoted = /"|"|"/gi;\nvar reSingleQuoted = /'|'|'/gi;\nvar doubleQuote = '\"';\nvar singleQuote = \"'\";\nvar empty = '';\nfunction replaceQuoteEntities(str) {\n return str.replace(reDoubleQuoted, doubleQuote)\n .replace(reSingleQuoted, singleQuote);\n}\n/**\n * Parse inline styles string into object.\n *\n * @param styleString - inline styles string\n * @returns object with styles\n */\nexport function parseInlineStyles(styleString) {\n var styleObject = {};\n var input = replaceQuoteEntities((styleString || empty).replace(reComment, empty));\n var match = reDeclaration.exec(input), property, value;\n while (match !== null) {\n property = match[1].trim();\n value = match[2].trim();\n styleObject[property] = value;\n match = reDeclaration.exec(input);\n }\n return styleObject;\n}\n","import { parseInlineStyles } from '@progress/kendo-common';\r\n\r\nexport var setStyle = function (element, styleString) {\r\n var styles = parseInlineStyles(styleString);\r\n Object.keys(styles).forEach(function (key) {\r\n element.style[key] = styles[key];\r\n });\r\n};\r\n\r\nvar styleAttr = 'data-style';\r\nexport var replaceStyleAttr = function (html) { return (html || '').replace(/\\sstyle=/g, ' ' + styleAttr + '='); };\r\nexport var restoreStyleAttr = function (container) {\r\n Array.from(container.querySelectorAll('[' + styleAttr +']')).forEach(function (element) {\r\n var styleString = element.getAttribute(styleAttr);\r\n element.removeAttribute(styleAttr);\r\n setStyle(element, styleString);\r\n });\r\n};\r\n\r\nexport var setInnerHTML = function (container, html) {\r\n container.innerHTML = replaceStyleAttr(html);\r\n restoreStyleAttr(container);\r\n};\r\n","var SVG_NS = \"http://www.w3.org/2000/svg\";\nvar NONE = \"none\";\nvar POINT_DIGITS = 3;\n\nexport { SVG_NS, NONE, POINT_DIGITS };","import { replaceStyleAttr, restoreStyleAttr, setInnerHTML } from '../../util/element-set-styles-safe';\nimport { SVG_NS } from '../constants';\n\nvar renderSVG = function(container, svg) {\n setInnerHTML(container, svg);\n};\n\nif (typeof document !== \"undefined\") {\n var testFragment = \"<svg xmlns='\" + SVG_NS + \"'></svg>\";\n var testContainer = document.createElement(\"div\");\n var hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(replaceStyleAttr(svg), \"text/xml\");\n restoreStyleAttr(chartDoc);\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n}\n\nexport default renderSVG;\n","var ampRegExp = /&/g;\nvar ltRegExp = /</g;\nvar quoteRegExp = /\"/g;\nvar aposRegExp = /'/g;\nvar gtRegExp = />/g;\n\nexport default function htmlEncode(value) {\n return String(value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n}","import BaseNode from '../core/base-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport renderStyle from './utils/render-style';\nimport NODE_MAP from './node-map';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS, NONE } from './constants';\nimport { support, htmlEncode } from '../common';\nimport { defined } from '../util';\nimport { PATTERN } from '../core/constants';\n\nvar TRANSFORM = \"transform\";\nvar DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n};\n\nfunction isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\" || value.nodeType === PATTERN));\n}\n\nfunction baseUrl() {\n var base = document.getElementsByTagName(\"base\")[0];\n var href = document.location.href;\n var url = \"\";\n\n if (base && !(support.browser || {}).msie) {\n var hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n}\n\nvar Node = (function (BaseNode) {\n function Node(srcElement, options) {\n BaseNode.call(this, srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n if ( BaseNode ) Node.__proto__ = BaseNode;\n Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n Node.prototype.constructor = Node;\n\n Node.prototype.destroy = function destroy () {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n BaseNode.prototype.destroy.call(this);\n };\n\n Node.prototype.load = function load (elements, pos) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1.options);\n\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n var element = this$1.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n };\n\n Node.prototype.root = function root () {\n var root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n };\n\n Node.prototype.attachTo = function attachTo (domElement, pos) {\n var container = document.createElement(\"div\");\n renderSVG(container,\n \"<svg xmlns='\" + SVG_NS + \"' version='1.1'>\" +\n this.render() +\n \"</svg>\"\n );\n\n var element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n };\n\n Node.prototype.setElement = function setElement (element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n var nodes = this.childNodes;\n for (var i = 0; i < nodes.length; i++) {\n var childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n };\n\n Node.prototype.clear = function clear () {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n };\n\n Node.prototype.removeSelf = function removeSelf () {\n if (this.element) {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n BaseNode.prototype.removeSelf.call(this);\n };\n\n Node.prototype.template = function template () {\n return this.renderChildren();\n };\n\n Node.prototype.render = function render () {\n return this.template();\n };\n\n Node.prototype.renderChildren = function renderChildren () {\n var nodes = this.childNodes;\n var output = \"\";\n\n for (var i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n BaseNode.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.accessibilityOptionsChange = function accessibilityOptionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n\n if (field === \"role\") {\n if (value) {\n this.attr(\"role\", value);\n } else {\n this.removeAttr(\"role\");\n }\n } else if (field === \"ariaLabel\") {\n if (value) {\n this.attr(\"aria-label\", htmlEncode(value));\n } else {\n this.removeAttr(\"aria-label\");\n }\n } else if (field === \"ariaRoleDescription\") {\n if (value) {\n this.attr(\"aria-roledescription\", htmlEncode(value));\n } else {\n this.removeAttr(\"aria-roledescription\");\n }\n } else if (field === \"ariaChecked\") {\n if (defined(value)) {\n this.attr(\"aria-checked\", value);\n } else {\n this.removeAttr(\"aria-checked\");\n }\n } else if (field === \"className\") {\n this.className(value);\n }\n };\n\n Node.prototype.attr = function attr (name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n };\n\n Node.prototype.allAttr = function allAttr (attrs) {\n var this$1 = this;\n\n for (var i = 0; i < attrs.length; i++) {\n this$1.attr(attrs[i][0], attrs[i][1]);\n }\n };\n\n Node.prototype.toggleAttr = function toggleAttr (name, value) {\n if (value) {\n this.attr(name, value);\n } else {\n this.removeAttr(name);\n }\n };\n\n Node.prototype.css = function css (name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n };\n\n Node.prototype.allCss = function allCss (styles) {\n var this$1 = this;\n\n for (var i = 0; i < styles.length; i++) {\n this$1.css(styles[i][0], styles[i][1]);\n }\n };\n\n Node.prototype.className = function className (value) {\n var this$1 = this;\n\n if (this.element) {\n (ref = this.element.classList).remove.apply(ref, this.element.classList);\n value.split(\" \").forEach(function (item) {\n this$1.element.classList.add(item);\n });\n }\n var ref;\n };\n\n Node.prototype.removeAttr = function removeAttr (name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n };\n\n Node.prototype.mapTransform = function mapTransform (transform) {\n var attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n };\n\n Node.prototype.renderTransform = function renderTransform () {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n };\n\n Node.prototype.transformChange = function transformChange (value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n };\n\n Node.prototype.mapStyle = function mapStyle () {\n var options = this.srcElement.options;\n var style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n };\n\n Node.prototype.renderStyle = function renderStyle$1 () {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n };\n\n Node.prototype.renderOpacity = function renderOpacity () {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n };\n\n Node.prototype.renderId = function renderId () {\n return renderAttr(\"id\", this.srcElement.options.id);\n };\n\n Node.prototype.renderClassName = function renderClassName () {\n return renderAttr(\"class\", this.srcElement.options.className);\n };\n\n Node.prototype.renderRole = function renderRole () {\n return renderAttr(\"role\", this.srcElement.options.role);\n };\n\n Node.prototype.renderAriaLabel = function renderAriaLabel () {\n var value = this.srcElement.options.ariaLabel;\n if (value) {\n value = htmlEncode(value);\n }\n return renderAttr(\"aria-label\", value);\n };\n\n Node.prototype.renderAriaRoleDescription = function renderAriaRoleDescription () {\n var value = this.srcElement.options.ariaRoleDescription;\n if (value) {\n value = htmlEncode(value);\n }\n return renderAttr(\"aria-roledescription\", value);\n };\n\n Node.prototype.renderAriaChecked = function renderAriaChecked () {\n return renderAttr(\"aria-checked\", this.srcElement.options.ariaChecked);\n };\n\n Node.prototype.createDefinitions = function createDefinitions () {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n if (srcElement) {\n var options = srcElement.options;\n var hasDefinitions;\n\n for (var field in DefinitionMap) {\n var definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n };\n\n Node.prototype.definitionChange = function definitionChange (e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n };\n\n Node.prototype.updateDefinition = function updateDefinition (type, value) {\n var definitions = this.definitions;\n var current = definitions[type];\n var attr = DefinitionMap[type];\n var definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n };\n\n Node.prototype.clearDefinitions = function clearDefinitions () {\n var definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n };\n\n Node.prototype.renderDefinitions = function renderDefinitions () {\n return renderAllAttr(this.mapDefinitions());\n };\n\n Node.prototype.mapDefinitions = function mapDefinitions () {\n var this$1 = this;\n\n var definitions = this.definitions;\n var attrs = [];\n\n for (var field in definitions) {\n attrs.push([ DefinitionMap[field], this$1.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n };\n\n Node.prototype.refUrl = function refUrl (id) {\n var skipBaseHref = (this.options || {}).skipBaseHref;\n var baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n var base = skipBaseHref ? '' : baseHref;\n return (\"url(\" + base + \"#\" + id + \")\");\n };\n\n Node.prototype.baseUrl = function baseUrl$1 () {\n return baseUrl();\n };\n\n return Node;\n}(BaseNode));\n\nexport default Node;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar GradientStopNode = (function (Node) {\n function GradientStopNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) GradientStopNode.__proto__ = Node;\n GradientStopNode.prototype = Object.create( Node && Node.prototype );\n GradientStopNode.prototype.constructor = GradientStopNode;\n\n GradientStopNode.prototype.template = function template () {\n return (\"<stop \" + (this.renderOffset()) + \" \" + (this.renderStyle()) + \" />\");\n };\n\n GradientStopNode.prototype.renderOffset = function renderOffset () {\n return renderAttr(\"offset\", this.srcElement.offset());\n };\n\n GradientStopNode.prototype.mapStyle = function mapStyle () {\n var srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n };\n\n GradientStopNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n };\n\n return GradientStopNode;\n}(Node));\n\nexport default GradientStopNode;","import GradientStopNode from './gradient-stop-node';\nimport BaseNode from '../core/base-node';\nimport Node from './node';\nimport renderAllAttr from './utils/render-all-attributes';\n\nvar GradientNode = (function (Node) {\n function GradientNode(srcElement) {\n Node.call(this, srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n if ( Node ) GradientNode.__proto__ = Node;\n GradientNode.prototype = Object.create( Node && Node.prototype );\n GradientNode.prototype.constructor = GradientNode;\n\n GradientNode.prototype.loadStops = function loadStops () {\n var this$1 = this;\n\n var stops = this.srcElement.stops;\n var element = this.element;\n\n for (var idx = 0; idx < stops.length; idx++) {\n var stopNode = new GradientStopNode(stops[idx]);\n this$1.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n };\n\n GradientNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n };\n\n GradientNode.prototype.renderCoordinates = function renderCoordinates () {\n return renderAllAttr(this.mapCoordinates());\n };\n\n GradientNode.prototype.mapSpace = function mapSpace () {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n };\n\n return GradientNode;\n}(Node));\n\nexport default GradientNode;","import GradientNode from './gradient-node';\n\nvar LinearGradientNode = (function (GradientNode) {\n function LinearGradientNode () {\n GradientNode.apply(this, arguments);\n }\n\n if ( GradientNode ) LinearGradientNode.__proto__ = GradientNode;\n LinearGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n LinearGradientNode.prototype.constructor = LinearGradientNode;\n\n LinearGradientNode.prototype.template = function template () {\n return (\"<linearGradient id='\" + (this.id) + \"' \" + (this.renderCoordinates()) + \">\" + (this.renderChildren()) + \"</linearGradient>\");\n };\n\n LinearGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var start = srcElement.start();\n var end = srcElement.end();\n var attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n };\n\n return LinearGradientNode;\n}(GradientNode));\n\nexport default LinearGradientNode;","import GradientNode from './gradient-node';\n\nvar RadialGradientNode = (function (GradientNode) {\n function RadialGradientNode () {\n GradientNode.apply(this, arguments);\n }\n\n if ( GradientNode ) RadialGradientNode.__proto__ = GradientNode;\n RadialGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n RadialGradientNode.prototype.constructor = RadialGradientNode;\n\n RadialGradientNode.prototype.template = function template () {\n return (\"<radialGradient id='\" + (this.id) + \"' \" + (this.renderCoordinates()) + \">\" + (this.renderChildren()) + \"</radialGradient>\");\n };\n\n RadialGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var center = srcElement.center();\n var radius = srcElement.radius();\n var attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n };\n\n return RadialGradientNode;\n}(GradientNode));\n\nexport default RadialGradientNode;","import Node from './node';\n\nexport var PatternNode = (function (Node) {\n function PatternNode(pattern) {\n Node.call(this, pattern);\n\n this.id = pattern.id;\n this.load(pattern.children);\n }\n\n if ( Node ) PatternNode.__proto__ = Node;\n PatternNode.prototype = Object.create( Node && Node.prototype );\n PatternNode.prototype.constructor = PatternNode;\n\n PatternNode.prototype.template = function template () {\n var width = this.srcElement.size().getWidth();\n var height = this.srcElement.size().getHeight();\n\n return \"<pattern id='\" + (this.srcElement.id) + \"' width='\" + width + \"' height='\" + height + \"' patternUnits='userSpaceOnUse'>\" +\n \"\" + (this.renderChildren()) +\n \"</pattern>\";\n };\n\n return PatternNode;\n}(Node));\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar ClipNode = (function (Node) {\n function ClipNode(srcElement) {\n Node.call(this);\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n if ( Node ) ClipNode.__proto__ = Node;\n ClipNode.prototype = Object.create( Node && Node.prototype );\n ClipNode.prototype.constructor = ClipNode;\n\n ClipNode.prototype.renderClipRule = function renderClipRule () {\n return renderAttr(\"clip-rule\", \"evenodd\");\n };\n ClipNode.prototype.template = function template () {\n return (\"<clipPath \" + (this.renderClipRule()) + \" id='\" + (this.id) + \"'>\" + (this.renderChildren()) + \"</clipPath>\");\n };\n\n return ClipNode;\n}(Node));\n\nexport default ClipNode;","import LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport LinearGradientNode from './linear-gradient-node';\nimport RadialGradientNode from './radial-gradient-node';\nimport { PatternNode } from './pattern-node';\nimport Node from './node';\nimport ClipNode from './clip-node';\nimport { PATTERN } from '../core/constants';\n\nvar DefinitionNode = (function (Node) {\n function DefinitionNode() {\n Node.call(this);\n this.definitionMap = {};\n }\n\n if ( Node ) DefinitionNode.__proto__ = Node;\n DefinitionNode.prototype = Object.create( Node && Node.prototype );\n DefinitionNode.prototype.constructor = DefinitionNode;\n\n DefinitionNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n };\n\n DefinitionNode.prototype.template = function template () {\n return (\"<defs>\" + (this.renderChildren()) + \"</defs>\");\n };\n\n DefinitionNode.prototype.definitionChange = function definitionChange (e) {\n var definitions = e.definitions;\n var action = e.action;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n };\n\n DefinitionNode.prototype.createDefinition = function createDefinition (type, item) {\n var nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n } else if (item.nodeType === PATTERN) {\n nodeType = PatternNode;\n }\n }\n return new nodeType(item);\n };\n\n DefinitionNode.prototype.addDefinitions = function addDefinitions (definitions) {\n var this$1 = this;\n\n for (var field in definitions) {\n this$1.addDefinition(field, definitions[field]);\n }\n };\n\n DefinitionNode.prototype.addDefinition = function addDefinition (type, srcElement) {\n var ref = this;\n var element = ref.element;\n var definitionMap = ref.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n if (!mapItem) {\n var node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n };\n\n DefinitionNode.prototype.removeDefinitions = function removeDefinitions (definitions) {\n var this$1 = this;\n\n for (var field in definitions) {\n this$1.removeDefinition(definitions[field]);\n }\n };\n\n DefinitionNode.prototype.removeDefinition = function removeDefinition (srcElement) {\n var definitionMap = this.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n };\n\n return DefinitionNode;\n}(Node));\n\nexport default DefinitionNode;","import BaseNode from '../core/base-node';\nimport Node from './node';\nimport DefinitionNode from './definition-node';\n\nvar RootNode = (function (Node) {\n function RootNode(options) {\n Node.call(this);\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n if ( Node ) RootNode.__proto__ = Node;\n RootNode.prototype = Object.create( Node && Node.prototype );\n RootNode.prototype.constructor = RootNode;\n\n RootNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n };\n\n RootNode.prototype.clear = function clear () {\n BaseNode.prototype.clear.call(this);\n };\n\n RootNode.prototype.template = function template () {\n return this.defs.render() + this.renderChildren();\n };\n\n RootNode.prototype.definitionChange = function definitionChange (e) {\n this.defs.definitionChange(e);\n };\n\n return RootNode;\n}(Node));\n\nexport default RootNode;","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT, PATTERN } from '../core/constants';\nimport { NONE, POINT_DIGITS } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\n\nvar ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n};\n\nvar PathNode = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) PathNode.__proto__ = Node;\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n\n PathNode.prototype.geometryChange = function geometryChange () {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n };\n\n PathNode.prototype.optionsChange = function optionsChange (e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n var name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n this.accessibilityOptionsChange(e);\n\n Node.prototype.optionsChange.call(this, e);\n };\n\n PathNode.prototype.content = function content () {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n };\n\n PathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || undefined;\n };\n\n PathNode.prototype.mapStroke = function mapStroke (stroke) {\n var attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderStroke = function renderStroke () {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n };\n\n PathNode.prototype.renderDashType = function renderDashType (stroke) {\n var dashType = stroke.dashType;\n var width = stroke.width; if ( width === void 0 ) width = 1;\n\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n var result = [];\n\n for (var i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n };\n\n PathNode.prototype.renderLinecap = function renderLinecap (stroke) {\n var dashType = stroke.dashType;\n var lineCap = stroke.lineCap;\n\n return (dashType && dashType !== SOLID) ? BUTT : lineCap;\n };\n\n PathNode.prototype.mapFill = function mapFill (fill) {\n var attrs = [];\n if (!(fill && (fill.nodeType === \"Gradient\" || fill.nodeType === PATTERN))) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderFill = function renderFill () {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n };\n\n PathNode.prototype.template = function template () {\n return \"<path \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) + \" \" + (renderAttr('d', this.renderData())) +\n \"\" + (this.renderStroke()) + (this.renderFill()) + (this.renderDefinitions()) + (this.renderTransform()) +\n (this.renderClassName()) + \" \" + (this.renderRole()) +\n (this.renderAriaLabel()) + \" \" + (this.renderAriaRoleDescription()) +\n (this.renderAriaChecked()) + \" ></path>\";\n };\n\n return PathNode;\n}(Node));\n\nexport default PathNode;\n","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nvar ArcNode = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ArcNode.__proto__ = PathNode;\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n\n ArcNode.prototype.renderData = function renderData () {\n return this.srcElement.toPath().toString(POINT_DIGITS);\n };\n\n return ArcNode;\n}(PathNode));\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nvar CircleNode = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) CircleNode.__proto__ = PathNode;\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n\n CircleNode.prototype.geometryChange = function geometryChange () {\n var center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n };\n\n CircleNode.prototype.center = function center () {\n return this.srcElement.geometry().center;\n };\n\n CircleNode.prototype.radius = function radius () {\n return this.srcElement.geometry().radius;\n };\n\n CircleNode.prototype.template = function template () {\n return \"<circle \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) +\n \"cx='\" + (this.center().x) + \"' cy='\" + (this.center().y) + \"' r='\" + (this.radius()) + \"'\" +\n (this.renderStroke()) + \" \" + (this.renderFill()) + \" \" + (this.renderDefinitions()) +\n (this.renderClassName()) + \" \" + (this.renderRole()) +\n (this.renderAriaLabel()) + \" \" + (this.renderAriaRoleDescription()) +\n (this.renderAriaChecked()) + \" \" + (this.renderTransform()) + \" ></circle>\";\n };\n\n return CircleNode;\n}(PathNode));\n\nexport default CircleNode;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar GroupNode = (function (Node) {\n function GroupNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) GroupNode.__proto__ = Node;\n GroupNode.prototype = Object.create( Node && Node.prototype );\n GroupNode.prototype.constructor = GroupNode;\n\n GroupNode.prototype.template = function template () {\n return (\"<g\" + (this.renderId() + \n this.renderTransform() + \n this.renderClassName() + \n this.renderStyle() + \n this.renderOpacity() + \n this.renderRole() + \n this.renderAriaLabel() + \n this.renderAriaRoleDescription() + \n this.renderAriaChecked() +\n this.renderDefinitions()) + \">\" + (this.renderChildren()) + \"</g>\");\n };\n\n GroupNode.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"transform\") {\n this.transformChange(value);\n }\n\n this.accessibilityOptionsChange(e);\n\n Node.prototype.optionsChange.call(this, e);\n };\n\n return GroupNode;\n}(Node));\n\nexport default GroupNode;\n","import PathNode from './path-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport { htmlEncode } from '../common';\n\nvar ImageNode = (function (PathNode) {\n function ImageNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ImageNode.__proto__ = PathNode;\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n\n ImageNode.prototype.geometryChange = function geometryChange () {\n this.allAttr(this.mapPosition());\n this.invalidate();\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n PathNode.prototype.optionsChange.call(this, e);\n };\n\n ImageNode.prototype.mapPosition = function mapPosition () {\n var rect = this.srcElement.rect();\n var tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n };\n\n ImageNode.prototype.renderPosition = function renderPosition () {\n return renderAllAttr(this.mapPosition());\n };\n\n ImageNode.prototype.mapSource = function mapSource (encode) {\n var src = this.srcElement.src();\n\n if (encode) {\n src = htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n };\n\n ImageNode.prototype.renderSource = function renderSource () {\n return renderAllAttr(this.mapSource(true));\n };\n\n ImageNode.prototype.template = function template () {\n return \"<image preserveAspectRatio='none' \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderTransform()) + \" \" + (this.renderOpacity()) +\n (this.renderPosition()) + \" \" + (this.renderSource()) + \" \" + (this.renderDefinitions()) +\n (this.renderClassName()) + \" \" + (this.renderRole()) +\n (this.renderAriaLabel()) + \" \" + (this.renderAriaRoleDescription()) +\n (this.renderAriaChecked()) + \" >\" +\n \"</image>\";\n };\n\n return ImageNode;\n}(PathNode));\n\nexport default ImageNode;\n","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nvar MultiPathNode = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n\n MultiPathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || 'undefined';\n };\n\n return MultiPathNode;\n}(PathNode));\n\nexport default MultiPathNode;\n","import PathNode from './path-node';\n\nvar RectNode = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) RectNode.__proto__ = PathNode;\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n\n RectNode.prototype.geometryChange = function geometryChange () {\n var geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.attr(\"rx\", geometry.cornerRadius[0]);\n this.attr(\"ry\", geometry.cornerRadius[1]);\n this.invalidate();\n };\n\n RectNode.prototype.size = function size () {\n return this.srcElement.geometry().size;\n };\n\n RectNode.prototype.origin = function origin () {\n return this.srcElement.geometry().origin;\n };\n\n RectNode.prototype.rx = function rx () {\n return this.srcElement.geometry().cornerRadius[0];\n };\n\n RectNode.prototype.ry = function ry () {\n return this.srcElement.geometry().cornerRadius[1];\n };\n\n RectNode.prototype.template = function template () {\n return \"<rect \" + (this.renderId()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) + \" x='\" + (this.origin().x) + \"' y='\" + (this.origin().y) + \"' \" +\n \"rx='\" + (this.rx()) + \"' ry='\" + (this.ry()) + \"' \" +\n \"width='\" + (this.size().width) + \"' height='\" + (this.size().height) + \"' \" + (this.renderStroke()) + \" \" +\n (this.renderFill()) + \" \" + (this.renderDefinitions()) + \" \" + (this.renderTransform()) +\n (this.renderClassName()) + \" \" + (this.renderRole()) +\n (this.renderAriaLabel()) + \" \" + (this.renderAriaRoleDescription()) +\n (this.renderAriaChecked()) + \" />\";\n };\n\n return RectNode;\n}(PathNode));\n\nexport default RectNode;\n","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\n\nvar ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\nfunction decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n var element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, function (match) {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n}\n\nif (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n}\n\nvar TextNode = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) TextNode.__proto__ = PathNode;\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n\n TextNode.prototype.geometryChange = function geometryChange () {\n var pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n };\n\n TextNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n PathNode.prototype.content.call(this, this.srcElement.content());\n }\n\n PathNode.prototype.optionsChange.call(this, e);\n };\n\n TextNode.prototype.mapStyle = function mapStyle (encode) {\n var style = PathNode.prototype.mapStyle.call(this, encode);\n var font = this.srcElement.options.font;\n\n if (encode) {\n font = htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n };\n\n TextNode.prototype.pos = function pos () {\n var pos = this.srcElement.position();\n var size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n };\n\n TextNode.prototype.renderContent = function renderContent () {\n var content = this.srcElement.content();\n content = decodeEntities(content);\n content = htmlEncode(content);\n\n return normalizeText(content);\n };\n\n TextNode.prototype.renderTextAnchor = function renderTextAnchor () {\n var anchor;\n\n if ((this.options || {}).rtl && !(support.browser.msie || support.browser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n };\n\n TextNode.prototype.renderPaintOrder = function renderPaintOrder () {\n var paintOrder = this.srcElement.options.paintOrder;\n return paintOrder ? renderAttr(\"paint-order\", paintOrder) : \"\";\n };\n\n TextNode.prototype.template = function template () {\n return \"<text \" + (this.renderId()) + \" \" + (this.renderTextAnchor()) + \" \" + (this.renderStyle()) + \" \" + (this.renderOpacity()) +\n \"x='\" + (this.pos().x) + \"' y='\" + (this.pos().y) + \"' \" + (this.renderStroke()) + \" \" + (this.renderTransform()) + \" \" + (this.renderDefinitions()) +\n \"\" + (this.renderPaintOrder()) +\n \"\" + (this.renderFill()) +\n (this.renderClassName()) + \" \" + (this.renderRole()) +\n (this.renderAriaLabel()) + \" \" + (this.renderAriaRoleDescription()) +\n (this.renderAriaChecked()) + \">\" + (this.renderContent()) + \"</text>\";\n };\n\n return TextNode;\n}(PathNode));\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport RootNode from './root-node';\nimport Group from '../shapes/group';\nimport transform from '../geometry/transform';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS } from './constants';\nimport { bindEvents, unbindEvents, elementStyles } from '../util';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\nvar RTL = 'rtl';\n\nfunction alignToScreen(element) {\n var ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n var left = - ctm.e % 1;\n var top = - ctm.f % 1;\n var style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n}\n\nvar Surface = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this._root = new RootNode(Object.assign({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG(this.element, this._template(''));\n\n this._rootElement = this.element.firstElementChild;\n this._rootElement.style.width = '100%';\n this._rootElement.style.height = '100%';\n this._rootElement.style.overflow = 'hidden';\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var prototypeAccessors = { type: { configurable: true } };\n\n prototypeAccessors.type.get = function () {\n return \"svg\";\n };\n\n Surface.prototype.destroy = function destroy () {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n BaseSurface.prototype.destroy.call(this);\n };\n\n Surface.prototype.translate = function translate (offset) {\n var viewBox = (Math.round(offset.x)) + \" \" + (Math.round(offset.y)) + \" \" + (this._size.width) + \" \" + (this._size.height);\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ]);\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n };\n\n Surface.prototype.svg = function svg () {\n return \"<?xml version='1.0' ?>\" + this._template();\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n var ref = this;\n var visual = ref._visual;\n var offset = ref._offset;\n\n if (offset) {\n var wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n };\n\n Surface.prototype._resize = function _resize () {\n if (this._offset) {\n this.translate(this._offset);\n }\n };\n\n Surface.prototype._template = function _template (svgStyles) {\n var styles = typeof svgStyles === 'string' ? svgStyles :\n \"style='width: 100%; height: 100%; overflow: hidden;' \";\n return (\"<svg \" + styles + \"xmlns='\" + SVG_NS + \"' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1'>\" + (this._root.render()) + \"</svg>\");\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n","var NODE_MAP = {};\n\nexport default NODE_MAP;","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport { defined } from '../util';\n\nvar Node = (function (BaseNode) {\n function Node(srcElement) {\n BaseNode.call(this, srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n if ( BaseNode ) Node.__proto__ = BaseNode;\n Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n Node.prototype.constructor = Node;\n\n Node.prototype.initClip = function initClip () {\n var clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n };\n\n Node.prototype.clear = function clear () {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n BaseNode.prototype.clear.call(this);\n };\n\n Node.prototype.clearClip = function clearClip () {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n };\n\n Node.prototype.setClip = function setClip (ctx) {\n if (this.clip) {\n ctx.beginPath();\n\n var clipNode = new NODE_MAP[this.clip.nodeType](this.clip);\n clipNode.renderPoints(ctx, this.clip);\n\n ctx.clip(\"evenodd\");\n }\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n BaseNode.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.setTransform = function setTransform (ctx) {\n if (this.srcElement) {\n var transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n };\n\n Node.prototype.loadElements = function loadElements (elements, pos, cors) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n }\n };\n\n Node.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n };\n\n Node.prototype.setOpacity = function setOpacity (ctx) {\n if (this.srcElement) {\n var opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n };\n\n Node.prototype.globalAlpha = function globalAlpha (ctx, value) {\n var opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n };\n\n Node.prototype.visible = function visible () {\n var src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n };\n\n return Node;\n}(BaseNode));\n\nexport default Node;","import Node from './node';\nimport traversable from '../mixins/traversable';\n\n\nvar GroupNode = (function (superclass) {\n function GroupNode () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) GroupNode.__proto__ = superclass;\n GroupNode.prototype = Object.create( superclass && superclass.prototype );\n GroupNode.prototype.constructor = GroupNode;\n\n GroupNode.prototype.renderTo = function renderTo (ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n };\n\n return GroupNode;\n}(traversable(Node, \"childNodes\")));\n\nexport default GroupNode;\n","import now from '../util/now';\n\nexport default function throttle(fn, delay) {\n var lastExecTime = 0;\n var timeout;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n var throttled = function() {\n var elapsed = now() - lastExecTime;\n var args = arguments;\n\n var exec = function() {\n fn.apply(null, args);\n lastExecTime = now();\n };\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n}\n","import GroupNode from './group-node';\nimport traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\n\n\nvar FRAME_DELAY = 1000 / 60;\n\nvar RootNode = (function (superclass) {\n function RootNode(canvas, size) {\n superclass.call(this);\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n var invalidateHandler = this._invalidate.bind(this);\n this.invalidate = throttle(function () {\n animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n if ( superclass ) RootNode.__proto__ = superclass;\n RootNode.prototype = Object.create( superclass && superclass.prototype );\n RootNode.prototype.constructor = RootNode;\n\n RootNode.prototype.destroy = function destroy () {\n superclass.prototype.destroy.call(this);\n this.canvas = null;\n this.ctx = null;\n };\n\n RootNode.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n };\n\n RootNode.prototype._rescale = function _rescale (scale) {\n var ref = this;\n var canvas = ref.canvas;\n var size = ref.size;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n };\n\n RootNode.prototype._devicePixelRatio = function _devicePixelRatio () {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n };\n\n RootNode.prototype._invalidate = function _invalidate (options) {\n if (!this.ctx) {\n return;\n }\n\n var fixedScale = options && options.fixedScale;\n var scale = fixedScale ? 1 : this._devicePixelRatio();\n this._rescale(scale);\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n };\n\n return RootNode;\n}(traversable(GroupNode, \"childNodes\")));\n\nexport default RootNode;\n","import { Class } from '../common';\n\nvar QuadRoot = (function (Class) {\n function QuadRoot() {\n Class.call(this);\n\n this.shapes = [];\n }\n\n if ( Class ) QuadRoot.__proto__ = Class;\n QuadRoot.prototype = Object.create( Class && Class.prototype );\n QuadRoot.prototype.constructor = QuadRoot;\n\n QuadRoot.prototype._add = function _add (shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n };\n\n QuadRoot.prototype.pointShapes = function pointShapes (point) {\n var shapes = this.shapes;\n var length = shapes.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n };\n\n QuadRoot.prototype.insert = function insert (shape, bbox) {\n this._add(shape, bbox);\n };\n\n QuadRoot.prototype.remove = function remove (shape) {\n var shapes = this.shapes;\n var length = shapes.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n };\n\n return QuadRoot;\n}(Class));\n\nexport default QuadRoot;","import QuadRoot from './quad-root';\nimport { Rect } from '../geometry';\nimport { append } from '../util';\n\nvar QuadNode = (function (QuadRoot) {\n function QuadNode(rect) {\n QuadRoot.call(this);\n this.children = [];\n this.rect = rect;\n }\n\n if ( QuadRoot ) QuadNode.__proto__ = QuadRoot;\n QuadNode.prototype = Object.create( QuadRoot && QuadRoot.prototype );\n QuadNode.prototype.constructor = QuadNode;\n\n QuadNode.prototype.inBounds = function inBounds (rect) {\n var nodeRect = this.rect;\n var nodeBottomRight = nodeRect.bottomRight();\n var bottomRight = rect.bottomRight();\n var inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n };\n\n QuadNode.prototype.pointShapes = function pointShapes (point) {\n var children = this.children;\n var length = children.length;\n var result = QuadRoot.prototype.pointShapes.call(this, point);\n for (var idx = 0; idx < length; idx++) {\n append(result, children[idx].pointShapes(point));\n }\n return result;\n };\n\n QuadNode.prototype.insert = function insert (shape, bbox) {\n var children = this.children;\n var inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n };\n\n QuadNode.prototype._initChildren = function _initChildren () {\n var ref = this;\n var rect = ref.rect;\n var children = ref.children;\n var center = rect.center();\n var halfWidth = rect.width() / 2;\n var halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n };\n\n return QuadNode;\n}(QuadRoot));\n\nexport default QuadNode;","import QuadRoot from './quad-root';\nimport QuadNode from './quad-node';\nimport { Rect } from '../geometry';\nimport { Class } from '../common';\nimport { append } from '../util';\n\nvar ROOT_SIZE = 3000;\nvar LEVEL_STEP = 10000;\nvar MAX_LEVEL = 75;\n\nvar ShapesQuadTree = (function (Class) {\n function ShapesQuadTree() {\n Class.call(this);\n\n this.initRoots();\n }\n\n if ( Class ) ShapesQuadTree.__proto__ = Class;\n ShapesQuadTree.prototype = Object.create( Class && Class.prototype );\n ShapesQuadTree.prototype.constructor = ShapesQuadTree;\n\n ShapesQuadTree.prototype.initRoots = function initRoots () {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n };\n\n ShapesQuadTree.prototype.clear = function clear () {\n var this$1 = this;\n\n var rootElements = this.rootElements;\n for (var idx = 0; idx < rootElements.length; idx++) {\n this$1.remove(rootElements[idx]);\n }\n this.initRoots();\n };\n\n ShapesQuadTree.prototype.pointShape = function pointShape (point) {\n var sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n var result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (var idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n };\n\n ShapesQuadTree.prototype.assignZindex = function assignZindex (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var zIndex = 0;\n var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n var parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this$1.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n };\n\n ShapesQuadTree.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n };\n\n ShapesQuadTree.prototype.geometryChange = function geometryChange (e) {\n this.bboxChange(e.element);\n };\n\n ShapesQuadTree.prototype.bboxChange = function bboxChange (element) {\n var this$1 = this;\n\n if (element.nodeType === \"Group\") {\n for (var idx = 0; idx < element.children.length; idx++) {\n this$1.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n };\n\n ShapesQuadTree.prototype.add = function add (elements) {\n var elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append(this.rootElements, elementsArray);\n this._insert(elementsArray);\n };\n\n ShapesQuadTree.prototype.childrenChange = function childrenChange (e) {\n var this$1 = this;\n\n if (e.action === \"remove\") {\n for (var idx = 0; idx < e.items.length; idx++) {\n this$1.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n };\n\n ShapesQuadTree.prototype._insert = function _insert (elements) {\n var this$1 = this;\n\n var element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this$1);\n if (element.nodeType === \"Group\") {\n append(elements, element.children);\n } else {\n this$1._insertShape(element);\n }\n }\n };\n\n ShapesQuadTree.prototype._insertShape = function _insertShape (shape) {\n var bbox = shape.bbox();\n if (bbox) {\n var sectors = this.getSectors(bbox);\n var x = sectors[0][0];\n var y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n var rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n };\n\n ShapesQuadTree.prototype.remove = function remove (element) {\n var this$1 = this;\n\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n var children = element.children;\n for (var idx = 0; idx < children.length; idx++) {\n this$1.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n };\n\n ShapesQuadTree.prototype.inRoot = function inRoot (sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n };\n\n ShapesQuadTree.prototype.getSectors = function getSectors (rect) {\n var bottomRight = rect.bottomRight();\n var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n var sectors = [ [], [] ];\n for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n };\n\n return ShapesQuadTree;\n}(Class));\n\nfunction zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n}\n\nexport default ShapesQuadTree;","import { defined } from '../util';\n\nvar SurfaceCursor = function SurfaceCursor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n};\n\nSurfaceCursor.prototype.clear = function clear () {\n this._resetCursor();\n};\n\nSurfaceCursor.prototype.destroy = function destroy () {\n this._resetCursor();\n delete this.element;\n};\n\nSurfaceCursor.prototype._mouseenter = function _mouseenter (e) {\n var cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n};\n\nSurfaceCursor.prototype._mouseleave = function _mouseleave () {\n this._resetCursor();\n};\n\nSurfaceCursor.prototype._shapeCursor = function _shapeCursor (e) {\n var shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n};\n\nSurfaceCursor.prototype._getCursor = function _getCursor () {\n if (this.element) {\n return this.element.style.cursor;\n }\n};\n\nSurfaceCursor.prototype._setCursor = function _setCursor (cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n};\n\nSurfaceCursor.prototype._resetCursor = function _resetCursor () {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n};\n\nexport default SurfaceCursor;\n\n","\nexport default function renderPath(ctx, path) {\n var segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n var segment = segments[0];\n var anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (var i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n var prevSeg = segments[i - 1];\n var prevOut = prevSeg.controlOut();\n var controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n}\n","import Node from './node';\nimport { parseColor } from '../common';\nimport { isTransparent, valueOrDefault } from '../util';\nimport LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport { DASH_ARRAYS, SOLID, BUTT, PATTERN } from '../core/constants';\nimport renderPath from './utils/render-path';\n\nfunction addGradientStops(gradient, stops) {\n for (var idx = 0; idx < stops.length; idx++) {\n var stop = stops[idx];\n var color = parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n}\n\nvar PathNode = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) PathNode.__proto__ = Node;\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n\n PathNode.prototype.renderTo = function renderTo (ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n };\n\n PathNode.prototype.setFill = function setFill (ctx) {\n var fill = this.srcElement.options.fill;\n var hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (fill.nodeType === PATTERN) {\n this.setPatternFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n };\n\n PathNode.prototype.setGradientFill = function setGradientFill (ctx, fill) {\n var bbox = this.srcElement.rawBBox();\n var gradient;\n\n if (fill instanceof LinearGradient) {\n var start = fill.start();\n var end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n var center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n };\n\n PathNode.prototype.setPatternFill = function setPatternFill (ctx, pattern) {\n var size = pattern.size();\n var patternCanvas = document.createElement(\"canvas\");\n var patternContext = patternCanvas.getContext(\"2d\");\n\n patternCanvas.width = size.getWidth();\n patternCanvas.height = size.getHeight();\n\n this.childNodes.length = 0;\n this.loadElements(pattern.children);\n\n var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n child.renderTo(patternContext);\n }\n\n ctx.save();\n ctx.fillStyle = ctx.createPattern(patternCanvas, \"repeat\");\n ctx.fill();\n ctx.restore();\n };\n\n PathNode.prototype.setStroke = function setStroke (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n ctx.lineJoin = valueOrDefault(stroke.lineJoin, ctx.lineJoin);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n };\n\n PathNode.prototype.dashType = function dashType () {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n };\n\n PathNode.prototype.setLineDash = function setLineDash (ctx) {\n var dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n };\n\n PathNode.prototype.setLineCap = function setLineCap (ctx) {\n var dashType = this.dashType();\n var stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n };\n\n PathNode.prototype.setLineJoin = function setLineJoin (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n };\n\n PathNode.prototype.renderPoints = function renderPoints (ctx, path) {\n renderPath(ctx, path);\n };\n\n return PathNode;\n}(Node));\n\nexport default PathNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nvar ArcNode = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ArcNode.__proto__ = PathNode;\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n\n ArcNode.prototype.renderPoints = function renderPoints (ctx) {\n var path = this.srcElement.toPath();\n renderPath(ctx, path);\n };\n\n return ArcNode;\n}(PathNode));\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nvar CircleNode = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) CircleNode.__proto__ = PathNode;\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n\n CircleNode.prototype.renderPoints = function renderPoints (ctx) {\n var ref = this.srcElement.geometry();\n var center = ref.center;\n var radius = ref.radius;\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n };\n\n return CircleNode;\n}(PathNode));\n\nexport default CircleNode;\n","import PathNode from './path-node';\nimport { createPromise } from '../util';\n\nvar ImageNode = (function (PathNode) {\n function ImageNode(srcElement, cors) {\n PathNode.call(this, srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n var img = this.img = new Image();\n var src = srcElement.src();\n\n if (cors && !(/^data:/i.test(src))) {\n img.crossOrigin = cors;\n }\n\n if (src) {\n img.src = src;\n }\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n if ( PathNode ) ImageNode.__proto__ = PathNode;\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n\n ImageNode.prototype.renderTo = function renderTo (ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n PathNode.prototype.optionsChange.call(this, e);\n }\n };\n\n ImageNode.prototype.onLoad = function onLoad () {\n this.loading.resolve();\n this.invalidate();\n };\n\n ImageNode.prototype.onError = function onError () {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n };\n\n ImageNode.prototype.drawImage = function drawImage (ctx) {\n var rect = this.srcElement.rect();\n var topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n };\n\n return ImageNode;\n}(PathNode));\n\nexport default ImageNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nvar MultiPathNode = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n\n MultiPathNode.prototype.renderPoints = function renderPoints (ctx) {\n var paths = this.srcElement.paths;\n for (var i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n };\n\n return MultiPathNode;\n}(PathNode));\n\nexport default MultiPathNode;\n","import { Path } from '../shapes/path';\nimport PathNode from './path-node';\n\nvar RectNode = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) RectNode.__proto__ = PathNode;\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n\n RectNode.prototype.renderPoints = function renderPoints (ctx) {\n var geometry = this.srcElement.geometry();\n var ref = geometry.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n var origin = geometry.origin;\n var size = geometry.size;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n PathNode.prototype.renderPoints.call(this, ctx, Path.fromRect(geometry));\n }\n };\n\n return RectNode;\n}(PathNode));\n\nexport default RectNode;\n","import PathNode from './path-node';\n\nvar TextNode = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) TextNode.__proto__ = PathNode;\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n\n TextNode.prototype.renderTo = function renderTo (ctx) {\n var text = this.srcElement;\n var pos = text.position();\n var size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (text.options.paintOrder === 'stroke') {\n this.stroke(ctx, text, pos, size);\n this.fill(ctx, text, pos, size);\n } else {\n this.fill(ctx, text, pos, size);\n this.stroke(ctx, text, pos, size);\n }\n\n ctx.restore();\n };\n\n TextNode.prototype.stroke = function stroke (ctx, text, pos, size) {\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n };\n\n TextNode.prototype.fill = function fill (ctx, text, pos, size) {\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n };\n\n return TextNode;\n}(PathNode));\n\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport { createPromise, promiseAll, bindEvents, elementSize, unbindEvents } from '../util';\nimport RootNode from './root-node';\nimport ShapesQuadTree from '../search/shapes-quad-tree';\nimport SurfaceCursor from './surface-cursor';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\n\nvar Surface = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this.element.innerHTML = this._template(this);\n\n var canvas = this.element.firstElementChild;\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n\n var size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var prototypeAccessors = { type: { configurable: true } };\n\n prototypeAccessors.type.get = function () {\n return \"canvas\";\n };\n\n Surface.prototype.destroy = function destroy () {\n BaseSurface.prototype.destroy.call(this);\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n if (this._searchTree) {\n var point = this._surfacePoint(e);\n var shape = this._searchTree.pointShape(point);\n return shape;\n }\n };\n\n Surface.prototype.image = function image () {\n var ref = this;\n var root = ref._root;\n var rootElement = ref._rootElement;\n var loadingStates = [];\n\n root.traverse(function (childNode) {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n var promise = createPromise();\n var resolveDataURL = function () {\n root._invalidate({ fixedScale: true });\n\n try {\n var data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n BaseSurface.prototype.suspendTracking.call(this);\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n BaseSurface.prototype.resumeTracking.call(this);\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n var childNodes = this._root.childNodes;\n var rootElements = [];\n for (var idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n };\n\n Surface.prototype._resize = function _resize () {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n };\n\n Surface.prototype._template = function _template () {\n return \"<canvas></canvas>\";\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n BaseSurface.prototype._enableTracking.call(this);\n };\n\n Surface.prototype._trackMouse = function _trackMouse (e) {\n if (this._suspendedTracking) {\n return;\n }\n\n var shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n var currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n","import { Class, logToConsole } from './common';\nimport SVGSurface from './svg/surface';\nimport CanvasSurface from './canvas/surface';\n\nvar instance;\nvar support;\n\nvar hasDocument = function () { return typeof document !== \"undefined\"; };\n\nvar supportsCanvas = function () { return hasDocument() &&\n document.createElement(\"canvas\").getContext; };\n\nvar supportsSVG = function () { return hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"); };\n\nvar SurfaceFactory = (function (Class) {\n function SurfaceFactory() {\n Class.call(this);\n\n this._items = [ {\n name: \"svg\",\n type: SVGSurface\n }, {\n name: \"canvas\",\n type: CanvasSurface\n } ];\n }\n\n if ( Class ) SurfaceFactory.__proto__ = Class;\n SurfaceFactory.prototype = Object.create( Class && Class.prototype );\n SurfaceFactory.prototype.constructor = SurfaceFactory;\n\n var staticAccessors = { support: { configurable: true },current: { configurable: true } };\n\n staticAccessors.support.get = function () {\n if (!support) {\n support = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support;\n };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new SurfaceFactory();\n }\n\n return instance;\n };\n\n SurfaceFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match = items[0];\n\n if (options && options.type) {\n var preferred = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n \"- The browser does not support SVG and Canvas. User agent: \" + (navigator.userAgent));\n };\n\n Object.defineProperties( SurfaceFactory, staticAccessors );\n\n return SurfaceFactory;\n}(Class));\n\nexport default SurfaceFactory;\n\n","import BaseSurface from './core/surface';\nimport SurfaceFactory from './surface-factory';\n\nvar Surface = (function (BaseSurface) {\n function Surface () {\n BaseSurface.apply(this, arguments);\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var staticAccessors = { support: { configurable: true } };\n\n staticAccessors.support.get = function () {\n return SurfaceFactory.support;\n };\n\n Surface.create = function create (element, options) {\n return SurfaceFactory.current.create(element, options);\n };\n\n Object.defineProperties( Surface, staticAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n\n","import { Class } from '../common';\n\nvar Highlight = (function (Class) {\n function Highlight() {\n Class.call(this);\n\n this._points = [];\n }\n\n if ( Class ) Highlight.__proto__ = Class;\n Highlight.prototype = Object.create( Class && Class.prototype );\n Highlight.prototype.constructor = Highlight;\n\n Highlight.prototype.destroy = function destroy () {\n this._points = [];\n };\n\n Highlight.prototype.show = function show (points, opacity) {\n var this$1 = this;\n\n var arrayPoints = [].concat(points);\n this.hide();\n\n for (var i = 0; i < arrayPoints.length; i++) {\n var point = arrayPoints[i];\n if (point && point.toggleHighlight && point.hasHighlight()) {\n this$1.togglePointHighlight(point, true, opacity);\n this$1._points.push(point);\n }\n }\n };\n\n Highlight.prototype.togglePointHighlight = function togglePointHighlight (point, show, opacity) {\n var toggleHandler = (point.options.highlight || {}).toggle;\n if (toggleHandler) {\n var eventArgs = {\n category: point.category,\n series: point.series,\n dataItem: point.dataItem,\n value: point.value,\n stackValue: point.stackValue,\n preventDefault: preventDefault,\n visual: point.highlightVisual(),\n show: show\n };\n toggleHandler(eventArgs);\n if (!eventArgs._defaultPrevented) {\n point.toggleHighlight(show, opacity);\n }\n } else {\n point.toggleHighlight(show, opacity);\n }\n };\n\n Highlight.prototype.hide = function hide () {\n var this$1 = this;\n\n var points = this._points;\n while (points.length) {\n this$1.togglePointHighlight(points.pop(), false);\n }\n };\n\n Highlight.prototype.isHighlighted = function isHighlighted (element) {\n var points = this._points;\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (element === point) {\n return true;\n }\n }\n\n return false;\n };\n\n return Highlight;\n}(Class));\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nexport default Highlight;\n","export default function acceptKey(e, mouseKey) {\n var key = (mouseKey || \"\").toLowerCase();\n var event = e.event;\n var accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n return accept;\n}","export default function toChartAxisRanges(axisRanges) {\n var ranges = {};\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n if (axisRange.axis.options.name) {\n ranges[axisRange.axis.options.name] = {\n min: axisRange.range.min,\n max: axisRange.range.max\n };\n }\n }\n return ranges;\n}","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\n\nvar Pannable = (function (Class) {\n function Pannable(plotArea, options) {\n Class.call(this);\n\n this.plotArea = plotArea;\n this.options = deepExtend({}, this.options, options);\n }\n\n if ( Class ) Pannable.__proto__ = Class;\n Pannable.prototype = Object.create( Class && Class.prototype );\n Pannable.prototype.constructor = Pannable;\n\n Pannable.prototype.start = function start (e) {\n this._active = acceptKey(e, this.options.key);\n return this._active;\n };\n\n Pannable.prototype.move = function move (e) {\n if (this._active) {\n var axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n if (axisRanges.length) {\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n }\n };\n\n Pannable.prototype.end = function end () {\n var active = this._active;\n this._active = false;\n\n return active;\n };\n\n Pannable.prototype.pan = function pan () {\n var ref = this;\n var plotArea = ref.plotArea;\n var axisRanges = ref.axisRanges;\n if (axisRanges.length) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var range = axisRanges[idx];\n plotArea.updateAxisOptions(range.axis, range.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n };\n\n Pannable.prototype.destroy = function destroy () {\n delete this.plotArea;\n };\n\n Pannable.prototype._panAxes = function _panAxes (e, position) {\n var plotArea = this.plotArea;\n var delta = -e[position].delta;\n var lock = (this.options.lock || \"\").toLowerCase();\n var updatedAxes = [];\n\n if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n var axes = plotArea.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n\n if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n var range = axis.pan(delta);\n\n if (range) {\n range.limitRange = true;\n updatedAxes.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n }\n\n return updatedAxes;\n };\n\n return Pannable;\n}(Class));\n\nPannable.prototype.options = {\n key: \"none\",\n lock: \"none\"\n};\n\nexport default Pannable;","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend, elementStyles, elementOffset, defined } from '../../common';\n\nvar ZoomSelection = (function (Class) {\n function ZoomSelection(chart, options) {\n Class.call(this);\n\n this.chart = chart;\n this.options = deepExtend({}, this.options, options);\n this.createElement();\n }\n\n if ( Class ) ZoomSelection.__proto__ = Class;\n ZoomSelection.prototype = Object.create( Class && Class.prototype );\n ZoomSelection.prototype.constructor = ZoomSelection;\n\n ZoomSelection.prototype.createElement = function createElement () {\n var marquee = this._marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n var marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n };\n\n ZoomSelection.prototype.removeElement = function removeElement () {\n if (this._marquee.parentNode) {\n this._marquee.parentNode.removeChild(this._marquee);\n }\n };\n\n ZoomSelection.prototype.setStyles = function setStyles (styles) {\n elementStyles(this._marquee, styles);\n };\n\n ZoomSelection.prototype.start = function start (e) {\n if (acceptKey(e, this.options.key)) {\n var chart = this.chart;\n var point = chart._eventCoordinates(e);\n var zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n var clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n if (zoomPane && clipBox) {\n var offset = this._elementOffset();\n\n clipBox.translate(offset.left, offset.top);\n this._zoomPaneClipBox = clipBox;\n\n document.body.appendChild(this._marquee);\n this.setStyles({\n left: e.pageX + 1,\n top: e.pageY + 1,\n width: 0,\n height: 0\n });\n\n return true;\n }\n }\n return false;\n };\n\n ZoomSelection.prototype._elementOffset = function _elementOffset () {\n var chartElement = this.chart.element;\n var ref = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n var offset = elementOffset(chartElement);\n\n return {\n left: paddingLeft + offset.left,\n top: paddingTop + offset.top\n };\n };\n\n ZoomSelection.prototype.move = function move (e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n this.setStyles(this._selectionPosition(e));\n }\n };\n\n ZoomSelection.prototype.end = function end (e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n var elementOffset = this._elementOffset();\n var selectionPosition = this._selectionPosition(e);\n selectionPosition.left -= elementOffset.left;\n selectionPosition.top -= elementOffset.top;\n\n var start = { x: selectionPosition.left, y: selectionPosition.top };\n var end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n this._updateAxisRanges(start, end);\n\n this.removeElement();\n delete this._zoomPane;\n\n return toChartAxisRanges(this.axisRanges);\n }\n };\n\n ZoomSelection.prototype.zoom = function zoom () {\n var axisRanges = this.axisRanges;\n if (axisRanges && axisRanges.length) {\n var plotArea = this.chart._plotArea;\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n };\n\n ZoomSelection.prototype.destroy = function destroy () {\n this.removeElement();\n delete this._marquee;\n delete this.chart;\n };\n\n ZoomSelection.prototype._updateAxisRanges = function _updateAxisRanges (start, end) {\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n\n var axes = this._zoomPane.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n var range = axis.pointsRange(start, end);\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n };\n\n ZoomSelection.prototype._selectionPosition = function _selectionPosition (e) {\n var clipBox = this._zoomPaneClipBox;\n var startLocation = {\n x: e.x.startLocation,\n y: e.y.startLocation\n };\n var pageX = e.x.location;\n var pageY = e.y.location;\n var lock = (this.options.lock || \"\").toLowerCase();\n var left = Math.min(startLocation.x, pageX);\n var top = Math.min(startLocation.y, pageY);\n var width = Math.abs(startLocation.x - pageX);\n var height = Math.abs(startLocation.y - pageY);\n\n if (lock === X) {\n left = clipBox.x1;\n width = clipBox.width();\n }\n if (lock === Y) {\n top = clipBox.y1;\n height = clipBox.height();\n }\n\n if (pageX > clipBox.x2) {\n width = clipBox.x2 - startLocation.x;\n }\n\n if (pageX < clipBox.x1) {\n width = startLocation.x - clipBox.x1;\n }\n\n if (pageY > clipBox.y2) {\n height = clipBox.y2 - startLocation.y;\n }\n\n if (pageY < clipBox.y1) {\n height = startLocation.y - clipBox.y1;\n }\n\n return {\n left: Math.max(left, clipBox.x1),\n top: Math.max(top, clipBox.y1),\n width: width,\n height: height\n };\n };\n\n return ZoomSelection;\n}(Class));\n\nZoomSelection.prototype.options = {\n key: \"shift\",\n lock: \"none\"\n};\n\nexport default ZoomSelection;","\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\nimport { limitValue } from '../../drawing-utils';\n\n// Limit the zoom rate between 1% and 90% per mousewheel event.\n// At zoom rates close to 100% the axis range quickly becomes 0.\nvar MIN_RATE = 0.01;\nvar MAX_RATE = 0.9;\nvar DEFAULT_RATE = 0.3;\n\nvar MousewheelZoom = (function (Class) {\n function MousewheelZoom(chart, options) {\n Class.call(this);\n\n this.chart = chart;\n this.options = deepExtend({\n rate: DEFAULT_RATE\n }, this.options, options);\n }\n\n if ( Class ) MousewheelZoom.__proto__ = Class;\n MousewheelZoom.prototype = Object.create( Class && Class.prototype );\n MousewheelZoom.prototype.constructor = MousewheelZoom;\n\n MousewheelZoom.prototype.updateRanges = function updateRanges (delta, coords) {\n var this$1 = this;\n\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n var axes = this.chart._plotArea.axes;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n var rate = limitValue(this$1.options.rate, MIN_RATE, MAX_RATE);\n var range = axis.zoomRange(-delta * rate, coords);\n\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n };\n\n MousewheelZoom.prototype.zoom = function zoom () {\n var axisRanges = this.axisRanges;\n var plotArea = this.chart._plotArea;\n\n if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n };\n\n MousewheelZoom.prototype.destroy = function destroy () {\n delete this.chart;\n };\n\n return MousewheelZoom;\n}(Class));\n\nexport default MousewheelZoom;\n","\nexport default function alignStart(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis];\n } else if (align === \"end\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","\nexport default function alignStartReverse(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === \"end\") {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","import Group from './group';\nimport Size from '../geometry/size';\nimport Rect from '../geometry/rect';\nimport Point from '../geometry/point';\nimport createTransform from '../geometry/transform';\nimport translateToPoint from '../alignment/translate-to-point';\nimport alignStart from '../alignment/align-start';\nimport alignStartReverse from '../alignment/align-start-reverse';\n\nvar DEFAULT_OPTIONS = {\n alignContent: \"start\",\n justifyContent: \"start\",\n alignItems: \"start\",\n spacing: 0,\n orientation: \"horizontal\",\n lineSpacing: 0,\n wrap: true,\n revers: false\n};\n\nvar forEach = function (elements, callback) {\n elements.forEach(callback);\n};\n\nvar forEachReverse = function (elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n};\n\nvar Layout = (function (Group) {\n function Layout(rect, options) {\n Group.call(this, Object.assign({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n if ( Group ) Layout.__proto__ = Group;\n Layout.prototype = Object.create( Group && Group.prototype );\n Layout.prototype.constructor = Layout;\n\n Layout.prototype.rect = function rect (value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n };\n\n Layout.prototype._initMap = function _initMap () {\n var options = this.options;\n var fieldMap = this._fieldMap;\n if (options.orientation === \"horizontal\") {\n fieldMap.sizeField = \"width\";\n fieldMap.groupsSizeField = \"height\";\n fieldMap.groupAxis = \"x\";\n fieldMap.groupsAxis = \"y\";\n } else {\n fieldMap.sizeField = \"height\";\n fieldMap.groupsSizeField = \"width\";\n fieldMap.groupAxis = \"y\";\n fieldMap.groupsAxis = \"x\";\n }\n\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n };\n\n Layout.prototype.reflow = function reflow () {\n var this$1 = this;\n\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n\n if (this.options.transform) {\n this.transform(null);\n }\n\n var options = this.options;\n var rect = this._rect;\n var ref = this._initGroups();\n var groups = ref.groups;\n var groupsSize = ref.groupsSize;\n var ref$1 = this._fieldMap;\n var sizeField = ref$1.sizeField;\n var groupsSizeField = ref$1.groupsSizeField;\n var groupAxis = ref$1.groupAxis;\n var groupsAxis = ref$1.groupsAxis;\n var groupOrigin = new Point();\n var elementOrigin = new Point();\n var size = new Size();\n var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var elementStart, group, groupBox;\n\n var arrangeElements = function (bbox, idx) {\n var element = group.elements[idx];\n\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n\n for (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this$1.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this$1.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n var scale = rect.size[sizeField] / groupBox.size[sizeField];\n var scaledStart = groupBox.topLeft().scale(scale, scale);\n var scaledSize = groupBox.size[groupsSizeField] * scale;\n var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var transform = createTransform();\n if (groupAxis === \"x\") {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n\n this.transform(transform);\n }\n };\n\n Layout.prototype._initGroups = function _initGroups () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var lineSpacing = options.lineSpacing;\n var wrap = options.wrap;\n var spacing = options.spacing;\n var sizeField = this._fieldMap.sizeField;\n var group = this._newGroup();\n var groups = [];\n var addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n var groupsSize = -lineSpacing;\n\n for (var idx = 0; idx < children.length; idx++) {\n var element = children[idx];\n var bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this$1._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this$1._addToGroup(group, bbox, element);\n addGroup();\n group = this$1._newGroup();\n } else {\n addGroup();\n group = this$1._newGroup();\n this$1._addToGroup(group, bbox, element);\n }\n } else {\n this$1._addToGroup(group, bbox, element);\n }\n }\n }\n\n if (group.bboxes.length) {\n addGroup();\n }\n\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n };\n\n Layout.prototype._addToGroup = function _addToGroup (group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n };\n\n Layout.prototype._newGroup = function _newGroup () {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n };\n\n return Layout;\n}(Group));\n\nexport default Layout;","import createTransform from '../geometry/transform';\n\nexport default function translateToPoint(point, bbox, element) {\n var transofrm = element.transform() || createTransform();\n var matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n\n transofrm.matrix(matrix);\n element.transform(transofrm);\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, rectToBox } from '../../core';\n\nvar LegendLayout = (function (ChartElement) {\n function LegendLayout(options, chartService) {\n ChartElement.call(this, options);\n\n this.chartService = chartService;\n }\n\n if ( ChartElement ) LegendLayout.__proto__ = ChartElement;\n LegendLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n LegendLayout.prototype.constructor = LegendLayout;\n\n LegendLayout.prototype.render = function render () {\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var vertical = options.vertical;\n\n this.visual = new draw.Layout(null, {\n spacing: vertical ? 0 : options.spacing,\n lineSpacing: vertical ? options.spacing : 0,\n orientation: vertical ? \"vertical\" : \"horizontal\",\n reverse: options.rtl,\n alignItems: vertical ? \"start\" : \"center\"\n });\n\n for (var idx = 0; idx < children.length; idx++) {\n var legendItem = children[idx];\n legendItem.reflow(new Box());\n legendItem.renderVisual();\n }\n };\n\n LegendLayout.prototype.reflow = function reflow (box) {\n this.visual.rect(box.toRect());\n this.visual.reflow();\n var bbox = this.visual.clippedBBox();\n\n if (bbox) {\n this.box = rectToBox(bbox);\n } else {\n this.box = new Box();\n }\n };\n\n LegendLayout.prototype.renderVisual = function renderVisual () {\n this.addVisual();\n };\n\n LegendLayout.prototype.createVisual = function createVisual () {};\n\n return LegendLayout;\n}(ChartElement));\n\nexport default LegendLayout;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { BoxElement, FloatElement, ShapeElement, TextBox } from '../../core';\nimport { LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE } from '../constants';\nimport { CENTER, WHITE } from '../../common/constants';\nimport { deepExtend, eventElement } from '../../common';\n\nvar LegendItem = (function (BoxElement) {\n function LegendItem(options) {\n BoxElement.call(this, options);\n\n this.createContainer();\n if (!options.rtl) {\n this.createMarker();\n this.createLabel();\n } else {\n this.createLabel();\n this.createMarker();\n }\n }\n\n if ( BoxElement ) LegendItem.__proto__ = BoxElement;\n LegendItem.prototype = Object.create( BoxElement && BoxElement.prototype );\n LegendItem.prototype.constructor = LegendItem;\n\n LegendItem.prototype.createContainer = function createContainer () {\n this.container = new FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n this.append(this.container);\n };\n\n LegendItem.prototype.createMarker = function createMarker () {\n this.container.append(new ShapeElement(this.markerOptions()));\n };\n\n LegendItem.prototype.markerOptions = function markerOptions () {\n var options = this.options;\n var markerColor = options.markerColor;\n return deepExtend({}, options.markers, {\n background: markerColor,\n border: {\n color: markerColor\n }\n });\n };\n\n LegendItem.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labelOptions = deepExtend({}, options.labels);\n\n this.container.append(new TextBox(options.text, labelOptions));\n };\n\n LegendItem.prototype.renderComplete = function renderComplete () {\n BoxElement.prototype.renderComplete.call(this);\n\n var cursor = this.options.cursor || {};\n var eventSink = this._itemOverlay = draw.Path.fromRect(this.container.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null,\n cursor: cursor.style || cursor\n });\n\n this.appendVisual(eventSink);\n };\n\n LegendItem.prototype.click = function click (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n e.preventDefault();\n }\n };\n\n LegendItem.prototype.over = function over (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n widget._legendItemHover(args.seriesIndex, args.pointIndex);\n }\n\n // Don't trigger point hover for legend items\n return true;\n };\n\n LegendItem.prototype.out = function out (widget, e) {\n widget._unsetActivePoint();\n\n widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n };\n\n LegendItem.prototype.eventArgs = function eventArgs (e) {\n var options = this.options;\n\n return {\n element: eventElement(e),\n text: options.text,\n series: options.series,\n seriesIndex: options.series.index,\n pointIndex: options.pointIndex\n };\n };\n\n LegendItem.prototype.renderVisual = function renderVisual () {\n var this$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n\n if (customVisual) {\n this.visual = customVisual({\n active: options.active,\n series: options.series,\n sender: this.getSender(),\n pointIndex: options.pointIndex,\n options: {\n markers: this.markerOptions(),\n labels: options.labels\n },\n createVisual: function () {\n this$1.createVisual();\n this$1.renderChildren();\n this$1.renderComplete();\n\n var defaultVisual = this$1.visual;\n\n delete this$1.visual;\n\n return defaultVisual;\n }\n });\n this.addVisual();\n } else {\n BoxElement.prototype.renderVisual.call(this);\n }\n };\n\n return LegendItem;\n}(BoxElement));\n\nexport default LegendItem;\n","\nimport { ChartElement, BoxElement, Box, TextBox, FloatElement } from '../../core';\nimport LegendLayout from './legend-layout';\nimport LegendItem from './legend-item';\n\nimport { TOP, RIGHT, BOTTOM, LEFT, CENTER, X, Y, BLACK } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, getSpacing, inArray, setDefaultOptions } from '../../common';\n\nvar HORIZONTAL = \"horizontal\";\nvar POINTER = \"pointer\";\nvar CUSTOM = \"custom\";\n\nvar Legend = (function (ChartElement) {\n function Legend(options, chartService) {\n if ( chartService === void 0 ) chartService = {};\n\n ChartElement.call(this, options);\n\n this.chartService = chartService;\n\n if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n this.options.position = RIGHT;\n }\n\n this.createContainers();\n\n this.createLegendTitle(options.title);\n\n this.createItems();\n }\n\n if ( ChartElement ) Legend.__proto__ = ChartElement;\n Legend.prototype = Object.create( ChartElement && ChartElement.prototype );\n Legend.prototype.constructor = Legend;\n\n Legend.prototype.createContainers = function createContainers () {\n var options = this.options;\n var position = options.position;\n var userAlign = options.align;\n var align = position;\n var vAlign = CENTER;\n\n if (position === CUSTOM) {\n align = LEFT;\n } else if (inArray(position, [ TOP, BOTTOM ])) {\n if (userAlign === \"start\") {\n align = LEFT;\n } else if (userAlign === \"end\") {\n align = RIGHT;\n } else {\n align = CENTER;\n }\n vAlign = position;\n } else if (userAlign) {\n if (userAlign === \"start\") {\n vAlign = TOP;\n } else if (userAlign === \"end\") {\n vAlign = BOTTOM;\n }\n }\n\n this.container = new BoxElement({\n margin: options.margin,\n padding: options.padding,\n background: options.background,\n border: options.border,\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n\n if (this.hasTitle()) {\n this.itemsContainer = new BoxElement({\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n } else {\n this.itemsContainer = this.container;\n }\n\n this.append(this.container);\n };\n\n Legend.prototype.createItems = function createItems () {\n var chartService = this.getService();\n var options = this.options;\n var vertical = this.isVertical();\n var innerElement = new LegendLayout({\n vertical: vertical,\n spacing: options.spacing,\n rtl: chartService.rtl\n }, chartService);\n var items = options.items;\n\n if (options.reverse) {\n items = items.slice(0).reverse();\n }\n\n var count = items.length;\n\n for (var i = 0; i < count; i++) {\n var item = items[i];\n\n innerElement.append(new LegendItem(deepExtend({}, {\n markers: options.markers,\n labels: options.labels,\n rtl: chartService.rtl\n }, options.item, item)));\n }\n\n innerElement.render();\n this.itemsContainer.append(innerElement);\n };\n\n Legend.prototype.isVertical = function isVertical () {\n var ref = this.options;\n var orientation = ref.orientation;\n var position = ref.position;\n var vertical = (position === CUSTOM && orientation !== HORIZONTAL) ||\n (defined(orientation) ? orientation !== HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n return vertical;\n };\n\n Legend.prototype.hasItems = function hasItems () {\n return this.container.children[0].children.length > 0;\n };\n\n Legend.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var legendBox = targetBox.clone();\n\n if (!this.hasItems()) {\n this.box = legendBox;\n return;\n }\n\n if (options.position === CUSTOM) {\n this.containerCustomReflow(legendBox);\n this.box = legendBox;\n } else {\n this.containerReflow(legendBox);\n }\n\n if (this.hasTitle()) {\n this.title.reflow(new Box(this.container.box.x1, this.title.box.y1, this.container.box.x2, this.title.box.y2));\n }\n };\n\n Legend.prototype.containerReflow = function containerReflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var position = options.position;\n var width = options.width;\n var height = options.height;\n var pos = position === TOP || position === BOTTOM ? X : Y;\n var vertical = this.isVertical();\n var alignTarget = targetBox.clone();\n var containerBox = targetBox.clone();\n\n if (position === LEFT || position === RIGHT) {\n containerBox.y1 = alignTarget.y1 = 0;\n }\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n containerBox.align(alignTarget, Y, container.options.vAlign);\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n containerBox.align(alignTarget, X, container.options.align);\n }\n\n container.reflow(containerBox);\n containerBox = container.box;\n\n var box = containerBox.clone();\n\n if (options.offsetX || options.offsetY) {\n containerBox.translate(options.offsetX, options.offsetY);\n container.reflow(containerBox);\n }\n\n box[pos + 1] = targetBox[pos + 1];\n box[pos + 2] = targetBox[pos + 2];\n\n this.box = box;\n };\n\n Legend.prototype.containerCustomReflow = function containerCustomReflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var offsetX = options.offsetX;\n var offsetY = options.offsetY;\n var width = options.width;\n var height = options.height;\n var vertical = this.isVertical();\n var containerBox = targetBox.clone();\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n }\n container.reflow(containerBox);\n containerBox = container.box;\n\n container.reflow(new Box(\n offsetX, offsetY,\n offsetX + containerBox.width(), offsetY + containerBox.height()\n ));\n };\n\n Legend.prototype.renderVisual = function renderVisual () {\n if (this.hasItems()) {\n ChartElement.prototype.renderVisual.call(this);\n }\n };\n\n Legend.prototype.createLegendTitle = function createLegendTitle (title) {\n var titleOptions = deepExtend({}, {\n color: BLACK,\n position: TOP,\n align: CENTER\n }, title);\n var text = titleOptions.text;\n\n if (!title || title.visible === false) {\n return;\n }\n\n if (defined(titleOptions) && titleOptions.visible) {\n var labelTemplate = getTemplate(titleOptions);\n if (labelTemplate) {\n text = labelTemplate({ text: text });\n } else if (titleOptions.format) {\n text = this.chartService.format.auto(titleOptions.format, text);\n }\n }\n\n this.title = new TextBox(text, titleOptions);\n\n this.createTitleLayout();\n\n this.appendTitleLayoutContent();\n };\n\n Legend.prototype.createTitleLayout = function createTitleLayout () {\n this.layout = new FloatElement({\n vertical: true,\n wrap: false\n });\n\n this.container.append(this.layout);\n };\n\n Legend.prototype.hasTitle = function hasTitle () {\n return Boolean(this.options.title && this.options.title.visible !== false);\n };\n\n Legend.prototype.appendTitleLayoutContent = function appendTitleLayoutContent () {\n var options = this.options;\n\n if (options.title.position === BOTTOM) {\n this.layout.append(this.itemsContainer);\n this.layout.append(this.title);\n } else {\n this.layout.append(this.title);\n this.layout.append(this.itemsContainer);\n }\n };\n\n return Legend;\n}(ChartElement));\n\nsetDefaultOptions(Legend, {\n position: RIGHT,\n items: [],\n offsetX: 0,\n offsetY: 0,\n margin: getSpacing(5),\n padding: getSpacing(5),\n border: {\n color: BLACK,\n width: 0\n },\n item: {\n cursor: POINTER,\n spacing: 6\n },\n spacing: 6,\n background: \"\",\n zIndex: 1,\n markers: {\n border: {\n width: 0\n },\n width: 15,\n height: 3,\n type: \"rect\",\n align: LEFT,\n vAlign: CENTER\n }\n});\n\nexport default Legend;\n","import filterSeriesByType from '../utils/filter-series-by-type';\nimport { Class } from '../../common';\nimport { TRENDLINE_SERIES } from '../constants';\n\nvar PlotAreaFactory = (function (Class) {\n function PlotAreaFactory() {\n Class.call(this);\n\n this._registry = [];\n }\n\n if ( Class ) PlotAreaFactory.__proto__ = Class;\n PlotAreaFactory.prototype = Object.create( Class && Class.prototype );\n PlotAreaFactory.prototype.constructor = PlotAreaFactory;\n\n PlotAreaFactory.prototype.register = function register (type, seriesTypes) {\n this._registry.push({\n type: type,\n seriesTypes: seriesTypes\n });\n };\n\n PlotAreaFactory.prototype.create = function create (srcSeries, options, chartService) {\n var registry = this._registry;\n var match = registry[0];\n var series;\n\n for (var idx = 0; idx < registry.length; idx++) {\n var entry = registry[idx];\n series = filterSeriesByType(srcSeries, entry.seriesTypes);\n var trendlines = filterSeriesByType(srcSeries, TRENDLINE_SERIES);\n\n if ((series.length - trendlines.length) > 0) {\n match = entry;\n break;\n }\n }\n\n return new match.type(series, options, chartService);\n };\n\n return PlotAreaFactory;\n}(Class));\n\nPlotAreaFactory.current = new PlotAreaFactory();\n\nexport default PlotAreaFactory;\n","import { DomEventsBuilder } from '../services';\n\nimport { DateCategoryAxis, Point } from '../core';\n\nimport { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';\n\nimport { LEFT, RIGHT, MIN_VALUE, MAX_VALUE, X } from '../common/constants';\nimport { addClass, Class, removeClass, eventCoordinates, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';\nimport { parseDate } from '../date-utils';\n\nvar ZOOM_ACCELERATION = 3;\nvar SELECTOR_HEIGHT_ADJUST = 0.1;\n\nfunction createDiv(classNames) {\n var element = document.createElement(\"div\");\n if (classNames) {\n element.className = classNames;\n }\n\n return element;\n}\n\nfunction closestHandle(element) {\n var current = element;\n while (current && !hasClasses(current, \"k-handle\")) {\n current = current.parentNode;\n }\n\n return current;\n}\n\nvar Selection = (function (Class) {\n function Selection(chart, categoryAxis, options, observer) {\n Class.call(this);\n\n var chartElement = chart.element;\n\n this.options = deepExtend({}, this.options, options);\n this.chart = chart;\n this.observer = observer;\n this.chartElement = chartElement;\n this.categoryAxis = categoryAxis;\n this._dateAxis = this.categoryAxis instanceof DateCategoryAxis;\n\n this.initOptions();\n\n this.visible = this.options.visible && chartElement.offsetHeight;\n\n if (this.visible) {\n this.createElements();\n\n this.set(this._index(this.options.from), this._index(this.options.to));\n\n this.bindEvents();\n }\n }\n\n if ( Class ) Selection.__proto__ = Class;\n Selection.prototype = Object.create( Class && Class.prototype );\n Selection.prototype.constructor = Selection;\n\n Selection.prototype.onPane = function onPane (pane) {\n return this.categoryAxis.pane === pane;\n };\n\n Selection.prototype.createElements = function createElements () {\n var options = this.options;\n var wrapper = this.wrapper = createDiv(\"k-selector k-pointer-events-none\");\n elementStyles(wrapper, {\n top: options.offset.top,\n left: options.offset.left,\n width: options.width,\n height: options.height,\n direction: 'ltr'\n });\n\n var selection = this.selection = createDiv(\"k-selection k-pointer-events-none\");\n\n this.leftMask = createDiv(\"k-mask k-pointer-events-none\");\n this.rightMask = createDiv(\"k-mask k-pointer-events-none\");\n\n wrapper.appendChild(this.leftMask);\n wrapper.appendChild(this.rightMask);\n wrapper.appendChild(selection);\n\n var body = this.body = createDiv(\"k-selection-bg k-pointer-events-none\");\n selection.appendChild(body);\n\n var leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle k-pointer-events-auto\");\n var rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle k-pointer-events-auto\");\n leftHandle.appendChild(createDiv());\n rightHandle.appendChild(createDiv());\n\n selection.appendChild(leftHandle);\n selection.appendChild(rightHandle);\n\n this.chartElement.appendChild(wrapper);\n var selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n var leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n var rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n options.selection = {\n border: {\n left: selectionStyles.borderLeftWidth,\n right: selectionStyles.borderRightWidth\n }\n };\n\n elementStyles(leftHandle, {\n top: (selectionStyles.height - leftHandleHeight) / 2\n });\n\n elementStyles(rightHandle, {\n top: (selectionStyles.height - rightHandleHeight) / 2\n });\n\n /* eslint no-self-assign: \"off\" */\n wrapper.style.cssText = wrapper.style.cssText;\n };\n\n Selection.prototype.bindEvents = function bindEvents$1 () {\n var obj;\n\n if (this.options.mousewheel !== false) {\n this._mousewheelHandler = this._mousewheel.bind(this);\n bindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n }\n\n this._domEvents = DomEventsBuilder.create(this.chartElement, {\n stopPropagation: true, // applicable for the jQuery UserEvents\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n press: this._press.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n };\n\n Selection.prototype.initOptions = function initOptions () {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var box = categoryAxis.pane.chartsBox();\n var intlService = this.chart.chartService.intl;\n\n if (this._dateAxis) {\n deepExtend(options, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n from: parseDate(intlService, options.from),\n to: parseDate(intlService, options.to)\n });\n }\n\n var ref$1 = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref$1.paddingLeft;\n var paddingTop = ref$1.paddingTop;\n\n this.options = deepExtend({}, {\n width: box.width(),\n height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n padding: {\n left: paddingLeft,\n top: paddingTop\n },\n offset: {\n left: box.x1 + paddingLeft,\n top: box.y1 + paddingTop\n },\n from: options.min,\n to: options.max\n }, options);\n };\n\n Selection.prototype.destroy = function destroy () {\n var obj;\n\n if (this._domEvents) {\n this._domEvents.destroy();\n delete this._domEvents;\n }\n\n clearTimeout(this._mwTimeout);\n this._state = null;\n\n if (this.wrapper) {\n if (this._mousewheelHandler) {\n unbindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n this._mousewheelHandler = null;\n }\n\n this.chartElement.removeChild(this.wrapper);\n this.wrapper = null;\n }\n };\n\n Selection.prototype._rangeEventArgs = function _rangeEventArgs (range) {\n\n return {\n axis: this.categoryAxis.options,\n from: this._value(range.from),\n to: this._value(range.to)\n };\n };\n\n Selection.prototype._pointInPane = function _pointInPane (x, y) {\n var paneBox = this.categoryAxis.pane.box;\n var modelCoords = this.chart._toModelCoordinates(x, y);\n return paneBox.containsPoint(modelCoords);\n };\n\n Selection.prototype._start = function _start (e) {\n var options = this.options;\n var target = eventElement(e);\n if (this._state || !target) {\n return;\n }\n\n var coords = eventCoordinates(e);\n var inPane = this._pointInPane(coords.x, coords.y);\n if (!inPane) {\n return;\n }\n\n var handle = closestHandle(target);\n var bodyRect = this.body.getBoundingClientRect();\n var inBody = !handle && coords.x >= bodyRect.x && coords.x <= bodyRect.x + bodyRect.width &&\n coords.y >= bodyRect.y && coords.y <= bodyRect.y + bodyRect.height;\n\n this.chart._unsetActivePoint();\n this._state = {\n moveTarget: handle,\n startLocation: e.x ? e.x.location : 0,\n inBody: inBody,\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n\n var args = this._rangeEventArgs({\n from: this._index(options.from),\n to: this._index(options.to)\n });\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n }\n };\n\n Selection.prototype._press = function _press (e) {\n var handle;\n if (this._state) {\n handle = this._state.moveTarget;\n } else {\n handle = closestHandle(eventElement(e));\n }\n if (handle) {\n addClass(handle, \"k-handle-active\");\n }\n };\n\n Selection.prototype._move = function _move (e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var target = state.moveTarget;\n var reverse = categoryAxis.options.reverse;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var delta = state.startLocation - e.x.location;\n var oldRange = { from: range.from, to: range.to };\n var span = range.to - range.from;\n var scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n var offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n if (!target && !state.inBody) {\n return;\n }\n\n var leftHandle = target && hasClasses(target, \"k-left-handle\");\n var rightHandle = target && hasClasses(target, \"k-right-handle\");\n\n if (state.inBody) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n range.to = Math.min(\n range.from + span,\n max\n );\n } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - 1\n );\n range.to = Math.max(range.from + 1, range.to);\n } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n range.to = Math.min(\n Math.max(min + 1, to - offset),\n max\n );\n range.from = Math.min(range.to - 1, range.from);\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.move(range.from, range.to);\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n };\n\n Selection.prototype._end = function _end () {\n if (this._state) {\n var moveTarget = this._state.moveTarget;\n if (moveTarget) {\n removeClass(moveTarget, \"k-handle-active\");\n }\n\n var range = this._state.range;\n this.set(range.from, range.to);\n this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n delete this._state;\n }\n };\n\n Selection.prototype._tap = function _tap (e) {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var coords = this.chart._eventCoordinates(e);\n var categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var span = to - from;\n var mid = from + span / 2;\n var range = {};\n var rightClick = e.event.which === 3;\n var offset = Math.round(mid - categoryIx);\n\n if (this._state || rightClick) {\n return;\n }\n\n\n this.chart._unsetActivePoint();\n\n if (!categoryAxis.options.justified) {\n offset--;\n }\n\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n\n range.to = Math.min(range.from + span, max);\n\n this._start(e);\n\n if (this._state) {\n this._state.range = range;\n this.trigger(SELECT, this._rangeEventArgs(range));\n this._end();\n }\n };\n\n Selection.prototype._mousewheel = function _mousewheel (e) {\n var this$1 = this;\n\n var delta = mousewheelDelta(e);\n\n this._start(e);\n\n if (this._state) {\n var range = this._state.range;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (this.options.mousewheel.reverse) {\n delta *= -1;\n }\n\n if (this.expand(delta)) {\n this.trigger(SELECT, {\n axis: this.categoryAxis.options,\n delta: delta,\n originalEvent: e,\n from: this._value(range.from),\n to: this._value(range.to)\n });\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1._end();\n }, MOUSEWHEEL_DELAY);\n }\n };\n\n Selection.prototype._gesturestart = function _gesturestart (e) {\n var options = this.options;\n var touch = e.touches[0];\n var inPane = this._pointInPane(touch.pageX, touch.pageY);\n\n if (!inPane) {\n return;\n }\n\n this._state = {\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n var args = this._rangeEventArgs(this._state.range);\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n } else {\n e.preventDefault();\n }\n };\n\n Selection.prototype._gestureend = function _gestureend () {\n if (this._state) {\n this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n delete this._state;\n }\n };\n\n Selection.prototype._gesturechange = function _gesturechange (e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var chart = ref.chart;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n var p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n var left = Math.min(p0, p1);\n var right = Math.max(p0, p1);\n\n e.preventDefault();\n\n range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n this.move(range.from, range.to);\n\n this.trigger(SELECT, this._rangeEventArgs(range));\n };\n\n Selection.prototype._index = function _index (value) {\n var index = value;\n\n if (value instanceof Date) {\n index = this.categoryAxis.categoryIndex(value);\n }\n\n return index;\n };\n\n Selection.prototype._value = function _value (index) {\n var value = index;\n if (this._dateAxis) {\n value = this.categoryAxis.categoryAt(index);\n if (value > this.options.max) {\n value = this.options.max;\n }\n }\n\n return value;\n };\n\n Selection.prototype._slot = function _slot (value) {\n var categoryAxis = this.categoryAxis;\n var index = this._index(value);\n\n return categoryAxis.getSlot(index, index, true);\n };\n\n Selection.prototype.move = function move (from, to) {\n var options = this.options;\n var reverse = this.categoryAxis.options.reverse;\n var offset = options.offset;\n var padding = options.padding;\n var border = options.selection.border;\n var left = reverse ? to : from;\n var right = reverse ? from : to;\n var edge = 'x' + (reverse ? 2 : 1);\n\n var box = this._slot(left);\n var leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n elementStyles(this.leftMask, {\n width: leftMaskWidth\n });\n elementStyles(this.selection, {\n left: leftMaskWidth\n });\n\n box = this._slot(right);\n\n var rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n elementStyles(this.rightMask, {\n width: rightMaskWidth\n });\n\n var distance = options.width - rightMaskWidth;\n if (distance !== options.width) {\n distance += border.right;\n }\n\n elementStyles(this.rightMask, {\n left: distance\n });\n elementStyles(this.selection, {\n width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n });\n };\n\n Selection.prototype.set = function set (from, to) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var fromValue = limitValue(this._index(from), min, max);\n var toValue = limitValue(this._index(to), fromValue + 1, max);\n\n if (options.visible) {\n this.move(fromValue, toValue);\n }\n\n options.from = this._value(fromValue);\n options.to = this._value(toValue);\n };\n\n Selection.prototype.expand = function expand (delta) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var zDir = options.mousewheel.zoom;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n if (this._state) {\n range = this._state.range;\n }\n\n if (zDir !== RIGHT) {\n range.from = limitValue(\n limitValue(from - delta, 0, to - 1),\n min, max\n );\n }\n\n if (zDir !== LEFT) {\n range.to = limitValue(\n limitValue(to + delta, range.from + 1, max),\n min,\n max\n );\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n };\n\n Selection.prototype.zoom = function zoom (delta, coords) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n var ref = this.categoryAxis.options;\n var reverse = ref.reverse;\n var origin = X + (reverse ? '2' : '1');\n var lineBox = this.categoryAxis.lineBox();\n var relative = Math.abs(lineBox[origin] - coords[X]);\n var size = lineBox.width();\n var position = round(relative / size, 2);\n var minDelta = round(position * delta);\n var maxDelta = round((1 - position) * delta);\n\n if (this._state) {\n range = this._state.range;\n }\n\n range.from = limitValue(\n limitValue(from - minDelta, 0, to - 1),\n min, max\n );\n\n range.to = limitValue(\n limitValue(to + maxDelta, range.from + 1, max),\n min,\n max\n );\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n };\n\n Selection.prototype.trigger = function trigger (name, args) {\n return (this.observer || this.chart).trigger(name, args);\n };\n\n return Selection;\n}(Class));\n\nsetDefaultOptions(Selection, {\n visible: true,\n mousewheel: {\n zoom: \"both\"\n },\n min: MIN_VALUE,\n max: MAX_VALUE\n});\n\nexport default Selection;\n","import BaseTooltip from './base-tooltip';\n\nimport { deepExtend } from '../../common';\n\nvar Tooltip = (function (BaseTooltip) {\n function Tooltip () {\n BaseTooltip.apply(this, arguments);\n }\n\n if ( BaseTooltip ) Tooltip.__proto__ = BaseTooltip;\n Tooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n Tooltip.prototype.constructor = Tooltip;\n\n Tooltip.prototype.show = function show (point) {\n if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n return;\n }\n\n var options = deepExtend({}, this.options, point.options.tooltip);\n var anchor = point.tooltipAnchor();\n\n if (anchor) {\n this._current = point;\n BaseTooltip.prototype.show.call(this, {\n point: point,\n anchor: anchor\n }, options, point);\n } else {\n this.hide();\n }\n };\n\n Tooltip.prototype.hide = function hide () {\n delete this._current;\n BaseTooltip.prototype.hide.call(this);\n };\n\n return Tooltip;\n}(BaseTooltip));\n\nexport default Tooltip;","import BaseTooltip from './base-tooltip';\nimport { Point } from '../../core';\n\nimport { grep, setDefaultOptions } from '../../common';\n\nvar SharedTooltip = (function (BaseTooltip) {\n function SharedTooltip(plotArea, options) {\n BaseTooltip.call(this, plotArea.chartService, options);\n\n this.plotArea = plotArea;\n this.formatService = plotArea.chartService.format;\n }\n\n if ( BaseTooltip ) SharedTooltip.__proto__ = BaseTooltip;\n SharedTooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n SharedTooltip.prototype.constructor = SharedTooltip;\n\n SharedTooltip.prototype.showAt = function showAt (points, coords) {\n var tooltipPoints = grep(points, function(point) {\n var tooltip = point.series.tooltip;\n var excluded = tooltip && tooltip.visible === false;\n\n return !excluded;\n });\n\n if (tooltipPoints.length > 0) {\n var point = tooltipPoints[0];\n var slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n var anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n this.show({\n anchor: anchor,\n shared: true,\n points: points,\n category: point.category,\n categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n series: this.plotArea.series\n }, this.options);\n }\n };\n\n SharedTooltip.prototype._slotAnchor = function _slotAnchor (point, slot) {\n var axis = this.plotArea.categoryAxis;\n var align = {\n horizontal: \"left\",\n vertical: \"center\"\n };\n\n if (!axis.options.vertical) {\n point.x = slot.center().x;\n }\n\n return {\n point: point,\n align: align\n };\n };\n\n SharedTooltip.prototype._defaultAnchor = function _defaultAnchor (point, slot) {\n var box = point.owner.pane.chartsBox();\n var vertical = this.plotArea.categoryAxis.options.vertical;\n var center = box.center();\n var slotCenter = slot.center();\n var align = {\n horizontal: \"center\",\n vertical: \"center\"\n };\n\n var centerPoint;\n if (vertical) {\n centerPoint = new Point(center.x, slotCenter.y);\n } else {\n centerPoint = new Point(slotCenter.x, center.y);\n }\n\n return {\n point: centerPoint,\n align: align\n };\n };\n\n return SharedTooltip;\n}(BaseTooltip));\n\nsetDefaultOptions(SharedTooltip, {\n categoryFormat: '{0:d}'\n});\n\nexport default SharedTooltip;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION, BAR, START_SCALE } from '../constants';\n\nimport { X, Y } from '../../common/constants';\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nvar BarChartAnimation = (function (superclass) {\n function BarChartAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) BarChartAnimation.__proto__ = superclass;\n BarChartAnimation.prototype = Object.create( superclass && superclass.prototype );\n BarChartAnimation.prototype.constructor = BarChartAnimation;\n\n BarChartAnimation.prototype.setup = function setup () {\n var ref = this;\n var element = ref.element;\n var options = ref.options;\n var bbox = element.bbox();\n\n if (bbox) {\n this.origin = options.origin;\n var axis = options.vertical ? Y : X;\n\n var fromScale = this.fromScale = new geom.Point(1, 1);\n fromScale[axis] = START_SCALE;\n\n element.transform(geom.transform()\n .scale(fromScale.x, fromScale.y)\n );\n } else {\n this.abort();\n }\n };\n\n BarChartAnimation.prototype.step = function step (pos) {\n var scaleX = interpolateValue(this.fromScale.x, 1, pos);\n var scaleY = interpolateValue(this.fromScale.y, 1, pos);\n\n this.element.transform(geom.transform()\n .scale(scaleX, scaleY, this.origin)\n );\n };\n\n BarChartAnimation.prototype.abort = function abort () {\n superclass.prototype.abort.call(this);\n this.element.transform(null);\n };\n\n return BarChartAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(BarChartAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(BAR, BarChartAnimation);\n\nexport default BarChartAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, BUBBLE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar BubbleAnimation = (function (superclass) {\n function BubbleAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) BubbleAnimation.__proto__ = superclass;\n BubbleAnimation.prototype = Object.create( superclass && superclass.prototype );\n BubbleAnimation.prototype.constructor = BubbleAnimation;\n\n BubbleAnimation.prototype.setup = function setup () {\n var center = this.center = this.element.bbox().center();\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, center)\n );\n };\n\n BubbleAnimation.prototype.step = function step (pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.center)\n );\n };\n\n return BubbleAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(BubbleAnimation, {\n easing: \"easeOutElastic\"\n});\n\ndraw.AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\nexport default BubbleAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { FADEIN } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar FadeInAnimation = (function (superclass) {\n function FadeInAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) FadeInAnimation.__proto__ = superclass;\n FadeInAnimation.prototype = Object.create( superclass && superclass.prototype );\n FadeInAnimation.prototype.constructor = FadeInAnimation;\n\n FadeInAnimation.prototype.setup = function setup () {\n this.fadeTo = this.element.opacity();\n this.element.opacity(0);\n };\n\n FadeInAnimation.prototype.step = function step (pos) {\n this.element.opacity(pos * this.fadeTo);\n };\n\n return FadeInAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(FadeInAnimation, {\n duration: 200,\n easing: \"linear\"\n});\n\ndraw.AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\nexport default FadeInAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, INITIAL_ANIMATION_DURATION, PIE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PieAnimation = (function (superclass) {\n function PieAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) PieAnimation.__proto__ = superclass;\n PieAnimation.prototype = Object.create( superclass && superclass.prototype );\n PieAnimation.prototype.constructor = PieAnimation;\n\n PieAnimation.prototype.setup = function setup () {\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, this.options.center)\n );\n };\n\n PieAnimation.prototype.step = function step (pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.options.center)\n );\n };\n\n return PieAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(PieAnimation, {\n easing: \"easeOutElastic\",\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(PIE, PieAnimation);\n\nexport default PieAnimation;","import ScatterChart from './scatter-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport LineSegment from '../line-chart/line-segment';\nimport SplineSegment from '../line-chart/spline-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nimport { deepExtend } from '../../common';\n\nvar ScatterLineChart = (function (ScatterChart) {\n function ScatterLineChart () {\n ScatterChart.apply(this, arguments);\n }\n\n if ( ScatterChart ) ScatterLineChart.__proto__ = ScatterChart;\n ScatterLineChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n ScatterLineChart.prototype.constructor = ScatterLineChart;\n\n ScatterLineChart.prototype.render = function render () {\n ScatterChart.prototype.render.call(this);\n\n this.renderSegments();\n };\n\n ScatterLineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n };\n\n ScatterLineChart.prototype.animationPoints = function animationPoints () {\n var points = ScatterChart.prototype.animationPoints.call(this);\n return points.concat(this._segments);\n };\n\n ScatterLineChart.prototype.createMissingValue = function createMissingValue (value, missingValues) {\n if (missingValues === ZERO) {\n var missingValue = {\n x: value.x,\n y: value.y\n };\n if (!hasValue(missingValue.x)) {\n missingValue.x = 0;\n }\n if (!hasValue(missingValue.y)) {\n missingValue.y = 0;\n }\n return missingValue;\n }\n };\n\n return ScatterLineChart;\n}(ScatterChart));\n\ndeepExtend(ScatterLineChart.prototype, LineChartMixin);\n\nexport default ScatterLineChart;","var scatterValueGetter = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: valueFields.x, yValue: valueFields[fieldName] });\n; } };\n\nexport default scatterValueGetter;\n","import autoMajorUnit from '../../core/utils/auto-major-unit';\nimport { valueOrDefault } from '../../common';\nimport calculateSlope from './calculate-slope';\nimport scatterValueGetter from './scatter-value-getter';\n\nfunction scatterLinearTrendLine(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, options: options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n}\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var ref$1 = calculateSlope(seriesValues(), scatterValueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var xMin = ref$1.xMin;\n var xMax = ref$1.xMax;\n\n if (count > 0) {\n var data = [];\n var forecast = (options.trendline || {}).forecast;\n if (forecast) {\n if (forecast.before > 0) {\n xMin -= forecast.before;\n }\n\n if (forecast.after > 0) {\n xMax += forecast.after;\n }\n }\n\n var samplingInterval = (options.trendline || {}).samplingInterval;\n var delta = valueOrDefault(samplingInterval, autoMajorUnit(xMin, xMax) / 10);\n if (samplingInterval <= 0) {\n delta = xMax - xMin;\n }\n\n for (var x = xMin; x <= xMax; x += delta) {\n data.push([ x,\n slope * x + intercept\n ]);\n }\n\n return data;\n }\n\n return null;\n}\n\nexport default scatterLinearTrendLine;\n","import calculateMovingAverage from './calculate-moving-average';\nimport { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\nimport scatterValueGetter from './scatter-value-getter';\n\nfunction scatterMovingAverageTrendline(context) {\n var options = context.options;\n\n var data = getData(context);\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n}\n\nfunction getData(ref) {\n var options = ref.options;\n var seriesValues = ref.seriesValues;\n\n var period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n var range = { before: period, after: period };\n var data = calculateMovingAverage(seriesValues(range), scatterValueGetter(options.field), period);\n\n if (data.length > 0) {\n return data;\n }\n\n return null;\n}\n\nexport default scatterMovingAverageTrendline;\n","import scatterLinearTrendLine from './scatter-linear-trendline';\nimport scatterMovingAverageTrendline from './scatter-moving-average';\nimport { TRENDLINE_LINEAR, TRENDLINE_MOVING_AVERAGE } from '../constants';\n\nvar scatterRegistry = {};\nscatterRegistry[TRENDLINE_LINEAR] = scatterLinearTrendLine;\nscatterRegistry[TRENDLINE_MOVING_AVERAGE] = scatterMovingAverageTrendline;\n\nexport default scatterRegistry;\n","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport ScatterChart from '../scatter-charts/scatter-chart';\nimport ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport BubbleChart from '../bubble-chart/bubble-chart';\nimport SeriesBinder from '../series-binder';\nimport trendlineFactory from '../trendlines/trendline-factory';\nimport scatterTrendlineRegistry from '../trendlines/scatter-trendline-registry';\n\nimport { NumericAxis, LogarithmicAxis, DateValueAxis, Point } from '../../core';\n\nimport { filterSeriesByType, equalsIgnoreCase, singleItemOrArray } from '../utils';\n\nimport { SCATTER, SCATTER_LINE, BUBBLE, LOGARITHMIC } from '../constants';\n\nimport { DATE } from '../../common/constants';\nimport { deepExtend, eventElement, grep, inArray, setDefaultOptions } from '../../common';\n\nvar XYPlotArea = (function (PlotAreaBase) {\n function XYPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) XYPlotArea.__proto__ = PlotAreaBase;\n XYPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n XYPlotArea.prototype.constructor = XYPlotArea;\n\n XYPlotArea.prototype.initFields = function initFields () {\n this.namedXAxes = {};\n this.namedYAxes = {};\n\n this.xAxisRangeTracker = new AxisGroupRangeTracker();\n this.yAxisRangeTracker = new AxisGroupRangeTracker();\n };\n\n XYPlotArea.prototype.render = function render (panes) {\n var this$1 = this;\n if ( panes === void 0 ) panes = this.panes;\n\n this.series = [].concat( this.originalSeries );\n this.createTrendlineSeries();\n\n var seriesByPane = this.groupSeriesByPane();\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1.addToLegend(paneSeries);\n var filteredSeries = this$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1.createScatterChart(\n filterSeriesByType(filteredSeries, SCATTER),\n pane\n );\n\n this$1.createScatterLineChart(\n filterSeriesByType(filteredSeries, SCATTER_LINE),\n pane\n );\n\n this$1.createBubbleChart(\n filterSeriesByType(filteredSeries, BUBBLE),\n pane\n );\n }\n\n this.createAxes(panes);\n };\n\n XYPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n this.xAxisRangeTracker.update(chart.xAxisRanges);\n this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n };\n\n XYPlotArea.prototype.removeAxis = function removeAxis (axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n this.yAxisRangeTracker.reset(axisName);\n delete this.namedYAxes[axisName];\n } else {\n this.xAxisRangeTracker.reset(axisName);\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n };\n\n // TODO: Refactor, optionally use series.pane option\n XYPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n };\n\n XYPlotArea.prototype.createScatterChart = function createScatterChart (series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n };\n\n XYPlotArea.prototype.createScatterLineChart = function createScatterLineChart (series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n };\n\n XYPlotArea.prototype.createBubbleChart = function createBubbleChart (series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new BubbleChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n };\n\n XYPlotArea.prototype.createXYAxis = function createXYAxis (options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n var axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n var isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n var defaultRange = tracker.query();\n var defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n var typeSamples = [ axisOptions.min, axisOptions.max ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n if (axisIndex === 0 && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateValueAxis;\n } else if (isLog) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n var axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n\n return axis;\n };\n\n XYPlotArea.prototype.createAxes = function createAxes (panes) {\n var this$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n };\n\n XYPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n var currentValue = axis.getValue(point);\n if (currentValue !== null) {\n values.push(currentValue);\n }\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n };\n\n XYPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n };\n\n XYPlotArea.prototype.trendlineFactory = function trendlineFactory$1 (options, series) {\n var seriesValues = this.seriesValues.bind(this, series.index);\n\n var trendline = trendlineFactory(scatterTrendlineRegistry, options.type, {\n options: options,\n seriesValues: seriesValues\n });\n\n if (trendline) {\n // Inherit settings\n trendline.xAxis = series.xAxis;\n trendline.yAxis = series.yAxis;\n }\n\n return trendline;\n };\n\n XYPlotArea.prototype.seriesValues = function seriesValues (seriesIx) {\n var this$1 = this;\n\n var result = [];\n var currentSeries = this.series[seriesIx];\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var data = this$1.bindPoint(currentSeries, pointIx);\n result.push({ pointIx: pointIx, valueFields: data.valueFields });\n }\n\n return result;\n };\n\n return XYPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(XYPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default XYPlotArea;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, ShapeBuilder, TextBox, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { OUTSIDE_END, INSIDE_END, PIE, FADEIN, TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { TOP, BOTTOM, LEFT, RIGHT, DEFAULT_FONT, CIRCLE, WHITE, CENTER, DEFAULT_PRECISION } from '../../common/constants';\nimport { autoTextColor, setDefaultOptions, getSpacing, getTemplate, deepExtend, round, rad } from '../../common';\n\nvar PieSegment = (function (ChartElement) {\n function PieSegment(value, sector, options) {\n ChartElement.call(this, options);\n\n this.value = value;\n this.sector = sector;\n }\n\n if ( ChartElement ) PieSegment.__proto__ = ChartElement;\n PieSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n PieSegment.prototype.constructor = PieSegment;\n\n PieSegment.prototype.render = function render () {\n var labels = this.options.labels;\n var chartService = this.owner.chartService;\n var labelText = this.value;\n\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n var labelTemplate = getTemplate(labels);\n var pointData = this.pointData();\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = chartService.format.auto(labels.format, labelText);\n }\n\n if (labels.visible && (labelText || labelText === 0)) {\n if (labels.position === CENTER || labels.position === INSIDE_END) {\n if (!labels.color) {\n labels.color = autoTextColor(this.options.color);\n }\n if (!labels.background) {\n labels.background = this.options.color;\n }\n } else {\n var themeLabels = chartService.theme.seriesDefaults.labels;\n labels.color = labels.color || themeLabels.color;\n labels.background = labels.background || themeLabels.background;\n }\n\n\n this.label = new TextBox(labelText, deepExtend({}, labels, {\n align: CENTER,\n vAlign: \"\",\n animation: {\n type: FADEIN,\n delay: this.animationDelay\n }\n }), pointData);\n\n this.append(this.label);\n }\n };\n\n PieSegment.prototype.reflow = function reflow (targetBox) {\n this.render();\n this.box = targetBox;\n this.reflowLabel();\n };\n\n PieSegment.prototype.reflowLabel = function reflowLabel () {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var labelsDistance = labelsOptions.distance;\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n var labelWidth = label.box.width();\n var lp;\n\n if (labelsOptions.position === CENTER) {\n sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else if (labelsOptions.position === INSIDE_END) {\n sector.radius = sector.radius - labelHeight / 2;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n var x1;\n lp = sector.clone().expand(labelsDistance).point(angle);\n if (lp.x >= sector.center.x) {\n x1 = lp.x + labelWidth;\n label.orientation = RIGHT;\n } else {\n x1 = lp.x - labelWidth;\n label.orientation = LEFT;\n }\n label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n }\n }\n };\n\n PieSegment.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n\n ChartElement.prototype.createVisual.call(this);\n\n if (this.value) {\n if (options.visual) {\n var startAngle = (sector.startAngle + 180) % 360;\n var visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n center: new geom.Point(sector.center.x, sector.center.y),\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n startAngle: startAngle,\n endAngle: startAngle + sector.angle,\n options: options,\n sender: this.getSender(),\n createVisual: function () {\n var group = new draw.Group();\n this$1.createSegmentVisual(group);\n\n return group;\n }\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else {\n this.createSegmentVisual(this.visual);\n }\n }\n };\n\n PieSegment.prototype.createSegmentVisual = function createSegmentVisual (group) {\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n var borderOptions = options.border || {};\n var border = borderOptions.width > 0 ? {\n stroke: {\n color: borderOptions.color,\n width: borderOptions.width,\n opacity: borderOptions.opacity,\n dashType: borderOptions.dashType\n }\n } : {};\n var color = options.color;\n var fill = {\n color: color,\n opacity: options.opacity\n };\n var visual = this.createSegment(sector, deepExtend({\n fill: fill,\n stroke: {\n opacity: options.opacity\n },\n zIndex: options.zIndex\n }, border));\n\n group.append(visual);\n\n if (hasGradientOverlay(options)) {\n group.append(this.createGradientOverlay(visual, {\n baseColor: color,\n fallbackFill: fill\n }, deepExtend({\n center: [ sector.center.x, sector.center.y ],\n innerRadius: sector.innerRadius,\n radius: sector.radius,\n userSpace: true\n }, options.overlay)));\n }\n };\n\n PieSegment.prototype.createSegment = function createSegment (sector, options) {\n if (options.singleSegment) {\n return new draw.Circle(new geom.Circle(new geom.Point(sector.center.x, sector.center.y), sector.radius), options);\n }\n\n return ShapeBuilder.current.createRing(sector, options);\n };\n\n PieSegment.prototype.createAnimation = function createAnimation () {\n var ref = this;\n var options = ref.options;\n var center = ref.sector.center;\n\n deepExtend(options, {\n animation: {\n center: [ center.x, center.y ],\n delay: this.animationDelay\n }\n });\n\n ChartElement.prototype.createAnimation.call(this);\n };\n\n PieSegment.prototype.createHighlight = function createHighlight (options) {\n var highlight = this.options.highlight || {};\n var border = highlight.border || {};\n\n return this.createSegment(this.sector, deepExtend({}, options, {\n fill: {\n color: highlight.color,\n opacity: highlight.opacity\n },\n stroke: {\n opacity: border.opacity,\n width: border.width,\n color: border.color\n }\n }));\n };\n\n PieSegment.prototype.highlightVisual = function highlightVisual () {\n return this.visual.children[0];\n };\n\n PieSegment.prototype.highlightVisualArgs = function highlightVisualArgs () {\n var sector = this.sector;\n\n return {\n options: this.options,\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n center: new geom.Point(sector.center.x, sector.center.y),\n startAngle: sector.startAngle,\n endAngle: sector.angle + sector.startAngle,\n visual: this.visual\n };\n };\n\n PieSegment.prototype.tooltipAnchor = function tooltipAnchor () {\n var sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n\n return {\n point: midPoint,\n align: tooltipAlignment(midAndle + 180)\n };\n };\n\n PieSegment.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n PieSegment.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n };\n\n return PieSegment;\n}(ChartElement));\n\nvar RAD_30 = round(rad(30), DEFAULT_PRECISION);\nvar RAD_60 = round(rad(60), DEFAULT_PRECISION);\n\nfunction tooltipAlignment(angle) {\n var radians = rad(angle);\n var sine = round(Math.sin(radians), DEFAULT_PRECISION);\n var cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n\n var horizontal;\n if (Math.abs(sine) > RAD_60) {\n horizontal = CENTER;\n } else if (cosine < 0) {\n horizontal = RIGHT;\n } else {\n horizontal = LEFT;\n }\n\n var vertical;\n if (Math.abs(sine) < RAD_30) {\n vertical = CENTER;\n } else if (sine < 0) {\n vertical = BOTTOM;\n } else {\n vertical = TOP;\n }\n\n return {\n horizontal: horizontal,\n vertical: vertical\n };\n}\n\nsetDefaultOptions(PieSegment, {\n color: WHITE,\n overlay: {\n gradient: \"roundedBevel\"\n },\n border: {\n width: 0.5\n },\n labels: {\n visible: false,\n distance: 35,\n font: DEFAULT_FONT,\n margin: getSpacing(0.5),\n align: CIRCLE,\n zIndex: 1,\n position: OUTSIDE_END\n },\n animation: {\n type: PIE\n },\n highlight: {\n visible: true,\n border: {\n width: 1\n }\n },\n visible: true\n});\n\ndeepExtend(PieSegment.prototype, PointEventsMixin);\n\nexport default PieSegment;\n","import { getTemplate } from '../../common';\nimport { hasValue } from '../utils';\n\nvar PieChartMixin = {\n createLegendItem: function(value, point, options) {\n var legendOptions = this.options.legend || {};\n var labelsOptions = legendOptions.labels || {};\n var inactiveItems = legendOptions.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n\n if (options && options.visibleInLegend !== false) {\n var pointVisible = options.visible !== false;\n var labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n var text = options.category;\n\n if (labelTemplate) {\n text = labelTemplate({\n text: text,\n series: options.series,\n dataItem: options.dataItem,\n percentage: options.percentage,\n value: value\n });\n }\n\n var itemLabelOptions, markerColor;\n if (pointVisible) {\n itemLabelOptions = {};\n markerColor = point.color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = (inactiveItems.markers || {}).color;\n }\n\n if (hasValue(text) && text !== \"\") {\n this.legendItems.push({\n active: pointVisible,\n pointIndex: options.index,\n text: text,\n series: options.series,\n markerColor: markerColor,\n labels: itemLabelOptions\n });\n }\n }\n }\n};\n\nexport default PieChartMixin;","import { drawing as draw, geometry } from '@progress/kendo-drawing';\n\nimport PieSegment from './pie-segment';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport { ChartElement, Ring, Box, Point } from '../../core';\n\nimport { OUTSIDE_END, FADEIN, COLUMN } from '../constants';\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CIRCLE, RIGHT, CENTER } from '../../common/constants';\nimport { deepExtend, defined, find, isFunction, last, round, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar PIE_SECTOR_ANIM_DELAY = 70;\n\nvar PieChart = (function (ChartElement) {\n function PieChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.legendItems = [];\n this.render();\n }\n\n if ( ChartElement ) PieChart.__proto__ = ChartElement;\n PieChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n PieChart.prototype.constructor = PieChart;\n\n PieChart.prototype.render = function render () {\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n PieChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if ( seriesColors === void 0 ) seriesColors = [];\n var colorsCount = seriesColors.length;\n var series = options.series;\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var data = currentSeries.data;\n var ref$1 = bindSegments(currentSeries);\n var total = ref$1.total;\n var points = ref$1.points;\n var count = ref$1.count;\n var anglePerValue = 360 / total;\n var constantAngle = (void 0);\n if (!isFinite(anglePerValue)) {\n constantAngle = 360 / count;\n }\n var currentAngle = (void 0);\n\n if (defined(currentSeries.startAngle)) {\n currentAngle = currentSeries.startAngle;\n } else {\n currentAngle = options.startAngle;\n }\n\n if (seriesIx !== seriesCount - 1) {\n if (currentSeries.labels.position === OUTSIDE_END) {\n currentSeries.labels.position = CENTER;\n }\n }\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n var value = pointData.value;\n var visible = pointData.visible;\n var angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n var explode = data.length !== 1 && Boolean(fields.explode);\n\n if (!isFunction(currentSeries.color)) {\n currentSeries.color = fields.color || seriesColors[i % colorsCount];\n }\n\n callback(value, new Ring(null, 0, 0, currentAngle, angle), {\n owner: this$1,\n category: defined(fields.category) ? fields.category : \"\",\n index: i,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: total !== 0 ? value / total : 0,\n explode: explode,\n visibleInLegend: fields.visibleInLegend,\n visible: visible,\n zIndex: seriesCount - seriesIx,\n animationDelay: this$1.animationDelay(i, seriesIx, seriesCount)\n });\n\n if (visible !== false) {\n currentAngle += angle;\n }\n }\n }\n };\n\n PieChart.prototype.evalSegmentOptions = function evalSegmentOptions (options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n category: fields.category,\n percentage: fields.percentage\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"visual\", \"toggle\" ] });\n };\n\n PieChart.prototype.addValue = function addValue (value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new PieSegment(value, sector, segmentOptions);\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n };\n\n PieChart.prototype.reflow = function reflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var points = ref.points;\n var seriesConfigs = ref.seriesConfigs; if ( seriesConfigs === void 0 ) seriesConfigs = [];\n var count = points.length;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n var newBoxCenter = newBox.center();\n var boxCenter = box.center();\n var seriesCount = options.series.length;\n var leftSideLabels = [];\n var rightSideLabels = [];\n var padding = valueOrDefault(options.padding, defaultPadding);\n\n this.targetBox = targetBox;\n\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n var radius = halfMinWidth - padding;\n var center = new Point(\n radius + newBox.x1 + padding,\n radius + newBox.y1 + padding\n );\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var seriesIndex = segment.seriesIx;\n sector.radius = radius;\n sector.center = center;\n\n if (seriesConfigs.length) {\n var seriesConfig = seriesConfigs[seriesIndex];\n sector.innerRadius = seriesConfig.innerRadius;\n sector.radius = seriesConfig.radius;\n }\n\n if (seriesIndex === seriesCount - 1 && segment.explode) {\n sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n }\n\n segment.reflow(newBox);\n\n var label = segment.label;\n if (label) {\n if (label.options.position === OUTSIDE_END) {\n if (seriesIndex === seriesCount - 1) {\n if (label.orientation === RIGHT) {\n rightSideLabels.push(label);\n } else {\n leftSideLabels.push(label);\n }\n }\n }\n }\n }\n\n if (leftSideLabels.length > 0) {\n leftSideLabels.sort(this.labelComparator(true));\n this.leftLabelsReflow(leftSideLabels);\n }\n\n if (rightSideLabels.length > 0) {\n rightSideLabels.sort(this.labelComparator(false));\n this.rightLabelsReflow(rightSideLabels);\n }\n\n this.box = newBox;\n };\n\n PieChart.prototype.leftLabelsReflow = function leftLabelsReflow (labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n };\n\n PieChart.prototype.rightLabelsReflow = function rightLabelsReflow (labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n };\n\n PieChart.prototype.distanceBetweenLabels = function distanceBetweenLabels (labels) {\n var segment = last(this.points);\n var sector = segment.sector;\n var count = labels.length - 1;\n var lr = sector.radius + segment.options.labels.distance;\n var distances = [];\n var firstBox = labels[0].box;\n var distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n distances.push(distance);\n\n for (var i = 0; i < count; i++) {\n var secondBox = labels[i + 1].box;\n\n firstBox = labels[i].box;\n distance = round(secondBox.y1 - firstBox.y2);\n distances.push(distance);\n }\n distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n distances.push(distance);\n\n return distances;\n };\n\n PieChart.prototype.distributeLabels = function distributeLabels (distances, labels) {\n var this$1 = this;\n\n var count = distances.length;\n var left, right, remaining;\n\n for (var i = 0; i < count; i++) {\n remaining = -distances[i];\n left = right = i;\n\n while (remaining > 0 && (left >= 0 || right < count)) {\n remaining = this$1._takeDistance(distances, i, --left, remaining);\n remaining = this$1._takeDistance(distances, i, ++right, remaining);\n }\n }\n\n this.reflowLabels(distances, labels);\n };\n\n PieChart.prototype._takeDistance = function _takeDistance (distances, anchor, position, amount) {\n var result = amount;\n if (distances[position] > 0) {\n var available = Math.min(distances[position], result);\n result -= available;\n distances[position] -= available;\n distances[anchor] += available;\n }\n\n return result;\n };\n\n PieChart.prototype.reflowLabels = function reflowLabels (distances, labels) {\n var this$1 = this;\n\n var segment = last(this.points);\n var sector = segment.sector;\n var labelOptions = segment.options.labels;\n var labelsCount = labels.length;\n var labelDistance = labelOptions.distance;\n var boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n var boxX;\n\n distances[0] += 2;\n for (var i = 0; i < labelsCount; i++) {\n var label = labels[i];\n var box = label.box;\n\n boxY += distances[i];\n boxX = this$1.hAlignLabel(\n box.x2,\n sector.clone().expand(labelDistance),\n boxY,\n boxY + box.height(),\n label.orientation === RIGHT);\n\n if (label.orientation === RIGHT) {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.radius + sector.center.x + labelDistance;\n }\n label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n } else {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.center.x - sector.radius - labelDistance;\n }\n label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n }\n\n boxY += box.height();\n }\n };\n\n PieChart.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var ref = this;\n var connectors = ref.options.connectors;\n var points = ref.points;\n var count = points.length;\n var space = 4;\n\n ChartElement.prototype.createVisual.call(this);\n\n this._connectorLines = [];\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var label = segment.label;\n var angle = sector.middle();\n var connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n if (label) {\n var connectorLine = new draw.Path({\n stroke: {\n color: connectorsColor,\n width: connectors.width\n },\n animation: {\n type: FADEIN,\n delay: segment.animationDelay\n }\n });\n\n if (label.options.position === OUTSIDE_END) {\n var box = label.box;\n var centerPoint = sector.center;\n var start = sector.point(angle);\n var middle = new Point(box.x1, box.center().y);\n var sr = (void 0), end = (void 0), crossing = (void 0);\n\n start = sector.clone().expand(connectors.padding).point(angle);\n connectorLine.moveTo(start.x, start.y);\n // TODO: Extract into a method to remove duplication\n if (label.orientation === RIGHT) {\n end = new Point(box.x1 - connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x - space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.min(crossing.x, middle.x);\n\n if (this$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x < sector.center.x) {\n sr = sector.center.x + sector.radius + space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr < middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x + space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n } else {\n end = new Point(box.x2 + connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x + space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.max(crossing.x, middle.x);\n\n if (this$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x > sector.center.x) {\n sr = sector.center.x - sector.radius - space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr > middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x - space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n }\n\n connectorLine.lineTo(end.x, end.y);\n\n this$1._connectorLines.push(connectorLine);\n this$1.visual.append(connectorLine);\n }\n }\n }\n };\n\n PieChart.prototype.renderVisual = function renderVisual () {\n ChartElement.prototype.renderVisual.call(this);\n\n if (find(this.options.series, function (options) { return options.autoFit; })) {\n var targetBox = this.targetBox;\n var pieCenter = this.box.center();\n var bbox = this.visual.bbox();\n if (!bbox) {\n return;\n }\n\n var bboxBottom = bbox.bottomRight();\n\n var scale = Math.min(\n (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n );\n\n if (scale < 1) {\n this.visual.transform(geometry.transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n }\n }\n };\n\n PieChart.prototype.labelComparator = function labelComparator (reverse) {\n var reverseValue = reverse ? -1 : 1;\n\n return function(a, b) {\n var first = (a.parent.sector.middle() + 270) % 360;\n var second = (b.parent.sector.middle() + 270) % 360;\n return (first - second) * reverseValue;\n };\n };\n\n PieChart.prototype.hAlignLabel = function hAlignLabel (originalX, sector, y1, y2, direction) {\n var radius = sector.radius;\n var sector_center = sector.center;\n var cx = sector_center.x;\n var cy = sector_center.y;\n var t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n if (t > radius) {\n return originalX;\n }\n\n return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n };\n\n PieChart.prototype.pointInCircle = function pointInCircle (point, center, radius) {\n return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n };\n\n PieChart.prototype.formatPointValue = function formatPointValue (point, format) {\n return this.chartService.format.auto(format, point.value);\n };\n\n PieChart.prototype.animationDelay = function animationDelay (categoryIndex) {\n return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n };\n\n PieChart.prototype.stackRoot = function stackRoot () {\n return this;\n };\n\n return PieChart;\n}(ChartElement));\n\nfunction intersection(a1, a2, b1, b2) {\n var uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n var ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n var result;\n if (ub !== 0) {\n var ua = (uat / ub);\n\n result = new Point(\n a1.x + ua * (a2.x - a1.x),\n a1.y + ua * (a2.y - a1.y)\n );\n }\n\n return result;\n}\n\nsetDefaultOptions(PieChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n },\n inactiveItems: {\n markers: {},\n labels: {}\n }\n});\n\ndeepExtend(PieChart.prototype, PieChartMixin);\n\nPieChart.prototype.isStackRoot = true;\n\nexport default PieChart;\n","import PlotAreaBase from './plotarea-base';\nimport PieChart from '../pie-chart/pie-chart';\n\nimport { append } from '../../common';\n\nvar PiePlotArea = (function (PlotAreaBase) {\n function PiePlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) PiePlotArea.__proto__ = PlotAreaBase;\n PiePlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n PiePlotArea.prototype.constructor = PiePlotArea;\n\n PiePlotArea.prototype.render = function render () {\n this.createPieChart(this.series);\n };\n\n PiePlotArea.prototype.createPieChart = function createPieChart (series) {\n var firstSeries = series[0];\n var pieChart = new PieChart(this, {\n series: series,\n padding: firstSeries.padding,\n startAngle: firstSeries.startAngle,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(pieChart);\n };\n\n PiePlotArea.prototype.appendChart = function appendChart (chart, pane) {\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n append(this.options.legend.items, chart.legendItems);\n };\n\n return PiePlotArea;\n}(PlotAreaBase));\n\nexport default PiePlotArea;","import PieSegment from '../pie-chart/pie-segment';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { PIE } from '../constants';\n\nimport { ShapeBuilder, Box } from '../../core';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar DonutSegment = (function (PieSegment) {\n function DonutSegment () {\n PieSegment.apply(this, arguments);\n }\n\n if ( PieSegment ) DonutSegment.__proto__ = PieSegment;\n DonutSegment.prototype = Object.create( PieSegment && PieSegment.prototype );\n DonutSegment.prototype.constructor = DonutSegment;\n\n DonutSegment.prototype.reflowLabel = function reflowLabel () {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n if (labelsOptions.position === CENTER) {\n sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n var lp = sector.point(angle);\n\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n PieSegment.prototype.reflowLabel.call(this);\n }\n }\n };\n\n DonutSegment.prototype.createSegment = function createSegment (sector, options) {\n return ShapeBuilder.current.createRing(sector, options);\n };\n\n return DonutSegment;\n}(PieSegment));\n\nsetDefaultOptions(DonutSegment, {\n overlay: {\n gradient: \"roundedGlass\"\n },\n labels: {\n position: CENTER\n },\n animation: {\n type: PIE\n }\n});\n\ndeepExtend(DonutSegment.prototype, PointEventsMixin);\n\n\nexport default DonutSegment;\n","import PieChart from '../pie-chart/pie-chart';\nimport DonutSegment from './donut-segment';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar DONUT_SECTOR_ANIM_DELAY = 50;\n\nvar DonutChart = (function (PieChart) {\n function DonutChart () {\n PieChart.apply(this, arguments);\n }\n\n if ( PieChart ) DonutChart.__proto__ = PieChart;\n DonutChart.prototype = Object.create( PieChart && PieChart.prototype );\n DonutChart.prototype.constructor = DonutChart;\n\n DonutChart.prototype.addValue = function addValue (value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new DonutSegment(value, sector, segmentOptions);\n\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n };\n\n DonutChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var options = this.options;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var series = options.series;\n var seriesCount = series.length;\n\n var padding = valueOrDefault(options.padding, defaultPadding);\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n var totalSize = halfMinWidth - padding;\n var seriesWithoutSize = 0;\n var holeSize;\n\n for (var i = 0; i < seriesCount; i++) {\n var currentSeries = series[i];\n if (i === 0) {\n if (defined(currentSeries.holeSize)) {\n holeSize = currentSeries.holeSize;\n totalSize -= currentSeries.holeSize;\n }\n }\n\n if (defined(currentSeries.size)) {\n totalSize -= currentSeries.size;\n } else {\n seriesWithoutSize++;\n }\n\n if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n totalSize -= currentSeries.margin;\n }\n }\n\n if (!defined(holeSize)) {\n var currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n holeSize = currentSize * 0.75;\n totalSize -= holeSize;\n }\n\n var innerRadius = holeSize;\n var margin = 0;\n var size, radius;\n\n this.seriesConfigs = [];\n\n for (var i$1 = 0; i$1 < seriesCount; i$1++) {\n var currentSeries$1 = series[i$1];\n size = valueOrDefault(currentSeries$1.size, totalSize / seriesWithoutSize);\n innerRadius += margin;\n radius = innerRadius + size;\n this$1.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n margin = currentSeries$1.margin || 0;\n innerRadius = radius;\n }\n\n PieChart.prototype.reflow.call(this, targetBox);\n };\n\n DonutChart.prototype.animationDelay = function animationDelay (categoryIndex, seriesIndex, seriesCount) {\n return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n };\n\n return DonutChart;\n}(PieChart));\n\n\nsetDefaultOptions(DonutChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n }\n});\n\nexport default DonutChart;\n","import PiePlotArea from './pie-plotarea';\nimport DonutChart from '../donut-chart/donut-chart';\n\nvar DonutPlotArea = (function (PiePlotArea) {\n function DonutPlotArea () {\n PiePlotArea.apply(this, arguments);\n }\n\n if ( PiePlotArea ) DonutPlotArea.__proto__ = PiePlotArea;\n DonutPlotArea.prototype = Object.create( PiePlotArea && PiePlotArea.prototype );\n DonutPlotArea.prototype.constructor = DonutPlotArea;\n\n DonutPlotArea.prototype.render = function render () {\n this.createDonutChart(this.series);\n };\n\n DonutPlotArea.prototype.createDonutChart = function createDonutChart (series) {\n var firstSeries = series[0];\n var donutChart = new DonutChart(this, {\n series: series,\n padding: firstSeries.padding,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(donutChart);\n };\n\n return DonutPlotArea;\n}(PiePlotArea));\n\nexport default DonutPlotArea;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport { RadarLogarithmicAxis, RadarNumericAxis } from '../../core';\n\nimport { LOGARITHMIC } from '../constants';\n\nimport { getSpacing } from '../../common';\nimport { Y, CENTER } from '../../common/constants';\n\nvar DEFAULT_PADDING = 0.15;\n\nvar PolarPlotAreaBase = (function (PlotAreaBase) {\n function PolarPlotAreaBase () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) PolarPlotAreaBase.__proto__ = PlotAreaBase;\n PolarPlotAreaBase.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n PolarPlotAreaBase.prototype.constructor = PolarPlotAreaBase;\n\n PolarPlotAreaBase.prototype.initFields = function initFields () {\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n };\n\n PolarPlotAreaBase.prototype.render = function render () {\n this.addToLegend(this.series);\n this.createPolarAxis();\n this.createCharts();\n this.createValueAxis();\n };\n\n PolarPlotAreaBase.prototype.alignAxes = function alignAxes () {\n var axis = this.valueAxis;\n var range = axis.range();\n var crossingValue = axis.options.reverse ? range.max : range.min;\n var slot = axis.getSlot(crossingValue);\n var center = this.polarAxis.getSlot(0).center;\n var axisBox = axis.box.translate(\n center.x - slot.x1,\n center.y - slot.y1\n );\n\n axis.reflow(axisBox);\n };\n\n PolarPlotAreaBase.prototype.createValueAxis = function createValueAxis () {\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var axisOptions = this.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n });\n var axisType, axisDefaultRange;\n\n if (axisOptions.type === LOGARITHMIC) {\n axisType = RadarLogarithmicAxis;\n axisDefaultRange = { min: 0.1, max: 1 };\n } else {\n axisType = RadarNumericAxis;\n axisDefaultRange = { min: 0, max: 1 };\n }\n\n var range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n if (range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var valueAxis = new axisType(\n range.min, range.max,\n axisOptions,\n this.chartService\n );\n\n this.valueAxis = valueAxis;\n this.appendAxis(valueAxis);\n };\n\n PolarPlotAreaBase.prototype.reflowAxes = function reflowAxes () {\n var ref = this;\n var options = ref.options.plotArea;\n var valueAxis = ref.valueAxis;\n var polarAxis = ref.polarAxis;\n var box = ref.box;\n var defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n var padding = getSpacing(options.padding || {}, defaultPadding);\n var paddingBox = box.clone().unpad(padding);\n var axisBox = paddingBox.clone();\n\n axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n axisBox.align(paddingBox, Y, CENTER);\n\n var valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n var heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n this.axisBox = axisBox;\n this.alignAxes(axisBox);\n };\n\n PolarPlotAreaBase.prototype.backgroundBox = function backgroundBox () {\n return this.box;\n };\n\n PolarPlotAreaBase.prototype.detachLabels = function detachLabels () {};\n\n return PolarPlotAreaBase;\n}(PlotAreaBase));\n\nexport default PolarPlotAreaBase;\n","import ScatterChart from '../scatter-charts/scatter-chart';\n\nimport { Point, Box } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PolarScatterChart = (function (ScatterChart) {\n function PolarScatterChart () {\n ScatterChart.apply(this, arguments);\n }\n\n if ( ScatterChart ) PolarScatterChart.__proto__ = ScatterChart;\n PolarScatterChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n PolarScatterChart.prototype.constructor = PolarScatterChart;\n\n PolarScatterChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n var valueRadius = slotX.center.y - slotY.y1;\n var slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n };\n\n return PolarScatterChart;\n}(ScatterChart));\n\nsetDefaultOptions(PolarScatterChart, {\n clip: false\n});\n\nexport default PolarScatterChart;","import ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PolarLineChart = (function (ScatterLineChart) {\n function PolarLineChart () {\n ScatterLineChart.apply(this, arguments);\n }if ( ScatterLineChart ) PolarLineChart.__proto__ = ScatterLineChart;\n PolarLineChart.prototype = Object.create( ScatterLineChart && ScatterLineChart.prototype );\n PolarLineChart.prototype.constructor = PolarLineChart;\n\n \n\n return PolarLineChart;\n}(ScatterLineChart));\n\nPolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\nsetDefaultOptions(PolarLineChart, {\n clip: false\n});\n\nexport default PolarLineChart;","import SplineAreaSegment from '../area-chart/spline-area-segment';\nimport { CurveProcessor } from '../../core';\n\nvar SplinePolarAreaSegment = (function (SplineAreaSegment) {\n function SplinePolarAreaSegment () {\n SplineAreaSegment.apply(this, arguments);\n }\n\n if ( SplineAreaSegment ) SplinePolarAreaSegment.__proto__ = SplineAreaSegment;\n SplinePolarAreaSegment.prototype = Object.create( SplineAreaSegment && SplineAreaSegment.prototype );\n SplinePolarAreaSegment.prototype.constructor = SplinePolarAreaSegment;\n\n SplinePolarAreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n var center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n };\n\n SplinePolarAreaSegment.prototype._polarAxisCenter = function _polarAxisCenter () {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n return center;\n };\n\n SplinePolarAreaSegment.prototype.strokeSegments = function strokeSegments () {\n var segments = this._strokeSegments;\n\n if (!segments) {\n var center = this._polarAxisCenter();\n var curveProcessor = new CurveProcessor(false);\n var linePoints = this.points();\n\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n\n return segments;\n };\n\n return SplinePolarAreaSegment;\n}(SplineAreaSegment));\n\nexport default SplinePolarAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nvar PolarAreaSegment = (function (AreaSegment) {\n function PolarAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) PolarAreaSegment.__proto__ = AreaSegment;\n PolarAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n PolarAreaSegment.prototype.constructor = PolarAreaSegment;\n\n PolarAreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n var centerSegment = new geom.Segment([ center.x, center.y ]);\n\n fillPath.segments.unshift(centerSegment);\n fillPath.segments.push(centerSegment);\n };\n\n return PolarAreaSegment;\n}(AreaSegment));\n\nexport default PolarAreaSegment;","import PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport SplinePolarAreaSegment from './spline-polar-area-segment';\nimport PolarAreaSegment from './polar-area-segment';\n\nimport { SMOOTH, INTERPOLATE, ZERO, GAP } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nvar PolarAreaChart = (function (PolarLineChart) {\n function PolarAreaChart () {\n PolarLineChart.apply(this, arguments);\n }\n\n if ( PolarLineChart ) PolarAreaChart.__proto__ = PolarLineChart;\n PolarAreaChart.prototype = Object.create( PolarLineChart && PolarLineChart.prototype );\n PolarAreaChart.prototype.constructor = PolarAreaChart;\n\n PolarAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segment;\n\n if (style === SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n }\n return segment;\n };\n\n PolarAreaChart.prototype.createMissingValue = function createMissingValue (value, missingValues) {\n var missingValue;\n\n if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues === ZERO) {\n missingValue.y = 0;\n }\n }\n\n return missingValue;\n };\n\n PolarAreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues || ZERO;\n };\n\n PolarAreaChart.prototype._hasMissingValuesGap = function _hasMissingValuesGap () {\n var this$1 = this;\n\n var series = this.options.series;\n\n for (var idx = 0; idx < series.length; idx++) {\n if (this$1.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n };\n\n PolarAreaChart.prototype.sortPoints = function sortPoints (points) {\n var this$1 = this;\n\n points.sort(xComparer);\n\n if (this._hasMissingValuesGap()) {\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n var value = point.value;\n if (!hasValue(value.y) && this$1.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n\n return points;\n };\n\n return PolarAreaChart;\n}(PolarLineChart));\n\nfunction xComparer(a, b) {\n return a.value.x - b.value.x;\n}\n\nexport default PolarAreaChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport PlotAreaBase from './plotarea-base';\nimport PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\nimport PolarAreaChart from '../polar-area-chart/polar-area-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { PolarAxis, Point } from '../../core';\n\nimport { POLAR_AREA, POLAR_LINE, POLAR_SCATTER } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { deepExtend, eventElement, setDefaultOptions } from '../../common';\nimport XYPlotArea from './xy-plotarea';\n\nvar PolarPlotArea = (function (PolarPlotAreaBase) {\n function PolarPlotArea () {\n PolarPlotAreaBase.apply(this, arguments);\n }\n\n if ( PolarPlotAreaBase ) PolarPlotArea.__proto__ = PolarPlotAreaBase;\n PolarPlotArea.prototype = Object.create( PolarPlotAreaBase && PolarPlotAreaBase.prototype );\n PolarPlotArea.prototype.constructor = PolarPlotArea;\n\n PolarPlotArea.prototype.createPolarAxis = function createPolarAxis () {\n var polarAxis = new PolarAxis(this.options.xAxis, this.chartService);\n\n this.polarAxis = polarAxis;\n this.axisX = polarAxis;\n this.appendAxis(polarAxis);\n };\n\n PolarPlotArea.prototype.render = function render () {\n this.series = [].concat( this.originalSeries );\n this.createTrendlineSeries();\n\n PolarPlotAreaBase.prototype.render.call(this);\n };\n\n PolarPlotArea.prototype.valueAxisOptions = function valueAxisOptions (defaults) {\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, this.options.yAxis);\n };\n\n PolarPlotArea.prototype.createValueAxis = function createValueAxis () {\n PolarPlotAreaBase.prototype.createValueAxis.call(this);\n this.axisY = this.valueAxis;\n };\n\n PolarPlotArea.prototype.trendlineFactory = function trendlineFactory (options, series) {\n var trendline = XYPlotArea.prototype.trendlineFactory.call(this, options, series);\n if (trendline) {\n trendline.type = POLAR_LINE;\n }\n\n return trendline;\n };\n\n PolarPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n };\n\n PolarPlotArea.prototype.createCharts = function createCharts () {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createLineChart(\n filterSeriesByType(series, [ POLAR_LINE ]),\n pane\n );\n\n this.createScatterChart(\n filterSeriesByType(series, [ POLAR_SCATTER ]),\n pane\n );\n\n this.createAreaChart(\n filterSeriesByType(series, [ POLAR_AREA ]),\n pane\n );\n };\n\n PolarPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new PolarLineChart(this, { series: series });\n\n this.appendChart(lineChart, pane);\n };\n\n PolarPlotArea.prototype.createScatterChart = function createScatterChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var scatterChart = new PolarScatterChart(this, { series: series });\n\n this.appendChart(scatterChart, pane);\n };\n\n PolarPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new PolarAreaChart(this, { series: series });\n\n this.appendChart(areaChart, pane);\n };\n\n PolarPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var xValue = this.axisX.getValue(point);\n var yValue = this.axisY.getValue(point);\n\n if (xValue !== null && yValue !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n x: xValue,\n y: yValue\n });\n }\n };\n\n PolarPlotArea.prototype.createCrosshairs = function createCrosshairs () {};\n\n return PolarPlotArea;\n}(PolarPlotAreaBase));\n\nsetDefaultOptions(PolarPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin, {\n seriesValues: XYPlotArea.prototype.seriesValues\n});\n\nexport default PolarPlotArea;\n","import LineChart from '../line-chart/line-chart';\nimport SplineSegment from '../line-chart/spline-segment';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { Point, Box } from '../../core';\n\nimport { SMOOTH, INTERPOLATE } from '../constants';\n\nimport { setDefaultOptions, last } from '../../common';\n\nfunction groupBySeriesIx(segments) {\n var seriesSegments = [];\n for (var idx = 0; idx < segments.length; idx++) {\n var segment = segments[idx];\n seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n seriesSegments[segment.seriesIx].push(segment);\n }\n\n return seriesSegments;\n}\n\nvar RadarLineChart = (function (LineChart) {\n function RadarLineChart () {\n LineChart.apply(this, arguments);\n }\n\n if ( LineChart ) RadarLineChart.__proto__ = LineChart;\n RadarLineChart.prototype = Object.create( LineChart && LineChart.prototype );\n RadarLineChart.prototype.constructor = RadarLineChart;\n\n RadarLineChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var valueRadius = categorySlot.center.y - valueSlot.y1;\n var slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n };\n\n RadarLineChart.prototype.renderSegments = function renderSegments () {\n LineChart.prototype.renderSegments.call(this);\n\n if (this._segments && this._segments.length > 1) {\n var seriesSegments = groupBySeriesIx(this._segments);\n\n for (var idx = 0; idx < seriesSegments.length; idx++) {\n var segments = seriesSegments[idx];\n if (segments && segments.length > 1) {\n var firstPoint = segments[0].linePoints[0];\n var lastSegment = last(segments);\n var lastPoint = last(lastSegment.linePoints);\n var isFirstDataPoint = firstPoint.categoryIx === 0;\n var isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n if (isFirstDataPoint && isLastDataPoint) {\n last(segments).linePoints.push(firstPoint);\n }\n }\n }\n }\n };\n\n RadarLineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n var segment = new pointType(linePoints, currentSeries, seriesIx);\n var missingValues = this.seriesMissingValues(currentSeries);\n\n if (linePoints.length === currentSeries.data.length || missingValues === INTERPOLATE) {\n segment.options.closed = true;\n }\n\n return segment;\n };\n\n return RadarLineChart;\n}(LineChart));\n\nsetDefaultOptions(RadarLineChart, {\n clip: false,\n limitPoints: false\n});\n\nexport default RadarLineChart;\n","import SplineAreaSegment from '../area-chart/spline-area-segment';\n\nvar SplineRadarAreaSegment = (function (SplineAreaSegment) {\n function SplineRadarAreaSegment () {\n SplineAreaSegment.apply(this, arguments);\n }\n\n if ( SplineAreaSegment ) SplineRadarAreaSegment.__proto__ = SplineAreaSegment;\n SplineRadarAreaSegment.prototype = Object.create( SplineAreaSegment && SplineAreaSegment.prototype );\n SplineRadarAreaSegment.prototype.constructor = SplineRadarAreaSegment;\n\n SplineRadarAreaSegment.prototype.fillToAxes = function fillToAxes () {};\n\n return SplineRadarAreaSegment;\n}(SplineAreaSegment));\n\nexport default SplineRadarAreaSegment;","import AreaSegment from '../area-chart/area-segment';\n\nvar RadarAreaSegment = (function (AreaSegment) {\n function RadarAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) RadarAreaSegment.__proto__ = AreaSegment;\n RadarAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n RadarAreaSegment.prototype.constructor = RadarAreaSegment;\n\n RadarAreaSegment.prototype.fillToAxes = function fillToAxes () {};\n\n return RadarAreaSegment;\n}(AreaSegment));\n\nexport default RadarAreaSegment;","import RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport SplineRadarAreaSegment from './spline-radar-area-segment';\nimport RadarAreaSegment from './radar-area-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nvar RadarAreaChart = (function (RadarLineChart) {\n function RadarAreaChart () {\n RadarLineChart.apply(this, arguments);\n }\n\n if ( RadarLineChart ) RadarAreaChart.__proto__ = RadarLineChart;\n RadarAreaChart.prototype = Object.create( RadarLineChart && RadarLineChart.prototype );\n RadarAreaChart.prototype.constructor = RadarAreaChart;\n\n RadarAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n var stackPoints;\n var segment;\n\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0);\n previousSegment = prevSegment;\n }\n\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n segment.options.closed = true;\n } else {\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n return segment;\n };\n\n RadarAreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues || ZERO;\n };\n\n return RadarAreaChart;\n}(RadarLineChart));\n\nexport default RadarAreaChart;","import DonutSegment from '../donut-chart/donut-segment';\n\nimport { setDefaultOptions } from '../../common';\n\nvar RadarSegment = (function (DonutSegment) {\n function RadarSegment(value, options) {\n DonutSegment.call(this, value, null, options);\n }\n\n if ( DonutSegment ) RadarSegment.__proto__ = DonutSegment;\n RadarSegment.prototype = Object.create( DonutSegment && DonutSegment.prototype );\n RadarSegment.prototype.constructor = RadarSegment;\n\n return RadarSegment;\n}(DonutSegment));\n\nsetDefaultOptions(RadarSegment, {\n overlay: {\n gradient: \"none\"\n },\n labels: {\n distance: 10\n }\n});\n\nexport default RadarSegment;","import { ChartElement } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nimport { forEach, forEachReverse } from './utils';\n\nvar RadarClusterLayout = (function (ChartElement) {\n function RadarClusterLayout(options) {\n ChartElement.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n if ( ChartElement ) RadarClusterLayout.__proto__ = ChartElement;\n RadarClusterLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n RadarClusterLayout.prototype.constructor = RadarClusterLayout;\n\n RadarClusterLayout.prototype.reflow = function reflow (sector) {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var gap = options.gap;\n var spacing = options.spacing;\n var count = children.length;\n var slots = count + gap + (spacing * (count - 1));\n var slotAngle = sector.angle / slots;\n var angle = sector.startAngle + slotAngle * (gap / 2);\n\n this.forEach(children, function (child) {\n var slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n\n if (child.sector) {\n slotSector.radius = child.sector.radius;\n }\n\n child.reflow(slotSector);\n child.sector = slotSector;\n\n angle += slotAngle + (slotAngle * spacing);\n });\n };\n\n return RadarClusterLayout;\n}(ChartElement));\n\nsetDefaultOptions(RadarClusterLayout, {\n gap: 1,\n spacing: 0\n});\n\nexport default RadarClusterLayout;","import { ChartElement, Box } from '../../core';\n\nvar RadarStackLayout = (function (ChartElement) {\n function RadarStackLayout () {\n ChartElement.apply(this, arguments);\n }\n\n if ( ChartElement ) RadarStackLayout.__proto__ = ChartElement;\n RadarStackLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n RadarStackLayout.prototype.constructor = RadarStackLayout;\n\n RadarStackLayout.prototype.reflow = function reflow (sector) {\n var ref = this;\n var reverse = ref.options.reverse;\n var children = ref.children;\n var childrenCount = children.length;\n var first = reverse ? childrenCount - 1 : 0;\n var step = reverse ? -1 : 1;\n\n this.box = new Box();\n\n for (var i = first; i >= 0 && i < childrenCount; i += step) {\n var childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n };\n\n return RadarStackLayout;\n}(ChartElement));\n\nexport default RadarStackLayout;","import BarChart from '../bar-chart/bar-chart';\nimport RadarSegment from './radar-segment';\nimport RadarClusterLayout from '../layout/radar-cluster-layout';\nimport RadarStackLayout from '../layout/radar-stack-layout';\nimport CategoricalChart from '../categorical-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nvar RadarBarChart = (function (BarChart) {\n function RadarBarChart () {\n BarChart.apply(this, arguments);\n }\n\n if ( BarChart ) RadarBarChart.__proto__ = BarChart;\n RadarBarChart.prototype = Object.create( BarChart && BarChart.prototype );\n RadarBarChart.prototype.constructor = RadarBarChart;\n\n RadarBarChart.prototype.pointType = function pointType () {\n return RadarSegment;\n };\n\n RadarBarChart.prototype.clusterType = function clusterType () {\n return RadarClusterLayout;\n };\n\n RadarBarChart.prototype.stackType = function stackType () {\n return RadarStackLayout;\n };\n\n RadarBarChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n };\n\n RadarBarChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var slot = categorySlot.clone();\n var y = categorySlot.center.y;\n\n slot.radius = y - valueSlot.y1;\n slot.innerRadius = y - valueSlot.y2;\n\n return slot;\n };\n\n RadarBarChart.prototype.reflowPoint = function reflowPoint (point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n };\n\n RadarBarChart.prototype.createAnimation = function createAnimation () {\n this.options.animation.center = this.box.toRect().center();\n BarChart.prototype.createAnimation.call(this);\n };\n\n return RadarBarChart;\n}(BarChart));\n\nRadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\nsetDefaultOptions(RadarBarChart, {\n clip: false,\n limitPoints: false,\n animation: {\n type: \"pie\"\n }\n});\n\nexport default RadarBarChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport CategoricalPlotArea from './categorical-plotarea';\nimport RadarAreaChart from '../radar-area-chart/radar-area-chart';\nimport RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport RadarBarChart from '../radar-bar-chart/radar-bar-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { RadarCategoryAxis, Point } from '../../core';\n\nimport { RADAR_AREA, RADAR_LINE, RADAR_COLUMN } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { eventElement, deepExtend, setDefaultOptions } from '../../common';\n\nvar RadarPlotArea = (function (PolarPlotAreaBase) {\n function RadarPlotArea () {\n PolarPlotAreaBase.apply(this, arguments);\n }\n\n if ( PolarPlotAreaBase ) RadarPlotArea.__proto__ = PolarPlotAreaBase;\n RadarPlotArea.prototype = Object.create( PolarPlotAreaBase && PolarPlotAreaBase.prototype );\n RadarPlotArea.prototype.constructor = RadarPlotArea;\n\n RadarPlotArea.prototype.createPolarAxis = function createPolarAxis () {\n var categoryAxis = new RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n this.polarAxis = categoryAxis;\n this.categoryAxis = categoryAxis;\n this.appendAxis(categoryAxis);\n this.aggregateCategories();\n this.createTrendlineSeries();\n this.createCategoryAxesLabels();\n };\n\n RadarPlotArea.prototype.valueAxisOptions = function valueAxisOptions (defaults) {\n if (this._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n\n if (this._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: \"P0\" }\n });\n }\n\n return deepExtend(defaults, this.options.valueAxis);\n };\n\n RadarPlotArea.prototype.aggregateCategories = function aggregateCategories () {\n // No separate panes in radar charts\n CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n };\n\n RadarPlotArea.prototype.createCategoryAxesLabels = function createCategoryAxesLabels () {\n CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n };\n\n RadarPlotArea.prototype.filterSeries = function filterSeries (currentSeries) {\n // Not supported for radar charts\n return currentSeries;\n };\n\n RadarPlotArea.prototype.trendlineFactory = function trendlineFactory (options, series) {\n var trendline = CategoricalPlotArea.prototype.trendlineFactory.call(this, options, series);\n if (trendline) {\n trendline.type = RADAR_LINE;\n }\n\n return trendline;\n };\n\n RadarPlotArea.prototype.createCharts = function createCharts () {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createAreaChart(\n filterSeriesByType(series, [ RADAR_AREA ]),\n pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ RADAR_LINE ]),\n pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ RADAR_COLUMN ]),\n pane\n );\n };\n\n RadarPlotArea.prototype.chartOptions = function chartOptions (series) {\n var options = { series: series };\n var firstSeries = series[0];\n if (firstSeries) {\n var filteredSeries = this.filterVisibleSeries(series);\n var stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n\n return options;\n };\n\n RadarPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n };\n\n RadarPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n };\n\n RadarPlotArea.prototype.createBarChart = function createBarChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var options = this.chartOptions(series);\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n\n var barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n\n this._hasBarCharts = true;\n };\n\n RadarPlotArea.prototype.seriesCategoryAxis = function seriesCategoryAxis () {\n return this.categoryAxis;\n };\n\n RadarPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var category = this.categoryAxis.getCategory(point);\n var value = this.valueAxis.getValue(point);\n\n if (category !== null && value !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n category: category,\n value: value\n });\n }\n };\n\n RadarPlotArea.prototype.createCrosshairs = function createCrosshairs () {};\n\n return RadarPlotArea;\n}(PolarPlotAreaBase));\n\ndeepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n appendChart: CategoricalPlotArea.prototype.appendChart,\n aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints,\n seriesValues: CategoricalPlotArea.prototype.seriesValues\n});\n\nsetDefaultOptions(RadarPlotArea, {\n categoryAxis: {\n categories: []\n },\n valueAxis: {}\n});\n\nexport default RadarPlotArea;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { WHITE } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar FunnelSegment = (function (ChartElement) {\n function FunnelSegment(value, options, segmentOptions) {\n ChartElement.call(this, options);\n\n this.value = value;\n this.options.index = segmentOptions.index;\n }\n\n if ( ChartElement ) FunnelSegment.__proto__ = ChartElement;\n FunnelSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n FunnelSegment.prototype.constructor = FunnelSegment;\n\n FunnelSegment.prototype.reflow = function reflow (chartBox) {\n var points = this.points;\n var label = this.children[0];\n\n this.box = new Box(points[0].x, points[0].y, points[1].x, points[2].y);\n\n if (label) {\n label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n }\n };\n\n FunnelSegment.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var options = this.options;\n var visual;\n\n ChartElement.prototype.createVisual.call(this);\n\n if (options.visual) {\n visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n points: this.points,\n options: options,\n sender: this.getSender(),\n createVisual: function () { return this$1.createPath(); }\n });\n } else {\n visual = this.createPath();\n }\n\n if (visual) {\n this.visual.append(visual);\n }\n };\n\n FunnelSegment.prototype.createPath = function createPath () {\n var options = this.options;\n var border = options.border;\n var path = draw.Path.fromPoints(this.points, {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: {\n color: border.color,\n opacity: border.opacity,\n width: border.width\n }\n }).close();\n\n return path;\n };\n\n FunnelSegment.prototype.createHighlight = function createHighlight (style) {\n return draw.Path.fromPoints(this.points, style);\n };\n\n FunnelSegment.prototype.highlightVisual = function highlightVisual () {\n return this.visual.children[0];\n };\n\n FunnelSegment.prototype.highlightVisualArgs = function highlightVisualArgs () {\n var path = draw.Path.fromPoints(this.points).close();\n\n return {\n options: this.options,\n path: path\n };\n };\n\n FunnelSegment.prototype.tooltipAnchor = function tooltipAnchor () {\n var box = this.box;\n return {\n point: new Point(box.center().x, box.y1),\n align: {\n horizontal: \"center\",\n vertical: \"top\"\n }\n };\n };\n\n FunnelSegment.prototype.formatValue = function formatValue (format) {\n var point = this;\n return point.owner.formatPointValue(point, format);\n };\n\n return FunnelSegment;\n}(ChartElement));\n\nsetDefaultOptions(FunnelSegment, {\n color: WHITE,\n border: {\n width: 1\n }\n});\n\ndeepExtend(FunnelSegment.prototype, PointEventsMixin);\n\nexport default FunnelSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox } from '../../core';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport FunnelSegment from './funnel-segment';\n\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CENTER, LEFT } from '../../common/constants';\nimport { autoTextColor, deepExtend, isFunction, getTemplate, limitValue, setDefaultOptions } from '../../common';\n\nvar FunnelChart = (function (ChartElement) {\n function FunnelChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.labels = [];\n this.legendItems = [];\n this.render();\n }\n\n if ( ChartElement ) FunnelChart.__proto__ = ChartElement;\n FunnelChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n FunnelChart.prototype.constructor = FunnelChart;\n\n FunnelChart.prototype.formatPointValue = function formatPointValue (point, format) {\n return this.chartService.format.auto(format,point.value);\n };\n\n FunnelChart.prototype.render = function render () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if ( seriesColors === void 0 ) seriesColors = [];\n var series = options.series[0];\n var data = series.data;\n\n if (!data) {\n return;\n }\n\n var ref$1 = bindSegments(series);\n var total = ref$1.total;\n var points = ref$1.points;\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n\n if (!isFunction(series.color)) {\n series.color = fields.color || seriesColors[i % seriesColors.length];\n }\n\n fields = deepExtend({\n index: i,\n owner: this$1,\n series: series,\n dataItem: data[i],\n percentage: pointData.value / total\n }, fields, { visible: pointData.visible });\n\n var value = pointData.valueFields.value;\n var segment = this$1.createSegment(value, fields);\n var label = this$1.createLabel(value, fields);\n\n if (segment && label) {\n segment.append(label);\n }\n }\n };\n\n FunnelChart.prototype.evalSegmentOptions = function evalSegmentOptions (options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n index: fields.index\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"toggle\", \"visual\" ] });\n };\n\n FunnelChart.prototype.createSegment = function createSegment (value, fields) {\n var seriesOptions = deepExtend({}, fields.series);\n this.evalSegmentOptions(seriesOptions, value, fields);\n\n this.createLegendItem(value, seriesOptions, fields);\n\n if (fields.visible !== false) {\n\n var segment = new FunnelSegment(value, seriesOptions, fields);\n Object.assign(segment, fields);\n\n this.append(segment);\n this.points.push(segment);\n\n return segment;\n }\n };\n\n FunnelChart.prototype.createLabel = function createLabel (value, fields) {\n var series = fields.series;\n var dataItem = fields.dataItem;\n var labels = deepExtend({}, this.options.labels, series.labels);\n var text = value;\n\n if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var data = {\n dataItem: dataItem,\n value: value,\n percentage: fields.percentage,\n category: fields.category,\n series: series\n };\n if (labelTemplate) {\n text = labelTemplate(data);\n } else if (labels.format) {\n text = this.chartService.format.auto(labels.format, text);\n }\n\n if (!labels.color) {\n labels.color = autoTextColor(series.color);\n if (!labels.background) {\n labels.background = series.color;\n }\n }\n\n this.evalSegmentOptions(labels, value, fields);\n var textBox = new TextBox(text, deepExtend({\n vAlign: labels.position\n }, labels), data);\n\n this.labels.push(textBox);\n\n return textBox;\n }\n };\n\n FunnelChart.prototype.labelPadding = function labelPadding () {\n var labels = this.labels;\n var padding = { left: 0, right: 0 };\n\n for (var i = 0; i < labels.length; i++) {\n var label = labels[i];\n var align = label.options.align;\n if (align !== CENTER) {\n var width = labels[i].box.width();\n\n if (align === LEFT) {\n padding.left = Math.max(padding.left, width);\n } else {\n padding.right = Math.max(padding.right, width);\n }\n }\n }\n\n return padding;\n };\n\n FunnelChart.prototype.dynamicSlopeReflow = function dynamicSlopeReflow (box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var firstSegment = segments[0];\n var maxSegment = firstSegment;\n\n for (var idx = 0; idx < segments.length; idx++) {\n if (segments[idx].percentage > maxSegment.percentage) {\n maxSegment = segments[idx];\n }\n }\n\n var lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n var previousOffset = (width - lastUpperSide) / 2;\n var previousHeight = 0;\n\n for (var idx$1 = 0; idx$1 < count; idx$1++) {\n var percentage = segments[idx$1].percentage;\n var nextSegment = segments[idx$1 + 1];\n var nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n var points = segments[idx$1].points = [];\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n var offset = (void 0);\n\n if (!percentage) {\n offset = nextPercentage ? 0 : width / 2;\n } else {\n offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n }\n\n offset = limitValue(offset, 0, width);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + offset, box.y1 + height + previousHeight));\n\n previousOffset = offset;\n previousHeight += height + options.segmentSpacing;\n lastUpperSide = limitValue(width - 2 * offset, 0, width);\n }\n };\n\n FunnelChart.prototype.constantSlopeReflow = function constantSlopeReflow (box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var decreasingWidth = options.neckRatio <= 1;\n var neckRatio = decreasingWidth ? options.neckRatio * width : width;\n var previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n var topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n var finalNarrow = (topMostWidth - neckRatio) / 2;\n var previousHeight = 0;\n\n for (var idx = 0; idx < count; idx++) {\n var points = segments[idx].points = [];\n var percentage = segments[idx].percentage;\n var offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + options.segmentSpacing;\n }\n };\n\n FunnelChart.prototype.reflow = function reflow (chartBox) {\n var points = this.points;\n var count = points.length;\n\n if (!count) {\n return;\n }\n\n var options = this.options;\n var box = chartBox.clone().unpad(this.labelPadding());\n var totalHeight = box.height() - options.segmentSpacing * (count - 1);\n var width = box.width();\n\n if (options.dynamicSlope) {\n this.dynamicSlopeReflow(box, width, totalHeight);\n } else {\n this.constantSlopeReflow(box, width, totalHeight);\n }\n\n for (var idx = 0; idx < count; idx++) {\n points[idx].reflow(chartBox);\n }\n };\n\n return FunnelChart;\n}(ChartElement));\n\nsetDefaultOptions(FunnelChart, {\n neckRatio: 0.3,\n width: 300,\n dynamicSlope: false,\n dynamicHeight: true,\n segmentSpacing: 0,\n labels: {\n visible: false,\n align: CENTER,\n position: CENTER,\n zIndex: 1\n }\n});\n\ndeepExtend(FunnelChart.prototype, PieChartMixin);\n\nexport default FunnelChart;\n","import FunnelChart from './funnel-chart';\n\nvar MAX_NECK_RATIO = 1e6;\n\nvar PyramidChart = (function (FunnelChart) {\n function PyramidChart(plotArea, options) {\n options.dynamicSlope = false;\n options.neckRatio = MAX_NECK_RATIO;\n\n FunnelChart.call(this, plotArea, options);\n }\n\n if ( FunnelChart ) PyramidChart.__proto__ = FunnelChart;\n PyramidChart.prototype = Object.create( FunnelChart && FunnelChart.prototype );\n PyramidChart.prototype.constructor = PyramidChart;\n\n return PyramidChart;\n}(FunnelChart));\n\nexport default PyramidChart;\n","import PlotAreaBase from './plotarea-base';\nimport FunnelChart from '../funnel-chart/funnel-chart';\nimport PyramidChart from '../funnel-chart/pyramid-chart';\n\nimport { append } from '../../common';\nimport { filterSeriesByType } from '../utils';\n\nimport { FUNNEL, PYRAMID } from '../constants';\n\nvar FunnelPlotArea = (function (PlotAreaBase) {\n function FunnelPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) FunnelPlotArea.__proto__ = PlotAreaBase;\n FunnelPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n FunnelPlotArea.prototype.constructor = FunnelPlotArea;\n\n FunnelPlotArea.prototype.render = function render () {\n this.createChart(FunnelChart, filterSeriesByType(this.series, [ FUNNEL ]));\n this.createChart(PyramidChart, filterSeriesByType(this.series, [ PYRAMID ]));\n };\n\n FunnelPlotArea.prototype.createChart = function createChart (chartType, series) {\n var firstSeries = series[0];\n if (!firstSeries) {\n return;\n }\n\n var chart = new chartType(this, {\n series: series,\n legend: this.options.legend,\n neckRatio: firstSeries.neckRatio,\n dynamicHeight: firstSeries.dynamicHeight,\n dynamicSlope: firstSeries.dynamicSlope,\n segmentSpacing: firstSeries.segmentSpacing,\n highlight: firstSeries.highlight\n });\n\n this.appendChart(chart);\n };\n\n FunnelPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n append(this.options.legend.items, chart.legendItems);\n };\n\n return FunnelPlotArea;\n}(PlotAreaBase));\n\nexport default FunnelPlotArea;\n","import { parseColor } from '@progress/kendo-drawing';\n\n// Linear color scale from the given color to white minus minimum lightness offset.\nvar colorScale = function (color, minLightnessOffset) {\n if ( minLightnessOffset === void 0 ) minLightnessOffset = 0.05;\n\n var baseColor = parseColor(color);\n var offset = 1 - minLightnessOffset;\n\n return function (value) {\n var hsl = baseColor.toHSL();\n var range = 100 - hsl.l;\n var point = offset - value;\n hsl.l += Math.min(point * range, range);\n\n return hsl.toCss();\n };\n};\n\nexport default colorScale;\n","import { autoTextColor, deepExtend, getTemplate, valueOrDefault } from '../../common';\nimport { CENTER, ROUNDED_RECT, BOTTOM, WHITE } from '../../common/constants';\nimport { ChartElement, Point, rectToBox, ShapeElement, TextBox } from '../../core';\nimport { TOOLTIP_OFFSET } from '../constants';\nimport NoteMixin from '../mixins/note-mixin';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nvar HeatmapPoint = (function (ChartElement) {\n function HeatmapPoint(value, options) {\n ChartElement.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n if ( ChartElement ) HeatmapPoint.__proto__ = ChartElement;\n HeatmapPoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n HeatmapPoint.prototype.constructor = HeatmapPoint;\n\n HeatmapPoint.prototype.render = function render () {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createMarker();\n this.createLabel();\n this.createNote();\n };\n\n HeatmapPoint.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n var labelColor = labels.color;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n if (!labelColor) {\n labelColor = autoTextColor(this.color);\n }\n\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n },\n labels, {\n color: labelColor\n }),\n pointData\n );\n this.append(this.label);\n }\n };\n\n HeatmapPoint.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n HeatmapPoint.prototype.reflow = function reflow (targetBox) {\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.reflow(this.markerBox());\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n this.marker.reflow(this.markerBox());\n };\n\n HeatmapPoint.prototype.markerBox = function markerBox () {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var rect = this.box.toRect();\n var type = valueOrDefault(markers.type, 'rect');\n var isRoundRect = type === ROUNDED_RECT;\n var borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n var halfBorderWidth = Math.round(borderWidth / 2);\n\n if (markers.size) {\n var center = rect.center();\n rect.size.width = rect.size.height = markers.size;\n rect.origin.x = Math.round(center.x - rect.size.width / 2);\n rect.origin.y = Math.round(center.y - rect.size.height / 2);\n }\n\n rect.size.width -= borderWidth;\n rect.size.height -= borderWidth;\n rect.origin.y += halfBorderWidth + 0.5;\n rect.origin.x += halfBorderWidth + 0.5;\n\n return rectToBox(rect);\n };\n\n HeatmapPoint.prototype.markerBorder = function markerBorder () {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var opacity = valueOrDefault(border.opacity, options.opacity);\n\n return {\n color: border.color || this.color,\n width: border.width,\n opacity: opacity,\n dashType: border.dashType\n };\n };\n\n HeatmapPoint.prototype.createMarker = function createMarker () {\n var options = this.options;\n var markerOptions = options.markers;\n var marker = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n this.marker = marker;\n this.append(marker);\n };\n\n HeatmapPoint.prototype.createHighlight = function createHighlight (style) {\n var options = this.options;\n var markerOptions = this.options.highlight.markers || this.options.markers;\n\n var highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: markerOptions.color || this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n });\n\n highlight.reflow(this.markerBox());\n var visual = highlight.getElement();\n\n visual.options.fill = style.fill;\n visual.options.stroke = style.stroke;\n\n return visual;\n };\n\n HeatmapPoint.prototype.highlightVisual = function highlightVisual () {\n return this.rectVisual;\n };\n\n HeatmapPoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n };\n\n HeatmapPoint.prototype.tooltipAnchor = function tooltipAnchor () {\n var left = this.box.center().x;\n var top = this.box.y1 - TOOLTIP_OFFSET;\n\n return {\n point: new Point(left, top),\n align: {\n horizontal: CENTER,\n vertical: BOTTOM\n }\n };\n };\n\n HeatmapPoint.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n HeatmapPoint.prototype.unclipElements = function unclipElements () {\n /* noop, clip labels */\n };\n\n HeatmapPoint.prototype.pointData = function pointData () {\n return {\n x: this.value.x,\n y: this.value.y,\n value: this.value.value,\n dataItem: this.dataItem,\n series: this.series\n };\n };\n\n return HeatmapPoint;\n}(ChartElement));\n\ndeepExtend(HeatmapPoint.prototype, PointEventsMixin);\ndeepExtend(HeatmapPoint.prototype, NoteMixin);\n\nHeatmapPoint.prototype.defaults = {\n markers: {\n type: 'rect',\n borderRadius: 4,\n border: {\n color: 'transparent'\n }\n },\n padding: { top: 1 },\n labels: {\n visible: false,\n padding: 3\n },\n opacity: 1,\n notes: {\n label: {}\n }\n};\n\nexport default HeatmapPoint;\n","import { deepExtend, defined, isFunction, setDefaultOptions } from '../../common';\nimport { MAX_VALUE, MIN_VALUE } from '../../common/constants';\nimport { Box, ChartElement } from '../../core';\nimport evalOptions from '../utils/eval-options';\nimport colorScale from './color-scale';\nimport HeatmapPoint from './heatmap-point';\n\nvar HeatmapChart = (function (ChartElement) {\n function HeatmapChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n if ( ChartElement ) HeatmapChart.__proto__ = ChartElement;\n HeatmapChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n HeatmapChart.prototype.constructor = HeatmapChart;\n\n HeatmapChart.prototype._initFields = function _initFields () {\n this.points = [];\n this.seriesOptions = [];\n this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n this._evalSeries = [];\n };\n\n HeatmapChart.prototype.render = function render () {\n this.setRange();\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n HeatmapChart.prototype.setRange = function setRange () {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1.plotArea.bindPoint(currentSeries, pointIx);\n var valueFields = ref$1.valueFields;\n if (defined(valueFields.value) && valueFields.value !== null) {\n this$1.valueRange.min = Math.min(this$1.valueRange.min, valueFields.value);\n this$1.valueRange.max = Math.max(this$1.valueRange.max, valueFields.value);\n }\n }\n }\n };\n\n HeatmapChart.prototype.addValue = function addValue (value, fields) {\n var point;\n if (value && defined(value.value) && value.value !== null) {\n point = this.createPoint(value, fields);\n if (point) {\n Object.assign(point, fields);\n }\n }\n\n this.points.push(point);\n };\n\n HeatmapChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"drilldownSeriesFactory\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n min: this.valueRange.min,\n max: this.valueRange.max\n }, state);\n }\n\n return pointOptions;\n };\n\n HeatmapChart.prototype.pointType = function pointType () {\n return HeatmapPoint;\n };\n\n HeatmapChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n };\n\n HeatmapChart.prototype.createPoint = function createPoint (value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n } else if (this.valueRange.max !== 0) {\n var scale = colorScale(color);\n color = scale(value.value / this.valueRange.max);\n }\n\n var point = new HeatmapPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n HeatmapChart.prototype.seriesAxes = function seriesAxes (series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n };\n\n HeatmapChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var ref = this$1.seriesAxes(fields.series);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n var indexX = xAxis.categoryIndex(value.x);\n var indexY = yAxis.categoryIndex(value.y);\n var slotX = xAxis.getSlot(indexX, indexX, limit);\n var slotY = yAxis.getSlot(indexY, indexY, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n };\n\n HeatmapChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n };\n\n HeatmapChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var ref$1 = this$1.seriesAxes(currentSeries);\n var xAxis = ref$1.xAxis;\n var yAxis = ref$1.yAxis;\n var xRange = xAxis.currentRangeIndices();\n var yRange = yAxis.currentRangeIndices();\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$2 = this$1.plotArea.bindPoint(currentSeries, pointIx);\n var value = ref$2.valueFields;\n var fields = ref$2.fields;\n var xIndex = xAxis.totalIndex(value.x);\n var yIndex = yAxis.totalIndex(value.y);\n var xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n var yIn = yRange.min <= yIndex && yIndex <= yRange.max;\n\n if (xIn && yIn) {\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1\n }, fields));\n }\n }\n }\n };\n\n HeatmapChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.value);\n };\n\n HeatmapChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n };\n\n return HeatmapChart;\n}(ChartElement));\nsetDefaultOptions(HeatmapChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}: {2}\"\n },\n labels: {\n format: \"{2}\"\n },\n clip: true\n});\n\nexport default HeatmapChart;\n","import { deepExtend, eventElement, grep, inArray, setDefaultOptions, createHashSet } from '../../common';\nimport { DATE } from '../../common/constants';\nimport { CategoryAxis, DateCategoryAxis, Point } from '../../core';\nimport { HEATMAP } from '../constants';\nimport HeatmapChart from '../heatmap-chart/heatmap-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesBinder from '../series-binder';\nimport { appendIfNotNull, equalsIgnoreCase, filterSeriesByType, singleItemOrArray } from '../utils';\nimport PlotAreaBase from './plotarea-base';\n\n\nvar HeatmapPlotArea = (function (PlotAreaBase) {\n function HeatmapPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) HeatmapPlotArea.__proto__ = PlotAreaBase;\n HeatmapPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n HeatmapPlotArea.prototype.constructor = HeatmapPlotArea;\n\n HeatmapPlotArea.prototype.initFields = function initFields () {\n this.namedXAxes = {};\n this.namedYAxes = {};\n };\n\n HeatmapPlotArea.prototype.render = function render (panes) {\n if ( panes === void 0 ) panes = this.panes;\n\n this.bindCategories();\n this.createAxes(panes);\n this.createCharts(panes);\n this.createAxisLabels();\n };\n\n HeatmapPlotArea.prototype.bindCategories = function bindCategories () {\n var this$1 = this;\n\n var series = this.srcSeries || this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var data = currentSeries.data || [];\n var ref = this$1.seriesAxes(currentSeries);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n\n var xCategories = createHashSet(xAxis.categories || []);\n var yCategories = createHashSet(yAxis.categories || []);\n\n for (var pointIndex = 0; pointIndex < data.length; pointIndex++) {\n var ref$1 = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n var x = ref$1.x;\n var y = ref$1.y;\n\n if (!xCategories.has(x)) {\n xCategories.add(x);\n }\n\n if (!yCategories.has(y)) {\n yCategories.add(y);\n }\n }\n\n xAxis.categories = xCategories.values();\n yAxis.categories = yCategories.values();\n }\n };\n\n HeatmapPlotArea.prototype.createCharts = function createCharts (panes) {\n var this$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1.addToLegend(paneSeries);\n var filteredSeries = this$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1.createHeatmapChart(\n filterSeriesByType(filteredSeries, [ HEATMAP ]),\n pane\n );\n }\n };\n\n HeatmapPlotArea.prototype.createHeatmapChart = function createHeatmapChart (series, pane) {\n var chart = new HeatmapChart(this, {\n series: series\n });\n\n this.appendChart(chart, pane);\n };\n\n HeatmapPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n };\n\n HeatmapPlotArea.prototype.seriesAxes = function seriesAxes (series) {\n var xAxis;\n var yAxis;\n\n var options = this.options;\n\n var xAxisOptions = [].concat(options.xAxis);\n var xAxisName = series.xAxis;\n if (xAxisName) {\n xAxis = xAxisOptions.find(function (axis) { return axis.name === xAxisName; });\n } else {\n xAxis = xAxisOptions[0];\n }\n\n var yAxisOptions = [].concat(options.yAxis);\n var yAxisName = series.yAxis;\n if (yAxisName) {\n yAxis = yAxisOptions.find(function (axis) { return axis.name === yAxisName; });\n } else {\n yAxis = yAxisOptions[0];\n }\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n };\n\n HeatmapPlotArea.prototype.createAxisLabels = function createAxisLabels () {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n axes[i].createLabels();\n }\n };\n\n HeatmapPlotArea.prototype.createXYAxis = function createXYAxis (options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var axisOptions = Object.assign({\n axisCrossingValue: 0\n }, options, {\n vertical: vertical,\n reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n justified: false\n });\n var firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n var typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateCategoryAxis;\n } else {\n axisType = CategoryAxis;\n }\n\n var axis = new axisType(axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n axis.mapCategories();\n\n return axis;\n };\n\n HeatmapPlotArea.prototype.createAxes = function createAxes (panes) {\n var this$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n };\n\n HeatmapPlotArea.prototype.removeAxis = function removeAxis (axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n delete this.namedYAxes[axisName];\n } else {\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n };\n\n HeatmapPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n appendIfNotNull(values, axis.getCategory(point));\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n };\n\n HeatmapPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n };\n\n HeatmapPlotArea.prototype.crosshairOptions = function crosshairOptions (axis) {\n // Stack the crosshair above the series points.\n return Object.assign({}, axis.options.crosshair, { zIndex: 0 });\n };\n\n return HeatmapPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(HeatmapPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default HeatmapPlotArea;\n","import PlotAreaFactory from './plotarea/plotarea-factory';\nimport SeriesBinder from './series-binder';\nimport DefaultAggregates from './aggregates/default-aggregates';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport XYPlotArea from './plotarea/xy-plotarea';\nimport PiePlotArea from './plotarea/pie-plotarea';\nimport DonutPlotArea from './plotarea/donut-plotarea';\nimport PolarPlotArea from './plotarea/polar-plotarea';\nimport RadarPlotArea from './plotarea/radar-plotarea';\nimport FunnelPlotArea from './plotarea/funnel-plotarea';\nimport HeatmapPlotArea from './plotarea/heatmap-plotarea';\n\nimport { COLUMN, DONUT, PIE, FUNNEL, PYRAMID, BAR, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT, RANGE_COLUMN,\n RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, SCATTER, SCATTER_LINE, BUBBLE,\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER, RADAR_AREA, RADAR_COLUMN, RADAR_LINE, CATEGORY,\n RANGE_AREA, VERTICAL_RANGE_AREA, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n ERROR_LOW_FIELD, ERROR_HIGH_FIELD, HEATMAP, DRILLDOWN_FIELD, TRENDLINE_SERIES } from './constants';\nimport { X, Y, VALUE } from '../common/constants';\n\nvar COLOR = \"color\";\nvar FIRST = \"first\";\nvar FROM = \"from\";\nvar MAX = \"max\";\nvar MIN = \"min\";\nvar NOTE_TEXT = \"noteText\";\nvar SUMMARY_FIELD = \"summary\";\nvar TO = \"to\";\n\nPlotAreaFactory.current.register(CategoricalPlotArea, [\n BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(XYPlotArea, [\n SCATTER, SCATTER_LINE, BUBBLE ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\nPlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\nPlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL, PYRAMID ]);\n\nPlotAreaFactory.current.register(PolarPlotArea, [\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(RadarPlotArea, [\n RADAR_AREA, RADAR_COLUMN, RADAR_LINE ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\nSeriesBinder.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD, DRILLDOWN_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ WATERFALL, HORIZONTAL_WATERFALL ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD, DRILLDOWN_FIELD ]\n);\n\nSeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR, DRILLDOWN_FIELD ]);\nSeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ COLOR, DRILLDOWN_FIELD ]);\n\nSeriesBinder.current.register(\n [ FUNNEL, PYRAMID ],\n [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n);\n\nDefaultAggregates.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n);\n\nDefaultAggregates.current.register(\n [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n { value: MAX, color: FIRST }\n);\n\nSeriesBinder.current.register(\n [ SCATTER, SCATTER_LINE, BUBBLE ],\n [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ HEATMAP ],\n [ X, Y, VALUE ], [ COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ CANDLESTICK, OHLC ],\n [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ CANDLESTICK, OHLC ],\n { open: MAX, high: MAX, low: MIN, close: MAX,\n color: FIRST, downColor: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BULLET, VERTICAL_BULLET ],\n [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT, DRILLDOWN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n [ BULLET, VERTICAL_BULLET ],\n { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ PIE, DONUT ],\n [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n);\n","import { drawing as draw, throttle, geometry } from '@progress/kendo-drawing';\n\nimport { RootElement, Title, CategoryAxis, Point } from '../core';\n\nimport Highlight from './highlight';\nimport Pannable from './pan-and-zoom/pannable';\nimport ZoomSelection from './pan-and-zoom/zoom-selection';\nimport MousewheelZoom from './pan-and-zoom/mousewheel-zoom';\nimport Legend from './legend/legend';\nimport PlotAreaFactory from './plotarea/plotarea-factory';\nimport Selection from './selection';\nimport SeriesBinder from './series-binder';\nimport Tooltip from './tooltip/tooltip';\nimport SharedTooltip from './tooltip/shared-tooltip';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport PlotAreaBase from './plotarea/plotarea-base';\nimport { ChartService, DomEventsBuilder } from '../services';\nimport getField from './utils/get-field';\nimport isDateAxis from './utils/is-date-axis';\nimport getDateField from './utils/get-date-field';\nimport { ChartPane, ChartPlotArea, findAxisByName } from './api-elements';\n\nimport { X, Y, VALUE, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_SERIES_OPACITY } from '../common/constants';\nimport { addClass, Class, setDefaultOptions, deepExtend, defined, find, isObject, isFunction, elementSize, elementOffset,\n elementScale, elementStyles, eventCoordinates, bindEvents, unbindEvents, mousewheelDelta, FontLoader, inArray, last, round,\n HashMap, valueOrDefault, isString } from '../common';\n\nimport { dateComparer } from '../date-utils';\n\nimport { DRAG_START, DRAG, DRAG_END, ZOOM_START, ZOOM, ZOOM_END, SELECT_START, SELECT, SELECT_END, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n RENDER, CATEGORY, PIE, DONUT, FUNNEL, PYRAMID, COLUMN, MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE, SHOW_TOOLTIP, SERIES_HOVER,\n SERIES_OVER, SERIES_LEAVE, SERIES_CLICK, DRILLDOWN } from './constants';\n\nimport './animations';\nimport './register-charts';\n\nvar AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\nvar MOUSEMOVE = \"mousemove\";\nvar CONTEXTMENU = \"contextmenu\";\nvar MOUSELEAVE = \"mouseleave\";\nvar MOUSEMOVE_DELAY = 20;\n\nvar Chart = (function (Class) {\n function Chart(element, userOptions, themeOptions, context) {\n var this$1 = this;\n if ( context === void 0 ) context = {};\n\n Class.call(this);\n\n this.observers = [];\n this.addObserver(context.observer);\n this.chartService = new ChartService(this, context);\n this.chartService.theme = themeOptions;\n\n this._initElement(element);\n\n var options = deepExtend({}, this.options, userOptions);\n this._originalOptions = deepExtend({}, options);\n this._theme = themeOptions;\n this._initTheme(options, themeOptions);\n\n this._initHandlers();\n this._initSurface();\n\n this.bindCategories();\n FontLoader.preloadFonts(userOptions, function () {\n this$1.fontLoaded = true;\n if (!this$1._destroyed) {\n this$1.trigger('init');\n this$1._redraw();\n this$1._attachEvents();\n }\n });\n }\n\n if ( Class ) Chart.__proto__ = Class;\n Chart.prototype = Object.create( Class && Class.prototype );\n Chart.prototype.constructor = Chart;\n\n Chart.prototype._initElement = function _initElement (element) {\n this._setElementClass(element);\n element.style.position = \"relative\";\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n this.element = element;\n };\n\n Chart.prototype._setElementClass = function _setElementClass (element) {\n addClass(element, \"k-chart\");\n };\n\n Chart.prototype._initTheme = function _initTheme (options, themeOptions) {\n var seriesCopies = [];\n var series = options.series || [];\n\n for (var i = 0; i < series.length; i++) {\n seriesCopies.push(Object.assign({}, series[i]));\n }\n options.series = seriesCopies;\n\n resolveAxisAliases(options);\n this.applyDefaults(options, themeOptions);\n\n // Clean up default if not overriden by data attributes\n if (options.seriesColors === null) {\n delete options.seriesColors;\n }\n\n if (isString(options.title)) {\n options.title = { text: options.title };\n }\n\n this.options = deepExtend({}, themeOptions, options);\n this.applySeriesColors();\n };\n\n Chart.prototype.getSize = function getSize () {\n var chartArea = this.options.chartArea || {};\n var width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n var height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n return {\n width: width,\n height: height\n };\n };\n\n Chart.prototype.resize = function resize (force) {\n var size = this.getSize();\n var currentSize = this._size;\n var hasSize = size.width > 0 || size.height > 0;\n\n if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n } else if (hasSize && this._selections && find(this._selections, function (s) { return !s.visible; })) {\n this._destroySelections();\n this._setupSelection();\n }\n };\n\n Chart.prototype._resize = function _resize () {\n this._noTransitionsRedraw();\n };\n\n Chart.prototype.redraw = function redraw (paneName) {\n this.applyDefaults(this.options);\n this.applySeriesColors();\n\n if (paneName) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPane(paneName);\n plotArea.redraw(pane);\n } else {\n this._redraw();\n }\n };\n\n Chart.prototype.getAxis = function getAxis (name) {\n return findAxisByName(name, this._plotArea.axes);\n };\n\n Chart.prototype.findAxisByName = function findAxisByName (name) {\n return this.getAxis(name);\n };\n\n Chart.prototype.findPaneByName = function findPaneByName (name) {\n var panes = this._plotArea.panes;\n\n for (var idx = 0; idx < panes.length; idx++) {\n if (panes[idx].options.name === name) {\n return new ChartPane(panes[idx]);\n }\n }\n };\n\n Chart.prototype.findPaneByIndex = function findPaneByIndex (idx) {\n var panes = this._plotArea.panes;\n if (panes[idx]) {\n return new ChartPane(panes[idx]);\n }\n };\n\n Chart.prototype.plotArea = function plotArea () {\n return new ChartPlotArea(this._plotArea);\n };\n\n Chart.prototype.toggleHighlight = function toggleHighlight (show, filter) {\n var plotArea = this._plotArea;\n var firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n var points;\n\n if (isFunction(filter)) {\n points = plotArea.filterPoints(filter);\n } else {\n var seriesName, categoryName;\n if (isObject(filter)) {\n seriesName = filter.series;\n categoryName = filter.category;\n } else {\n seriesName = categoryName = filter;\n }\n\n if (firstSeries.type === DONUT) {\n points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n } else if (inArray(firstSeries.type, [ PIE, FUNNEL, PYRAMID ])) {\n points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n } else {\n points = plotArea.pointsBySeriesName(seriesName);\n }\n }\n\n if (points) {\n this.togglePointsHighlight(show, points);\n }\n };\n\n Chart.prototype.togglePointsHighlight = function togglePointsHighlight (show, points) {\n var highlight = this._highlight;\n for (var idx = 0; idx < points.length; idx++) {\n highlight.togglePointHighlight(points[idx], show);\n }\n };\n\n Chart.prototype.showTooltip = function showTooltip (filter) {\n var shared = this._sharedTooltip();\n var ref = this;\n var tooltip = ref._tooltip;\n var plotArea = ref._plotArea;\n var point, categoryIndex;\n\n if (isFunction(filter)) {\n point = plotArea.findPoint(filter);\n if (point && shared) {\n categoryIndex = point.categoryIx;\n }\n } else if (shared && defined(filter)) {\n categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n }\n\n if (shared) {\n if (categoryIndex >= 0) {\n var points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n tooltip.showAt(points);\n }\n } else if (point) {\n tooltip.show(point);\n }\n };\n\n Chart.prototype.hideTooltip = function hideTooltip () {\n this._tooltip.hide();\n };\n\n Chart.prototype._initSurface = function _initSurface () {\n var surface = this.surface;\n var wrap = this._surfaceWrap();\n\n var chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n elementSize(wrap, { width: chartArea.width });\n }\n if (chartArea.height) {\n elementSize(wrap, { height: chartArea.height });\n }\n\n if (!surface || surface.options.type !== this.options.renderAs) {\n this._destroySurface();\n\n this.surface = draw.Surface.create(wrap, {\n type: this.options.renderAs\n });\n\n this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n };\n\n Chart.prototype._surfaceWrap = function _surfaceWrap () {\n return this.element;\n };\n\n Chart.prototype._redraw = function _redraw () {\n var model = this._getModel();\n this._size = {\n width: model.options.width,\n height: model.options.height\n };\n\n this._destroyView();\n\n this._model = model;\n this._plotArea = model._plotArea;\n\n model.renderVisual();\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.setup();\n }\n });\n }\n\n this._initSurface();\n this.surface.draw(model.visual);\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.play();\n }\n });\n }\n\n this._tooltip = this._createTooltip();\n this._highlight = new Highlight();\n this._setupSelection();\n this._createPannable();\n this._createZoomSelection();\n this._createMousewheelZoom();\n\n this.trigger(RENDER);\n triggerPaneRender(this._plotArea.panes);\n\n if (!this._navState) {\n this._cancelDomEvents();\n }\n };\n\n Chart.prototype.exportVisual = function exportVisual (exportOptions) {\n var visual;\n if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n var currentOptions = this.options;\n var options = deepExtend({}, exportOptions.options, {\n chartArea: {\n width: exportOptions.width,\n height: exportOptions.height\n }\n });\n\n clearMissingValues(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions, options);\n this._initTheme(this.options, this._theme);\n this.bindCategories();\n\n var model = this._getModel();\n\n model.renderVisual();\n triggerPaneRender(model._plotArea.panes);\n\n visual = model.visual;\n\n this.options = currentOptions;\n } else {\n visual = this.surface.exportVisual();\n }\n\n return visual;\n };\n\n Chart.prototype._sharedTooltip = function _sharedTooltip () {\n return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n };\n\n Chart.prototype._createPannable = function _createPannable () {\n var options = this.options;\n if (options.pannable !== false) {\n this._pannable = new Pannable(this._plotArea, options.pannable);\n }\n };\n\n Chart.prototype._createZoomSelection = function _createZoomSelection () {\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n if (zoomable !== false && selection !== false) {\n this._zoomSelection = new ZoomSelection(this, selection);\n }\n };\n\n Chart.prototype._createMousewheelZoom = function _createMousewheelZoom () {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel;\n if (zoomable !== false && mousewheel !== false) {\n this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n }\n };\n\n Chart.prototype._toggleDragZoomEvents = function _toggleDragZoomEvents () {\n var pannable = this.options.pannable;\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n var mousewheel = (zoomable || {}).mousewheel;\n var allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n var allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n var element = this.element;\n\n if (this._dragZoomEnabled && allowDrag && allowZoom) {\n element.style.touchAction = this._touchAction || '';\n this._dragZoomEnabled = false;\n } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n\n this._toggleDomEvents(!allowDrag, !allowZoom);\n };\n\n Chart.prototype._toggleDomEvents = function _toggleDomEvents (drag, zoom) {\n var domEvents = this.domEvents;\n if (!domEvents) {\n return;\n }\n\n if (domEvents.toggleDrag) {\n domEvents.toggleDrag(drag);\n }\n\n if (domEvents.toggleZoom) {\n domEvents.toggleZoom(zoom);\n }\n };\n\n Chart.prototype._createTooltip = function _createTooltip () {\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var tooltip;\n\n if (this._sharedTooltip()) {\n tooltip = this._createSharedTooltip(tooltipOptions);\n } else {\n tooltip = new Tooltip(this.chartService, tooltipOptions);\n }\n\n return tooltip;\n };\n\n Chart.prototype._createSharedTooltip = function _createSharedTooltip (options) {\n return new SharedTooltip(this._plotArea, options);\n };\n\n Chart.prototype.applyDefaults = function applyDefaults (options, themeOptions) {\n applyAxisDefaults(options, themeOptions);\n applySeriesDefaults(options, themeOptions);\n };\n\n Chart.prototype.applySeriesColors = function applySeriesColors () {\n var options = this.options;\n var series = options.series;\n var colors = options.seriesColors || [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var seriesColor = colors[i % colors.length];\n var defaults = currentSeries._defaults;\n\n currentSeries.color = currentSeries.color || seriesColor;\n if (defaults) {\n defaults.color = defaults.color || seriesColor;\n }\n }\n };\n\n Chart.prototype._getModel = function _getModel () {\n var options = this.options;\n var plotArea = this._createPlotArea();\n var model = new RootElement(this._modelOptions());\n model.chart = this;\n model._plotArea = plotArea;\n\n var title = Title.buildTitle(options.title);\n var subtitle = Title.buildTitle(options.subtitle, {\n align: options.title.align,\n position: options.title.position\n });\n model.append.apply(model, Title.orderTitles([title, subtitle]));\n\n if (options.legend && options.legend.visible) {\n model.append(new Legend(plotArea.options.legend, this.chartService));\n }\n model.append(plotArea);\n model.reflow();\n\n return model;\n };\n\n Chart.prototype._modelOptions = function _modelOptions () {\n var options = this.options;\n var size = this.getSize();\n\n return deepExtend({\n transitions: options.transitions,\n width: size.width || DEFAULT_WIDTH,\n height: size.height || DEFAULT_HEIGHT\n }, options.chartArea);\n };\n\n Chart.prototype._createPlotArea = function _createPlotArea (skipSeries) {\n var options = this.options;\n\n var plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n return plotArea;\n };\n\n Chart.prototype._setupSelection = function _setupSelection () {\n var this$1 = this;\n\n var ref = this;\n var axes = ref._plotArea.axes;\n var selections = this._selections = [];\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var options = axis.options;\n if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n var range = axis.range();\n\n var selection = new Selection(this$1, axis,\n deepExtend({ min: range.min, max: range.max }, options.select)\n );\n\n selections.push(selection);\n }\n }\n };\n\n Chart.prototype._selectStart = function _selectStart (e) {\n return this.trigger(SELECT_START, e);\n };\n\n Chart.prototype._select = function _select (e) {\n return this.trigger(SELECT, e);\n };\n\n Chart.prototype._selectEnd = function _selectEnd (e) {\n return this.trigger(SELECT_END, e);\n };\n\n Chart.prototype._initHandlers = function _initHandlers () {\n this._clickHandler = this._click.bind(this);\n this._mousewheelHandler = this._mousewheel.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._surfaceMouseenterHandler = this._mouseover.bind(this);\n this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n this._mousemove = throttle(\n this._mousemove.bind(this),\n MOUSEMOVE_DELAY\n );\n };\n\n Chart.prototype.addObserver = function addObserver (observer) {\n if (observer) {\n this.observers.push(observer);\n }\n };\n\n Chart.prototype.removeObserver = function removeObserver (observer) {\n var index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n };\n\n Chart.prototype.requiresHandlers = function requiresHandlers (eventNames) {\n var observers = this.observers;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n };\n\n Chart.prototype.trigger = function trigger (name, args) {\n if ( args === void 0 ) args = {};\n\n args.sender = this;\n\n if (name === SHOW_TOOLTIP) {\n args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n } else if (name === SERIES_OVER) {\n this._updateDrilldownPoint(args.point);\n } else if (name === SERIES_LEAVE) {\n this._resetDrilldownPoint();\n } else if (name === SERIES_CLICK) {\n this._startDrilldown(args.point);\n }\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n };\n\n Chart.prototype._attachEvents = function _attachEvents () {\n var obj, obj$1;\n\n var element = this.element;\n\n this._touchAction = element.style.touchAction;\n\n bindEvents(element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n\n this.domEvents = DomEventsBuilder.create(this.element, {\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n\n this._toggleDragZoomEvents();\n };\n\n Chart.prototype._mouseleave = function _mouseleave (e) {\n if (this._hoveredPoint) {\n this._hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (this._plotAreaHovered) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n\n if (this._hasInactiveOpacity() && this._activeChartInstance) {\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._updateSeriesOpacity(null, true);\n }\n };\n\n Chart.prototype._cancelDomEvents = function _cancelDomEvents () {\n if (this.domEvents && this.domEvents.cancel) {\n this.domEvents.cancel();\n }\n };\n\n Chart.prototype._gesturestart = function _gesturestart (e) {\n if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n this._gestureDistance = e.distance;\n this._unsetActivePoint();\n this.surface.suspendTracking();\n }\n };\n\n Chart.prototype._gestureend = function _gestureend (e) {\n if (this._zooming && !this._stopChartHandlers(e)) {\n if (this.surface) {\n this.surface.resumeTracking();\n }\n this._zooming = false;\n this.trigger(ZOOM_END, {});\n }\n };\n\n Chart.prototype._gesturechange = function _gesturechange (e) {\n var mousewheelZoom = this._mousewheelZoom;\n\n if (mousewheelZoom && !this._stopChartHandlers(e)) {\n e.preventDefault();\n var previousGestureDistance = this._gestureDistance;\n var scaleDelta = -e.distance / previousGestureDistance + 1;\n\n if (Math.abs(scaleDelta) >= 0.1) {\n scaleDelta = Math.round(scaleDelta * 10);\n\n this._gestureDistance = e.distance;\n var args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n var coords = this._eventCoordinates(e);\n\n if (!this._zooming) {\n this._zooming = true;\n }\n\n var ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);\n if (ranges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n }\n }\n }\n };\n\n Chart.prototype._mouseout = function _mouseout (e) {\n if (e.element) {\n var element = this._drawingChartElement(e.element, e);\n\n if (element && element.leave) {\n element.leave(this, e.originalEvent);\n }\n }\n };\n\n Chart.prototype._start = function _start (e) {\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n\n if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n this._startNavigation(e, coords, DRAG_START);\n }\n\n if (this._pannable && this._pannable.start(e)) {\n this.surface.suspendTracking();\n this._unsetActivePoint();\n this._suppressHover = true;\n this.chartService.panning = true;\n }\n\n if (this._zoomSelection) {\n if (this._zoomSelection.start(e)) {\n this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n }\n }\n };\n\n Chart.prototype._move = function _move (e) {\n var ref = this;\n var state = ref._navState;\n var pannable = ref._pannable;\n\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n if (pannable) {\n var ranges = pannable.move(e);\n\n if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n pannable.pan();\n }\n } else if (state) {\n var ranges$1 = {};\n var axes = state.axes;\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n var axis = currentAxis.options.vertical ? e.y : e.x;\n var delta = axis.startLocation - axis.location;\n\n if (delta !== 0) {\n ranges$1[currentAxis.options.name] = currentAxis.translateRange(delta);\n }\n }\n }\n\n state.axisRanges = ranges$1;\n this.trigger(DRAG, {\n axisRanges: ranges$1,\n originalEvent: e\n });\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.move(e);\n }\n };\n\n Chart.prototype._end = function _end (e) {\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n var pannable = this._pannable;\n if (pannable && pannable.end(e)) {\n this.surface.resumeTracking();\n this.trigger(DRAG_END, {\n axisRanges: axisRanges(this._plotArea.axes),\n originalEvent: e\n });\n this._suppressHover = false;\n this.chartService.panning = false;\n } else {\n this._endNavigation(e, DRAG_END);\n }\n\n if (this._zoomSelection) {\n var ranges = this._zoomSelection.end(e);\n if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n this._zoomSelection.zoom();\n this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n }\n }\n };\n\n Chart.prototype._stopChartHandlers = function _stopChartHandlers (e) {\n var selections = this._selections || [];\n if (!selections.length) {\n return false;\n }\n\n var coords = this._eventCoordinates(e);\n var pane = this._plotArea.paneByPoint(coords);\n if (pane) {\n for (var idx = 0; idx < selections.length; idx++) {\n if (selections[idx].onPane(pane)) {\n return true;\n }\n }\n }\n };\n\n Chart.prototype._mousewheelZoomRate = function _mousewheelZoomRate () {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel || {};\n return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n };\n\n Chart.prototype._mousewheel = function _mousewheel (e) {\n var this$1 = this;\n\n var delta = mousewheelDelta(e);\n var mousewheelZoom = this._mousewheelZoom;\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (mousewheelZoom) {\n var args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n e.preventDefault();\n\n if (!this._zooming) {\n this._unsetActivePoint();\n this.surface.suspendTracking();\n this._zooming = true;\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n args.axisRanges = mousewheelZoom.updateRanges(delta, coords);\n if (args.axisRanges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1.trigger(ZOOM_END, args);\n this$1._zooming = false;\n if (this$1.surface) {\n this$1.surface.resumeTracking();\n }\n }, MOUSEWHEEL_DELAY);\n }\n } else {\n var state = this._navState;\n if (!state) {\n var prevented = this._startNavigation(e, coords, ZOOM_START);\n if (!prevented) {\n state = this._navState;\n }\n }\n\n if (state) {\n var totalDelta = state.totalDelta || delta;\n state.totalDelta = totalDelta + delta;\n\n var axes = this._navState.axes;\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n ranges[axisName] = currentAxis.scaleRange(-totalDelta * this$1._mousewheelZoomRate(), coords);\n }\n }\n\n this.trigger(ZOOM, {\n delta: delta,\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1._endNavigation(e, ZOOM_END);\n }, MOUSEWHEEL_DELAY);\n }\n }\n };\n\n Chart.prototype._startNavigation = function _startNavigation (e, coords, chartEvent) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPointPane(coords);\n var axes = plotArea.axes.slice(0);\n\n if (!pane) {\n return;\n }\n\n var ranges = axisRanges(axes);\n\n var prevented = this.trigger(chartEvent, {\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (prevented) {\n this._cancelDomEvents();\n } else {\n this._suppressHover = true;\n this._unsetActivePoint();\n this._navState = {\n axisRanges: ranges,\n pane: pane,\n axes: axes\n };\n }\n };\n\n Chart.prototype._endNavigation = function _endNavigation (e, chartEvent) {\n if (this._navState) {\n this.trigger(chartEvent, {\n axisRanges: this._navState.axisRanges,\n originalEvent: e\n });\n this._suppressHover = false;\n this._navState = null;\n }\n };\n\n Chart.prototype._getChartElement = function _getChartElement (e, match) {\n var element = this.surface.eventTarget(e);\n if (element) {\n return this._drawingChartElement(element, e, match);\n }\n };\n\n Chart.prototype._drawingChartElement = function _drawingChartElement (element, e, match) {\n var current = element;\n var chartElement;\n while (current && !chartElement) {\n chartElement = current.chartElement;\n current = current.parent;\n }\n\n if (chartElement) {\n if (chartElement.aliasFor) {\n chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n }\n\n if (match) {\n chartElement = chartElement.closest(match);\n if (chartElement && chartElement.aliasFor) {\n chartElement = chartElement.aliasFor();\n }\n }\n\n return chartElement;\n }\n };\n\n Chart.prototype._eventCoordinates = function _eventCoordinates (e) {\n var coordinates = eventCoordinates(e);\n return this._toModelCoordinates(coordinates.x, coordinates.y);\n };\n\n Chart.prototype._elementPadding = function _elementPadding () {\n if (!this._padding) {\n var ref = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n this._padding = {\n top: paddingTop,\n left: paddingLeft\n };\n }\n\n return this._padding;\n };\n\n Chart.prototype._toDocumentCoordinates = function _toDocumentCoordinates (point) {\n var padding = this._elementPadding();\n var offset = elementOffset(this.element);\n\n return {\n left: round(point.x + padding.left + offset.left),\n top: round(point.y + padding.top + offset.top)\n };\n };\n\n // TODO: Breaking change due to peer version change\n // Reuse by exposing _surfacePoint on Surface\n Chart.prototype._toModelCoordinates = function _toModelCoordinates (clientX, clientY) {\n var element = this.element;\n var offset = elementOffset(element);\n var padding = this._elementPadding();\n var inverseTransform = elementScale(element).invert();\n var point = new geometry.Point(\n clientX - offset.left - padding.left,\n clientY - offset.top - padding.top\n ).transform(inverseTransform);\n\n return new Point(point.x, point.y);\n };\n\n Chart.prototype._tap = function _tap (e) {\n var this$1 = this;\n\n var drawingElement = this.surface.eventTarget(e);\n var element = this._drawingChartElement(drawingElement, e);\n var sharedTooltip = this._sharedTooltip();\n\n if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n this._unsetActivePoint();\n }\n\n if (sharedTooltip) {\n this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n }\n\n this._propagateClick(element, e);\n\n //part of fix for hover issue on windows touch\n this.handlingTap = true;\n setTimeout(function () {\n this$1.handlingTap = false;\n }, 0);\n };\n\n Chart.prototype._click = function _click (e) {\n var element = this._getChartElement(e);\n this._propagateClick(element, e);\n };\n\n Chart.prototype._propagateClick = function _propagateClick (element, e) {\n var this$1 = this;\n\n var current = element;\n while (current) {\n if (current.click) {\n current.click(this$1, e);\n }\n\n current = current.parent;\n }\n };\n\n Chart.prototype._startHover = function _startHover (element, e) {\n if (this._suppressHover) {\n return false;\n }\n\n var point = this._drawingChartElement(element, e, function(element) {\n return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n });\n\n this._showInactiveOpacity(point, e);\n\n return point;\n };\n\n Chart.prototype._displayTooltip = function _displayTooltip (point) {\n var tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n if (tooltipOptions.visible) {\n this._tooltip.show(point);\n }\n };\n\n Chart.prototype._displayInactiveOpacity = function _displayInactiveOpacity (activePoint, multipleSeries, highlightPoints) {\n var chartInstance = this._activeChartInstance = this._chartInstanceFromPoint(activePoint);\n if (!chartInstance) {\n return;\n }\n\n if (multipleSeries) {\n this._updateSeriesOpacity(activePoint);\n this._applySeriesOpacity(chartInstance.children, null, true);\n this._applySeriesOpacity(chartInstance.children, activePoint.series);\n this._highlight.show(highlightPoints || activePoint);\n } else {\n var inactivePoints;\n\n if (!chartInstance.supportsPointInactiveOpacity()) {\n this._highlight.show(activePoint);\n return;\n }\n\n inactivePoints = this._getInactivePoints(activePoint, chartInstance);\n\n if (inactivePoints && inactivePoints.length) {\n this._highlight.show(inactivePoints, 1 - this._getInactiveOpacityForSeries(activePoint.series));\n }\n }\n };\n\n Chart.prototype._getInactivePoints = function _getInactivePoints (activePoint, chartInstance) {\n var allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n return allPoints.filter(function (point) { return point !== activePoint; });\n };\n\n Chart.prototype._getAllPointsOfType = function _getAllPointsOfType (container, type) {\n var this$1 = this;\n\n var points = [];\n\n for (var i = 0; i < container.children.length; i++) {\n var element = container.children[i];\n\n if (element.constructor === type) {\n points.push(element);\n } else if (element.children && element.children.length) {\n points = points.concat(this$1._getAllPointsOfType(element, type));\n }\n }\n\n return points;\n };\n\n Chart.prototype._updateHoveredPoint = function _updateHoveredPoint (point, e) {\n var hoveredPoint = this._hoveredPoint;\n\n if (hoveredPoint && hoveredPoint !== point) {\n hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (point && hoveredPoint !== point && point.over) {\n this._hoveredPoint = point;\n point.over(this, e);\n }\n };\n\n Chart.prototype._updateDrilldownPoint = function _updateDrilldownPoint (point) {\n if (!point || !point.series) {\n return;\n }\n\n var ref = SeriesBinder.current.bindPoint(point.series, null, point.dataItem);\n var fields = ref.fields;\n if (fields.drilldown) {\n this._drilldownState = { cursor: this.element.style.cursor };\n this.element.style.cursor = 'pointer';\n }\n };\n\n Chart.prototype._resetDrilldownPoint = function _resetDrilldownPoint () {\n if (this._drilldownState) {\n this.element.style.cursor = this._drilldownState.cursor;\n this._drilldownState = null;\n }\n };\n\n Chart.prototype._startDrilldown = function _startDrilldown (point) {\n if (!point || !point.series) {\n return;\n }\n\n var series = point.series;\n var ref = SeriesBinder.current.bindPoint(series, null, point.dataItem);\n var fields = ref.fields;\n var value = fields.drilldown;\n if (value) {\n var args = { series: series, point: point, value: value, sender: this };\n this.trigger(DRILLDOWN, args);\n }\n };\n\n Chart.prototype._updateSeriesOpacity = function _updateSeriesOpacity (point, resetOpacity) {\n var this$1 = this;\n\n var plotArea = this._plotArea;\n var length = plotArea.series.length;\n\n for (var i = 0; i < length; i++) {\n var currSeries = plotArea.series[i];\n var defaultOpacity = this$1._getDefaultOpacityForSeries(currSeries);\n var inactiveOpacity = this$1._getInactiveOpacityForSeries(currSeries);\n\n if (!resetOpacity && currSeries !== point.series) {\n currSeries.defaultOpacity = defaultOpacity;\n currSeries.opacity = inactiveOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = inactiveOpacity;\n }\n } else {\n currSeries.opacity = defaultOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = defaultOpacity;\n }\n }\n }\n };\n\n Chart.prototype._applySeriesOpacity = function _applySeriesOpacity (elements, activeSeries, reset, series) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var currSeries = element.series || series;\n var shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n if (shouldHighlight && element.visual) {\n var opacity = series ? series.opacity : element.series.opacity;\n if (currSeries !== activeSeries || reset) {\n element.visual.opacity(reset ? 1 : opacity);\n }\n }\n\n if (element.children && element.children.length) {\n this$1._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n }\n }\n };\n\n Chart.prototype._chartInstanceFromPoint = function _chartInstanceFromPoint (point) {\n var chartInstance = point.parent;\n\n while (chartInstance && !chartInstance.plotArea) {\n chartInstance = chartInstance.parent;\n }\n\n return chartInstance;\n };\n\n Chart.prototype._showInactiveOpacity = function _showInactiveOpacity (point, e) {\n var activePoint = this._activePoint;\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n\n this._updateHoveredPoint(point, e);\n\n if (point && activePoint !== point && point.hover) {\n this._activePoint = point;\n\n if (!this._sharedTooltip() && !point.hover(this, e)) {\n this._displayTooltip(point);\n\n if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n }\n }\n\n return point;\n };\n\n Chart.prototype._hideInactiveOpacity = function _hideInactiveOpacity (point) {\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n if (hasInactiveOpacity) {\n if (multipleSeries && this._activeChartInstance) {\n this._updateSeriesOpacity(point, true);\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._activeChartInstance = null;\n }\n this._highlight && this._highlight.hide();\n this._activePoint = null;\n }\n };\n\n Chart.prototype._hasInactiveOpacity = function _hasInactiveOpacity () {\n var hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n var hasInactiveOpacity = this.options.series.filter(function (s) { return s.highlight.inactiveOpacity !== undefined; } ).length > 0;\n return hasDefaultInactiveOpacity || hasInactiveOpacity;\n };\n\n Chart.prototype._getInactiveOpacityForSeries = function _getInactiveOpacityForSeries (series) {\n var defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n var seriesInactiveOpacity = series.highlight.inactiveOpacity;\n return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n };\n\n Chart.prototype._getDefaultOpacityForSeries = function _getDefaultOpacityForSeries (series) {\n return series.defaultOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n };\n\n Chart.prototype._mouseover = function _mouseover (e) {\n var obj;\n\n var point = this._startHover(e.element, e.originalEvent);\n\n if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n bindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n }\n };\n\n Chart.prototype._mouseMoveTracking = function _mouseMoveTracking (e) {\n var obj;\n\n var ref = this;\n var options = ref.options;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n var point = ref._activePoint;\n var coords = this._eventCoordinates(e);\n\n if (this._plotArea.box.containsPoint(coords)) {\n if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n var seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n if (seriesPoint && seriesPoint !== point) {\n this._activePoint = seriesPoint;\n\n if (!seriesPoint.hover(this, e)) {\n var tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n if (tooltipOptions.visible) {\n tooltip.show(seriesPoint);\n }\n\n highlight.show(seriesPoint);\n }\n }\n }\n } else {\n unbindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n this._unsetActivePoint();\n this._mouseMoveTrackHandler = null;\n\n this._hideInactiveOpacity(point);\n }\n };\n\n Chart.prototype._mousemove = function _mousemove (e) {\n var coords = this._eventCoordinates(e);\n var plotArea = this._plotArea;\n\n this._trackCrosshairs(coords);\n\n if (plotArea.hover) {\n var overPlotArea = plotArea.backgroundContainsPoint(coords);\n if (overPlotArea) {\n this._plotAreaHovered = true;\n this._plotArea.hover(this, e);\n } else if (this._plotAreaHovered && !overPlotArea) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n }\n\n if (this._sharedTooltip()) {\n this._trackSharedTooltip(coords, e);\n }\n };\n\n Chart.prototype._trackCrosshairs = function _trackCrosshairs (coords) {\n var crosshairs = this._plotArea.crosshairs;\n\n for (var i = 0; i < crosshairs.length; i++) {\n var current = crosshairs[i];\n\n if (current.box.containsPoint(coords)) {\n current.showAt(coords);\n } else {\n current.hide();\n }\n }\n };\n\n Chart.prototype._trackSharedTooltip = function _trackSharedTooltip (coords, e, toggle) {\n if (this._suppressHover) {\n return;\n }\n\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var plotArea = ref._plotArea;\n var categoryAxis = ref._plotArea.categoryAxis;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n if (plotArea.backgroundContainsPoint(coords)) {\n var index = categoryAxis.pointCategoryIndex(coords);\n if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n var points = plotArea.pointsByCategoryIndex(index);\n var pointArgs = points.map(function(point) {\n return point.eventArgs(e);\n });\n var hoverArgs = pointArgs[0] || {};\n hoverArgs.categoryPoints = pointArgs;\n\n if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n if (tooltipOptions.visible) {\n tooltip.showAt(points, coords);\n }\n\n highlight.show(points);\n\n this._sharedHighlight = true;\n } else {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = index;\n } else if (toggle && this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._sharedHighlight = false;\n }\n } else if (this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n }\n };\n\n Chart.prototype.hideElements = function hideElements (options) {\n var plotArea = this._plotArea;\n this._mousemove.cancel();\n\n plotArea.hideCrosshairs();\n\n this._unsetActivePoint(options);\n };\n\n Chart.prototype._unsetActivePoint = function _unsetActivePoint (options) {\n var ref = this;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (tooltip && !(options && options.keepTooltipOpen)) {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n };\n\n Chart.prototype._deferRedraw = function _deferRedraw () {\n this._redraw();\n };\n\n Chart.prototype._clearRedrawTimeout = function _clearRedrawTimeout () {\n if (this._redrawTimeout) {\n clearInterval(this._redrawTimeout);\n this._redrawTimeout = null;\n }\n };\n\n Chart.prototype.bindCategories = function bindCategories () {\n var this$1 = this;\n\n var options = this.options;\n var definitions = [].concat(options.categoryAxis);\n\n for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n var axis = definitions[axisIx];\n if (axis.autoBind !== false) {\n this$1.bindCategoryAxisFromSeries(axis, axisIx);\n }\n }\n };\n\n Chart.prototype.bindCategoryAxisFromSeries = function bindCategoryAxisFromSeries (axis, axisIx) {\n var this$1 = this;\n\n var series = this.options.series;\n var seriesLength = series.length;\n var uniqueCategories = new HashMap();//perf improvement in case type category with dates\n var items = [];\n var bindable = false;\n var dateAxis;\n\n for (var seriesIx = 0; seriesIx < seriesLength; seriesIx++) {\n var s = series[seriesIx];\n var onAxis = s.categoryAxis === axis.name || (!s.categoryAxis && axisIx === 0);\n var data = s.data;\n var dataLength = data.length;\n var bind = s.categoryField && onAxis;\n bindable = bind || bindable;\n\n if (bind && dataLength > 0) {\n dateAxis = isDateAxis(axis, getField(s.categoryField, data[0]));\n\n var getFn = dateAxis ? getDateField : getField;\n\n for (var dataIx = 0; dataIx < dataLength; dataIx++) {\n var dataRow = data[dataIx];\n var category = getFn(s.categoryField, dataRow, this$1.chartService.intl);\n\n if (dateAxis || !uniqueCategories.get(category)) {\n items.push([ category, dataRow ]);\n\n if (!dateAxis) {\n uniqueCategories.set(category, true);\n }\n }\n }\n }\n }\n\n if (items.length > 0) {\n if (dateAxis) {\n items = uniqueDates(items, function(a, b) {\n return dateComparer(a[0], b[0]);\n });\n }\n\n var result = transpose(items);\n axis.categories = result[0];\n } else if (bindable) {\n axis.categories = [];\n }\n };\n\n Chart.prototype._isBindable = function _isBindable (series) {\n var valueFields = SeriesBinder.current.valueFields(series);\n var result = true;\n\n for (var i = 0; i < valueFields.length; i++) {\n var field = valueFields[i];\n if (field === VALUE) {\n field = \"field\";\n } else {\n field = field + \"Field\";\n }\n\n if (!defined(series[field])) {\n result = false;\n break;\n }\n }\n\n return result;\n };\n\n Chart.prototype._noTransitionsRedraw = function _noTransitionsRedraw () {\n var options = this.options;\n var transitionsState;\n\n if (options.transitions !== false) {\n options.transitions = false;\n transitionsState = true;\n }\n\n this._redraw();\n\n if (transitionsState) {\n options.transitions = true;\n }\n };\n\n Chart.prototype._legendItemHover = function _legendItemHover (seriesIndex, pointIndex) {\n var ref = this;\n var plotArea = ref._plotArea;\n var highlight = ref._highlight;\n var currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n var items;\n\n if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL, PYRAMID ])) {\n items = plotArea.findPoint(function(point) {\n return point.series.index === seriesIndex && point.index === pointIndex;\n });\n } else {\n items = plotArea.pointsBySeriesIndex(seriesIndex);\n }\n\n if (this._hasInactiveOpacity() && currentSeries.visible && items) {\n var multipleSeries = plotArea.series.length > 1;\n var point = items.length ? items[0] : items;\n\n this._displayInactiveOpacity(point, multipleSeries, items);\n } else {\n highlight.show(items);\n }\n };\n\n Chart.prototype._shouldAttachMouseMove = function _shouldAttachMouseMove () {\n return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n };\n\n Chart.prototype.updateMouseMoveHandler = function updateMouseMoveHandler () {\n var obj, obj$1;\n\n unbindEvents(this.element, ( obj = {}, obj[ MOUSEMOVE ] = this._mousemove, obj ));\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(this.element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n };\n\n Chart.prototype.applyOptions = function applyOptions (options, theme) {\n clearMissingValues(this._originalOptions, options);\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n if (theme) {\n this._theme = theme;\n this.chartService.theme = theme;\n }\n this._initTheme(this.options, this._theme);\n\n this._toggleDragZoomEvents();\n };\n\n Chart.prototype.setOptions = function setOptions (options, theme) {\n this.applyOptions(options, theme);\n this.bindCategories();\n this.redraw();\n this.updateMouseMoveHandler();\n };\n\n Chart.prototype.setDirection = function setDirection (rtl) {\n this.chartService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this._destroySurface();\n }\n };\n\n Chart.prototype.setIntlService = function setIntlService (intl) {\n this.chartService.intl = intl;\n };\n\n Chart.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n this._noTransitionsRedraw();\n };\n\n Chart.prototype.destroy = function destroy () {\n var obj, obj$1;\n\n this._destroyed = true;\n\n unbindEvents(this.element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSEMOVE ] = this._mousemove, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n if (this.domEvents) {\n this.domEvents.destroy();\n delete this.domEvents;\n }\n\n if (this._mouseMoveTrackHandler) {\n unbindEvents(document, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj$1 ));\n }\n\n this._destroyView();\n\n this._destroySurface();\n\n this._clearRedrawTimeout();\n };\n\n Chart.prototype._destroySurface = function _destroySurface () {\n var surface = this.surface;\n if (surface) {\n surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n surface.destroy();\n\n this.surface = null;\n }\n };\n\n Chart.prototype._destroySelections = function _destroySelections () {\n var selections = this._selections;\n\n if (selections) {\n while (selections.length > 0) {\n selections.shift().destroy();\n }\n }\n };\n\n Chart.prototype._destroyView = function _destroyView () {\n var model = this._model;\n\n if (model) {\n model.destroy();\n this._model = null;\n }\n\n this._unsetActivePoint();\n this._resetDrilldownPoint();\n this._destroySelections();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this._highlight) {\n this._highlight.destroy();\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.destroy();\n delete this._zoomSelection;\n }\n\n if (this._pannable) {\n this._pannable.destroy();\n delete this._pannable;\n }\n\n if (this._mousewheelZoom) {\n this._mousewheelZoom.destroy();\n delete this._mousewheelZoom;\n }\n };\n\n return Chart;\n}(Class));\n\nfunction resolveAxisAliases(options) {\n var aliases = AXIS_NAMES;\n\n for (var idx = 0; idx < aliases.length; idx++) {\n var alias = aliases[idx] + \"Axes\";\n if (options[alias]) {\n options[aliases[idx] + \"Axis\"] = options[alias];\n delete options[alias];\n }\n }\n}\n\nfunction pointByCategoryName(points, name) {\n if (points) {\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx].category === name) {\n return [ points[idx] ];\n }\n }\n }\n}\n\nfunction applyAxisDefaults(options, themeOptions) {\n var themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n var axisName, axisDefaults, axes;\n\n function mapAxisOptions(axisOptions) {\n var axisColor = (axisOptions || {}).color || axisDefaults.color;\n var result = deepExtend({},\n themeAxisDefaults,\n themeAxisDefaults[axisName],\n axisDefaults,\n axisDefaults[axisName], {\n line: { color: axisColor },\n labels: { color: axisColor },\n title: { color: axisColor }\n },\n axisOptions\n );\n\n delete result[axisName];\n\n return result;\n }\n\n for (var idx = 0; idx < AXIS_NAMES.length; idx++) {\n axisName = AXIS_NAMES[idx] + \"Axis\";\n axisDefaults = options.axisDefaults || {};\n axes = [].concat(options[axisName]);\n\n axes = axes.map(mapAxisOptions);\n\n options[axisName] = axes.length > 1 ? axes : axes[0];\n }\n}\n\nfunction applySeriesDefaults(options, themeOptions) {\n var series = options.series;\n var seriesLength = series.length;\n var seriesDefaults = options.seriesDefaults;\n var commonDefaults = deepExtend({}, options.seriesDefaults);\n var themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n var commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n cleanupNestedSeriesDefaults(commonDefaults);\n cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n for (var i = 0; i < seriesLength; i++) {\n var seriesType = series[i].type || options.seriesDefaults.type;\n\n var baseOptions = deepExtend(\n { data: [] },\n commonThemeDefaults,\n themeSeriesDefaults[seriesType],\n { tooltip: options.tooltip },\n commonDefaults,\n seriesDefaults[seriesType]\n );\n\n series[i]._defaults = baseOptions;\n series[i] = deepExtend({}, baseOptions, series[i]);\n series[i].data = series[i].data || [];\n }\n}\n\nfunction cleanupNestedSeriesDefaults(seriesDefaults) {\n delete seriesDefaults.bar;\n delete seriesDefaults.column;\n delete seriesDefaults.rangeColumn;\n delete seriesDefaults.line;\n delete seriesDefaults.verticalLine;\n delete seriesDefaults.pie;\n delete seriesDefaults.donut;\n delete seriesDefaults.area;\n delete seriesDefaults.verticalArea;\n delete seriesDefaults.scatter;\n delete seriesDefaults.scatterLine;\n delete seriesDefaults.bubble;\n delete seriesDefaults.candlestick;\n delete seriesDefaults.ohlc;\n delete seriesDefaults.boxPlot;\n delete seriesDefaults.bullet;\n delete seriesDefaults.verticalBullet;\n delete seriesDefaults.polarArea;\n delete seriesDefaults.polarLine;\n delete seriesDefaults.radarArea;\n delete seriesDefaults.radarLine;\n delete seriesDefaults.waterfall;\n}\n\n\nfunction axisRanges(axes) {\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var axisName = axis.options.name;\n if (axisName) {\n ranges[axisName] = axis.range();\n }\n }\n\n return ranges;\n}\n\nfunction sortDates(dates, comparer) {\n if ( comparer === void 0 ) comparer = dateComparer;\n\n for (var i = 1, length = dates.length; i < length; i++) {\n if (comparer(dates[i], dates[i - 1]) < 0) {\n dates.sort(comparer);\n break;\n }\n }\n\n return dates;\n}\n\nfunction uniqueDates(srcDates, comparer) {\n if ( comparer === void 0 ) comparer = dateComparer;\n\n var dates = sortDates(srcDates, comparer);\n var length = dates.length;\n var result = length > 0 ? [ dates[0] ] : [];\n\n for (var i = 1; i < length; i++) {\n if (comparer(dates[i], last(result)) !== 0) {\n result.push(dates[i]);\n }\n }\n\n return result;\n}\n\nfunction transpose(rows) {\n var rowCount = rows.length;\n var result = [];\n\n for (var rowIx = 0; rowIx < rowCount; rowIx++) {\n var row = rows[rowIx];\n var colCount = row.length;\n\n for (var colIx = 0; colIx < colCount; colIx++) {\n result[colIx] = result[colIx] || [];\n result[colIx].push(row[colIx]);\n }\n }\n\n return result;\n}\n\nvar DATA_FIELDS = [ 'data', 'categories' ];\n\nfunction clearMissingValues(originalOptions, options) {\n for (var field in options) {\n if (!inArray(field, DATA_FIELDS) && options.hasOwnProperty(field)) {\n var fieldValue = options[field];\n var originalValue = originalOptions[field];\n if (defined(originalValue)) {\n var nullValue = fieldValue === null;\n if ((nullValue || !defined(fieldValue))) {\n delete originalOptions[field];\n if (nullValue) {\n delete options[field];\n }\n } else if (originalValue && isObject(fieldValue)) {\n if (isObject(originalValue)) {\n clearMissingValues(originalValue, fieldValue);\n }\n }\n }\n }\n }\n}\n\nfunction triggerPaneRender(panes) {\n for (var idx = 0; idx < panes.length; idx++) {\n panes[idx].notifyRender();\n }\n}\n\nsetDefaultOptions(Chart, {\n renderAs: \"\",\n chartArea: {},\n legend: {\n visible: true,\n labels: {}\n },\n categoryAxis: {},\n seriesDefaults: {\n type: COLUMN,\n data: [],\n highlight: {\n visible: true\n },\n labels: {},\n negativeValues: {\n visible: false\n }\n },\n series: [],\n seriesColors: null,\n tooltip: {\n visible: false\n },\n transitions: true,\n valueAxis: {},\n plotArea: {},\n title: {},\n xAxis: {},\n yAxis: {},\n panes: [ {} ],\n pannable: false,\n zoomable: false\n});\n\nexport default Chart;\n","import { SharedTooltip as ChartSharedTooltip } from '../chart';\nimport { Point } from '../core';\nvar TOP_OFFSET = -2;\n\nvar SharedTooltip = (function (ChartSharedTooltip) {\n function SharedTooltip () {\n ChartSharedTooltip.apply(this, arguments);\n }\n\n if ( ChartSharedTooltip ) SharedTooltip.__proto__ = ChartSharedTooltip;\n SharedTooltip.prototype = Object.create( ChartSharedTooltip && ChartSharedTooltip.prototype );\n SharedTooltip.prototype.constructor = SharedTooltip;\n\n SharedTooltip.prototype._slotAnchor = function _slotAnchor (coords, slot) {\n var axis = this.plotArea.categoryAxis;\n var vertical = axis.options.vertical;\n var align = vertical ? {\n horizontal: \"left\",\n vertical: \"center\"\n } : {\n horizontal: \"center\",\n vertical: \"bottom\"\n };\n\n var point;\n\n if (vertical) {\n point = new Point(this.plotArea.box.x2, slot.center().y);\n } else {\n point = new Point(slot.center().x, TOP_OFFSET);\n }\n\n return {\n point: point,\n align: align\n };\n };\n\n SharedTooltip.prototype._defaultAnchor = function _defaultAnchor (point, slot) {\n return this._slotAnchor({}, slot);\n };\n\n return SharedTooltip;\n}(ChartSharedTooltip));\n\nexport default SharedTooltip;","import { Chart } from '../chart';\nimport { BAR, BULLET, PIE, COLUMN, VERTICAL_BULLET } from '../chart/constants';\nimport { addClass, deepExtend, elementSize, getSpacing, inArray, isArray, isNumber, setDefaultOptions } from '../common';\nimport SharedTooltip from './shared-tooltip';\n\nvar DEAULT_BAR_WIDTH = 150;\nvar DEAULT_BULLET_WIDTH = 150;\nvar NO_CROSSHAIR = [ BAR, BULLET ];\n\nfunction hide(children) {\n var state = [];\n for (var idx = 0; idx < children.length; idx++) {\n var child = children[idx];\n state[idx] = child.style.display;\n child.style.display = \"none\";\n }\n\n return state;\n}\n\nfunction show(children, state) {\n for (var idx = 0; idx < children.length; idx++) {\n children[idx].style.display = state[idx];\n }\n}\n\nfunction wrapNumber(value) {\n return isNumber(value) ? [ value ] : value;\n}\n\nvar Sparkline = (function (Chart) {\n function Sparkline () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) Sparkline.__proto__ = Chart;\n Sparkline.prototype = Object.create( Chart && Chart.prototype );\n Sparkline.prototype.constructor = Sparkline;\n\n Sparkline.prototype._setElementClass = function _setElementClass (element) {\n addClass(element, 'k-sparkline');\n };\n\n Sparkline.prototype._initElement = function _initElement (element) {\n Chart.prototype._initElement.call(this, element);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n };\n\n Sparkline.prototype._resize = function _resize () {\n var element = this.element;\n var state = hide(element.childNodes);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n\n show(element.childNodes, state);\n\n Chart.prototype._resize.call(this);\n };\n\n Sparkline.prototype._modelOptions = function _modelOptions () {\n var chartOptions = this.options;\n var stage = this._surfaceWrap();\n var displayState = hide(stage.childNodes);\n\n var space = document.createElement('span');\n space.innerHTML = ' ';\n\n stage.appendChild(space);\n\n var options = deepExtend({\n width: this._autoWidth,\n height: elementSize(stage).height,\n transitions: chartOptions.transitions\n }, chartOptions.chartArea, {\n inline: true,\n align: false\n });\n\n elementSize(stage, {\n width: options.width,\n height: options.height\n });\n\n stage.removeChild(space);\n\n show(stage.childNodes, displayState);\n\n if (this.surface) {\n this.surface.resize();\n }\n\n return options;\n };\n\n Sparkline.prototype._surfaceWrap = function _surfaceWrap () {\n if (!this.stage) {\n var stage = this.stage = document.createElement('span');\n this.element.appendChild(stage);\n }\n return this.stage;\n };\n\n Sparkline.prototype._createPlotArea = function _createPlotArea (skipSeries) {\n var plotArea = Chart.prototype._createPlotArea.call(this, skipSeries);\n this._autoWidth = this._initialWidth || this._calculateWidth(plotArea);\n\n return plotArea;\n };\n\n Sparkline.prototype._calculateWidth = function _calculateWidth (plotArea) {\n var options = this.options;\n var margin = getSpacing(options.chartArea.margin);\n var charts = plotArea.charts;\n var stage = this._surfaceWrap();\n var total = 0;\n\n\n for (var i = 0; i < charts.length; i++) {\n var currentChart = charts[i];\n var firstSeries = (currentChart.options.series || [])[0];\n if (!firstSeries) {\n continue;\n }\n\n if (firstSeries.type === BAR) {\n return DEAULT_BAR_WIDTH;\n }\n\n if (firstSeries.type === BULLET) {\n return DEAULT_BULLET_WIDTH;\n }\n\n if (firstSeries.type === PIE) {\n return elementSize(stage).height;\n }\n\n var categoryAxis = currentChart.categoryAxis;\n if (categoryAxis) {\n var pointsCount = categoryAxis.categoriesCount() *\n (!currentChart.options.isStacked && inArray(firstSeries.type, [ COLUMN, VERTICAL_BULLET ]) ? currentChart.seriesOptions.length : 1);\n\n total = Math.max(total, pointsCount);\n }\n }\n\n var size = total * options.pointWidth;\n if (size > 0) {\n size += margin.left + margin.right;\n }\n\n return size;\n };\n\n Sparkline.prototype._createSharedTooltip = function _createSharedTooltip (options) {\n return new SharedTooltip(this._plotArea, options);\n };\n\n Sparkline.normalizeOptions = function normalizeOptions (userOptions) {\n var options = wrapNumber(userOptions);\n\n if (isArray(options)) {\n options = { seriesDefaults: { data: options } };\n } else {\n options = deepExtend({}, options);\n }\n\n if (!options.series) {\n options.series = [ { data: wrapNumber(options.data) } ];\n }\n\n deepExtend(options, {\n seriesDefaults: {\n type: options.type\n }\n });\n\n if (inArray(options.series[0].type, NO_CROSSHAIR) ||\n inArray(options.seriesDefaults.type, NO_CROSSHAIR)) {\n options = deepExtend({}, {\n categoryAxis: {\n crosshair: {\n visible: false\n }\n }\n }, options);\n }\n\n return options;\n };\n\n return Sparkline;\n}(Chart));\n\nsetDefaultOptions(Sparkline, {\n chartArea: {\n margin: 2\n },\n axisDefaults: {\n visible: false,\n majorGridLines: {\n visible: false\n },\n valueAxis: {\n narrowRange: true\n }\n },\n seriesDefaults: {\n type: \"line\",\n area: {\n line: {\n width: 0.5\n }\n },\n bar: {\n stack: true\n },\n padding: 2,\n width: 0.5,\n overlay: {\n gradient: null\n },\n highlight: {\n visible: false\n },\n border: {\n width: 0\n },\n markers: {\n size: 2,\n visible: false\n }\n },\n tooltip: {\n visible: true,\n shared: true\n },\n categoryAxis: {\n crosshair: {\n visible: true,\n tooltip: {\n visible: false\n }\n }\n },\n legend: {\n visible: false\n },\n transitions: false,\n\n pointWidth: 5,\n\n panes: [ { clip: false } ]\n});\n\nexport default Sparkline;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { interpolateValue, elementStyles } from '../common';\n\nvar FadeOutAnimation = (function (superclass) {\n function FadeOutAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) FadeOutAnimation.__proto__ = superclass;\n FadeOutAnimation.prototype = Object.create( superclass && superclass.prototype );\n FadeOutAnimation.prototype.constructor = FadeOutAnimation;\n\n FadeOutAnimation.prototype.setup = function setup () {\n this._initialOpacity = parseFloat(elementStyles(this.element, 'opacity').opacity);\n };\n\n FadeOutAnimation.prototype.step = function step (pos) {\n elementStyles(this.element, {\n opacity: String(interpolateValue(this._initialOpacity, 0, pos))\n });\n };\n\n FadeOutAnimation.prototype.abort = function abort () {\n superclass.prototype.abort.call(this);\n elementStyles(this.element, {\n display: 'none',\n opacity: String(this._initialOpacity)\n });\n };\n\n FadeOutAnimation.prototype.cancel = function cancel () {\n superclass.prototype.abort.call(this);\n elementStyles(this.element, {\n opacity: String(this._initialOpacity)\n });\n };\n\n return FadeOutAnimation;\n}(draw.Animation));\n\nexport default FadeOutAnimation;","import { Class, deepExtend, elementStyles, getTemplate, setDefaultOptions } from '../common';\nimport { toDate, toTime } from '../date-utils';\nimport FadeOutAnimation from './fade-out-animation';\n\nfunction createDiv(className, style) {\n var div = document.createElement(\"div\");\n div.className = className;\n if (style) {\n div.style.cssText = style;\n }\n\n return div;\n}\n\nvar NavigatorHint = (function (Class) {\n function NavigatorHint(container, chartService, options) {\n Class.call(this);\n\n this.options = deepExtend({}, this.options, options);\n this.container = container;\n this.chartService = chartService;\n\n var padding = elementStyles(container, [ \"paddingLeft\", \"paddingTop\" ]);\n this.chartPadding = {\n top: padding.paddingTop,\n left: padding.paddingLeft\n };\n\n this.createElements();\n container.appendChild(this.element);\n }\n\n if ( Class ) NavigatorHint.__proto__ = Class;\n NavigatorHint.prototype = Object.create( Class && Class.prototype );\n NavigatorHint.prototype.constructor = NavigatorHint;\n\n NavigatorHint.prototype.createElements = function createElements () {\n var element = this.element = createDiv('k-navigator-hint', 'display: none; position: absolute; top: 1px; left: 1px;');\n var tooltip = this.tooltip = createDiv('k-tooltip k-chart-tooltip');\n var scroll = this.scroll = createDiv('k-scroll');\n\n tooltip.innerHTML = ' ';\n\n element.appendChild(tooltip);\n element.appendChild(scroll);\n };\n\n NavigatorHint.prototype.show = function show (from, to, bbox) {\n var ref = this;\n var element = ref.element;\n var options = ref.options;\n var scroll = ref.scroll;\n var tooltip = ref.tooltip;\n var middle = toDate(toTime(from) + toTime(to - from) / 2);\n var scrollWidth = bbox.width() * 0.4;\n var minPos = bbox.center().x - scrollWidth;\n var maxPos = bbox.center().x;\n var posRange = maxPos - minPos;\n var range = options.max - options.min;\n var scale = posRange / range;\n var offset = middle - options.min;\n var text = this.chartService.intl.format(options.format, from, to);\n var template = getTemplate(options);\n\n this.clearHideTimeout();\n\n if (!this._visible) {\n elementStyles(element, {\n visibility: 'hidden',\n display: 'block'\n });\n this._visible = true;\n }\n\n if (template) {\n text = template({\n from: from,\n to: to\n });\n }\n\n tooltip.innerHTML = text;\n elementStyles(tooltip, {\n left: bbox.center().x - tooltip.offsetWidth / 2,\n top: bbox.y1\n });\n\n var tooltipStyle = elementStyles(tooltip, [ 'marginTop', 'borderTopWidth', 'height' ]);\n\n elementStyles(scroll, {\n width: scrollWidth,\n left: minPos + offset * scale,\n top: bbox.y1 + tooltipStyle.marginTop + tooltipStyle.borderTopWidth + tooltipStyle.height / 2\n });\n\n elementStyles(element, {\n visibility: 'visible'\n });\n };\n\n NavigatorHint.prototype.clearHideTimeout = function clearHideTimeout () {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n if (this._hideAnimation) {\n this._hideAnimation.cancel();\n }\n };\n\n NavigatorHint.prototype.hide = function hide () {\n var this$1 = this;\n\n this.clearHideTimeout();\n\n this._hideTimeout = setTimeout(function () {\n this$1._visible = false;\n this$1._hideAnimation = new FadeOutAnimation(this$1.element);\n this$1._hideAnimation.setup();\n this$1._hideAnimation.play();\n }, this.options.hideDelay);\n };\n\n NavigatorHint.prototype.destroy = function destroy () {\n this.clearHideTimeout();\n if (this.container) {\n this.container.removeChild(this.element);\n }\n delete this.container;\n delete this.chartService;\n delete this.element;\n delete this.tooltip;\n delete this.scroll;\n };\n\n return NavigatorHint;\n}(Class));\n\nsetDefaultOptions(NavigatorHint, {\n format: \"{0:d} - {1:d}\",\n hideDelay: 500\n});\n\nexport default NavigatorHint;","var NAVIGATOR_PANE = \"_navigator\";\nvar NAVIGATOR_AXIS = NAVIGATOR_PANE;\nvar DEFAULT_PANE = \"_default\";\n\nexport { NAVIGATOR_AXIS, NAVIGATOR_PANE, DEFAULT_PANE };\n","import NavigatorHint from './navigator-hint';\nimport { Selection, filterSeriesByType } from '../chart';\nimport { DRAG, DRAG_END, EQUALLY_SPACED_SERIES, ZOOM, ZOOM_END } from '../chart/constants';\nimport { DateCategoryAxis } from '../core';\nimport { addDuration, parseDate, toDate, toTime } from '../date-utils';\nimport { Class, deepExtend, defined, getTemplate, InstanceObserver, last, limitValue, valueOrDefault } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE, DEFAULT_PANE } from './constants';\n\nvar ZOOM_ACCELERATION = 3;\n\nvar Navigator = (function (Class) {\n function Navigator(chart) {\n var obj;\n\n Class.call(this);\n\n this.chart = chart;\n var options = this.options = deepExtend({}, this.options, chart.options.navigator);\n var select = options.select;\n if (select) {\n select.from = this.parseDate(select.from);\n select.to = this.parseDate(select.to);\n }\n\n if (!defined(options.hint.visible)) {\n options.hint.visible = options.visible;\n }\n\n this.chartObserver = new InstanceObserver(this, ( obj = {}, obj[DRAG] = '_drag', obj[DRAG_END] = '_dragEnd', obj[ZOOM] = '_zoom', obj[ZOOM_END] = '_zoomEnd', obj ));\n chart.addObserver(this.chartObserver);\n }\n\n if ( Class ) Navigator.__proto__ = Class;\n Navigator.prototype = Object.create( Class && Class.prototype );\n Navigator.prototype.constructor = Navigator;\n\n Navigator.prototype.parseDate = function parseDate$1 (value) {\n return parseDate(this.chart.chartService.intl, value);\n };\n\n Navigator.prototype.clean = function clean () {\n if (this.selection) {\n this.selection.destroy();\n this.selection = null;\n }\n\n if (this.hint) {\n this.hint.destroy();\n this.hint = null;\n }\n };\n\n Navigator.prototype.destroy = function destroy () {\n if (this.chart) {\n this.chart.removeObserver(this.chartObserver);\n delete this.chart;\n }\n\n this.clean();\n };\n\n Navigator.prototype.redraw = function redraw () {\n this._redrawSelf();\n this.initSelection();\n };\n\n Navigator.prototype.initSelection = function initSelection () {\n var ref = this;\n var chart = ref.chart;\n var options = ref.options;\n var axis = this.mainAxis();\n var ref$1 = axis.roundedRange();\n var min = ref$1.min;\n var max = ref$1.max;\n var ref$2 = options.select;\n var from = ref$2.from;\n var to = ref$2.to;\n var mousewheel = ref$2.mousewheel;\n var axisClone = clone(axis);\n\n if (axis.categoriesCount() === 0) {\n return;\n }\n\n this.clean();\n\n // \"Freeze\" the selection axis position until the next redraw\n axisClone.box = axis.box;\n\n this.selection = new Selection(chart, axisClone, {\n min: min,\n max: max,\n from: from || min,\n to: to || max,\n mousewheel: valueOrDefault(mousewheel, { zoom: \"left\" }),\n visible: options.visible\n }, new InstanceObserver(this, {\n selectStart: '_selectStart',\n select: '_select',\n selectEnd: '_selectEnd'\n }));\n\n if (options.hint.visible) {\n this.hint = new NavigatorHint(chart.element, chart.chartService, {\n min: min,\n max: max,\n template: getTemplate(options.hint),\n format: options.hint.format\n });\n }\n };\n\n Navigator.prototype.setRange = function setRange () {\n var plotArea = this.chart._createPlotArea(true);\n var axis = plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n\n var ref = axis.roundedRange();\n var min = ref.min;\n var max = ref.max;\n\n var select = this.options.select || {};\n var from = select.from || min;\n if (from < min) {\n from = min;\n }\n\n var to = select.to || max;\n if (to > max) {\n to = max;\n }\n\n this.options.select = deepExtend({}, select, {\n from: from,\n to: to\n });\n\n this.filterAxes();\n };\n\n Navigator.prototype._redrawSelf = function _redrawSelf (silent) {\n var plotArea = this.chart._plotArea;\n\n if (plotArea) {\n plotArea.redraw(last(plotArea.panes), silent);\n }\n };\n\n Navigator.prototype.redrawSlaves = function redrawSlaves () {\n var chart = this.chart;\n var plotArea = chart._plotArea;\n var slavePanes = plotArea.panes.filter(function (pane) { return pane.options.name !== NAVIGATOR_PANE; });\n\n // Update the original series and categoryAxis before partial refresh.\n plotArea.srcSeries = chart.options.series;\n plotArea.options.categoryAxis = chart.options.categoryAxis;\n plotArea.clearSeriesPointsCache();\n\n plotArea.redraw(slavePanes);\n };\n\n Navigator.prototype._drag = function _drag (e) {\n var ref = this;\n var chart = ref.chart;\n var selection = ref.selection;\n var coords = chart._eventCoordinates(e.originalEvent);\n var navigatorAxis = this.mainAxis();\n var naviRange = navigatorAxis.roundedRange();\n var inNavigator = navigatorAxis.pane.box.containsPoint(coords);\n var axis = chart._plotArea.categoryAxis;\n var range = e.axisRanges[axis.options.name];\n var select = this.options.select;\n var duration;\n\n if (!range || inNavigator || !selection) {\n return;\n }\n\n if (select.from && select.to) {\n duration = toTime(select.to) - toTime(select.from);\n } else {\n duration = toTime(selection.options.to) - toTime(selection.options.from);\n }\n\n var from = toDate(limitValue(\n toTime(range.min),\n naviRange.min, toTime(naviRange.max) - duration\n ));\n\n var to = toDate(limitValue(\n toTime(from) + duration,\n toTime(naviRange.min) + duration, naviRange.max\n ));\n\n this.options.select = { from: from, to: to };\n\n if (this.options.liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(from, to);\n\n this.showHint(from, to);\n };\n\n Navigator.prototype._dragEnd = function _dragEnd () {\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n if (this.hint) {\n this.hint.hide();\n }\n };\n\n Navigator.prototype.readSelection = function readSelection () {\n var ref = this;\n var ref_selection_options = ref.selection.options;\n var from = ref_selection_options.from;\n var to = ref_selection_options.to;\n var select = ref.options.select;\n\n select.from = from;\n select.to = to;\n };\n\n Navigator.prototype.filterAxes = function filterAxes () {\n var ref = this;\n var select = ref.options.select; if ( select === void 0 ) select = { };\n var chart = ref.chart;\n var allAxes = chart.options.categoryAxis;\n var from = select.from;\n var to = select.to;\n\n for (var idx = 0; idx < allAxes.length; idx++) {\n var axis = allAxes[idx];\n if (axis.pane !== NAVIGATOR_PANE) {\n axis.min = from;\n axis.max = to;\n }\n }\n };\n\n Navigator.prototype.filter = function filter () {\n var ref = this;\n var chart = ref.chart;\n var select = ref.options.select;\n\n if (!chart.requiresHandlers([ \"navigatorFilter\" ])) {\n return;\n }\n\n var mainAxis = this.mainAxis();\n var args = {\n from: select.from,\n to: select.to\n };\n\n if (mainAxis.options.type !== 'category') {\n var axisOptions = new DateCategoryAxis(deepExtend({\n baseUnit: \"fit\"\n }, chart.options.categoryAxis[0], {\n categories: [ select.from, select.to ]\n }), chart.chartService).options;\n\n args.from = addDuration(axisOptions.min, -axisOptions.baseUnitStep, axisOptions.baseUnit);\n args.to = addDuration(axisOptions.max, axisOptions.baseUnitStep, axisOptions.baseUnit);\n }\n\n this.chart.trigger(\"navigatorFilter\", args);\n };\n\n Navigator.prototype._zoom = function _zoom (e) {\n var ref = this;\n var axis = ref.chart._plotArea.categoryAxis;\n var selection = ref.selection;\n var ref_options = ref.options;\n var select = ref_options.select;\n var liveDrag = ref_options.liveDrag;\n var mainAxis = this.mainAxis();\n var delta = e.delta;\n\n if (!selection) {\n return;\n }\n\n var fromIx = mainAxis.categoryIndex(selection.options.from);\n var toIx = mainAxis.categoryIndex(selection.options.to);\n var coords = this.chart._eventCoordinates(e.originalEvent);\n\n e.originalEvent.preventDefault();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (toIx - fromIx > 1) {\n selection.zoom(delta, coords);\n this.readSelection();\n } else {\n axis.options.min = select.from;\n select.from = axis.scaleRange(-e.delta * this.chart._mousewheelZoomRate(), coords).min;\n }\n\n if (liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(select.from, select.to);\n\n this.showHint(this.options.select.from, this.options.select.to);\n };\n\n Navigator.prototype._zoomEnd = function _zoomEnd (e) {\n this._dragEnd(e);\n };\n\n Navigator.prototype.showHint = function showHint (from, to) {\n var plotArea = this.chart._plotArea;\n\n if (this.hint) {\n this.hint.show(from, to, plotArea.backgroundBox());\n }\n };\n\n Navigator.prototype._selectStart = function _selectStart (e) {\n return this.chart._selectStart(e);\n };\n\n Navigator.prototype._select = function _select (e) {\n this.showHint(e.from, e.to);\n\n return this.chart._select(e);\n };\n\n Navigator.prototype._selectEnd = function _selectEnd (e) {\n if (this.hint) {\n this.hint.hide();\n }\n\n this.readSelection();\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n return this.chart._selectEnd(e);\n };\n\n Navigator.prototype.mainAxis = function mainAxis () {\n var plotArea = this.chart._plotArea;\n\n if (plotArea) {\n return plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n }\n };\n\n Navigator.prototype.select = function select (from, to) {\n var select = this.options.select;\n\n if (from && to) {\n select.from = this.parseDate(from);\n select.to = this.parseDate(to);\n\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n this.selection.set(from, to);\n }\n\n return {\n from: select.from,\n to: select.to\n };\n };\n\n Navigator.setup = function setup (options, themeOptions) {\n if ( options === void 0 ) options = {};\n if ( themeOptions === void 0 ) themeOptions = {};\n\n if (options.__navi) {\n return;\n }\n options.__navi = true;\n\n var naviOptions = deepExtend({}, themeOptions.navigator, options.navigator);\n var panes = options.panes = [].concat(options.panes);\n var paneOptions = deepExtend({}, naviOptions.pane, { name: NAVIGATOR_PANE });\n\n if (!naviOptions.visible) {\n paneOptions.visible = false;\n paneOptions.height = 0.1;\n }\n\n if (options.navigator.position !== 'top') {\n panes.push(paneOptions);\n } else {\n panes.unshift(paneOptions);\n }\n\n panes.forEach(function (pane) { return pane.name = pane.name || DEFAULT_PANE; });\n\n Navigator.attachAxes(options, naviOptions);\n Navigator.attachSeries(options, naviOptions, themeOptions);\n };\n\n Navigator.attachAxes = function attachAxes (options, naviOptions) {\n var series = naviOptions.series || [];\n var categoryAxes = options.categoryAxis = [].concat(options.categoryAxis);\n var valueAxes = options.valueAxis = [].concat(options.valueAxis);\n var allAxes = categoryAxes.concat(valueAxes);\n allAxes.forEach(function (axis) { return axis.pane = axis.pane || DEFAULT_PANE; });\n\n var equallySpacedSeries = filterSeriesByType(series, EQUALLY_SPACED_SERIES);\n var justifyAxis = equallySpacedSeries.length === 0;\n\n var base = deepExtend({\n type: \"date\",\n pane: NAVIGATOR_PANE,\n roundToBaseUnit: !justifyAxis,\n justified: justifyAxis,\n _collapse: false,\n majorTicks: { visible: true },\n tooltip: { visible: false },\n labels: { step: 1 },\n autoBind: naviOptions.autoBindElements,\n autoBaseUnitSteps: {\n minutes: [ 1 ],\n hours: [ 1, 2 ],\n days: [ 1, 2 ],\n weeks: [],\n months: [ 1 ],\n years: [ 1 ]\n }\n });\n var user = naviOptions.categoryAxis;\n\n categoryAxes.push(\n deepExtend({}, base, {\n maxDateGroups: 200\n }, user, {\n name: NAVIGATOR_AXIS,\n title: null,\n baseUnit: \"fit\",\n baseUnitStep: \"auto\",\n labels: { visible: false },\n majorTicks: { visible: false }\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_labels\",\n maxDateGroups: 20,\n baseUnitStep: \"auto\",\n labels: { position: \"\" },\n plotBands: [],\n autoBaseUnitSteps: {\n minutes: []\n },\n _overlap: true\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_ticks\",\n maxDateGroups: 200,\n majorTicks: {\n width: 0.5\n },\n plotBands: [],\n title: null,\n labels: { visible: false, mirror: true },\n _overlap: true\n })\n );\n\n valueAxes.push(deepExtend({\n name: NAVIGATOR_AXIS,\n pane: NAVIGATOR_PANE,\n majorGridLines: {\n visible: false\n },\n visible: false\n }, naviOptions.valueAxis));\n };\n\n Navigator.attachSeries = function attachSeries (options, naviOptions, themeOptions) {\n var series = options.series = options.series || [];\n var navigatorSeries = [].concat(naviOptions.series || []);\n var seriesColors = themeOptions.seriesColors;\n var defaults = naviOptions.seriesDefaults;\n\n for (var idx = 0; idx < navigatorSeries.length; idx++) {\n series.push(\n deepExtend({\n color: seriesColors[idx % seriesColors.length],\n categoryField: naviOptions.dateField,\n visibleInLegend: false,\n tooltip: {\n visible: false\n }\n }, defaults, navigatorSeries[idx], {\n axis: NAVIGATOR_AXIS,\n categoryAxis: NAVIGATOR_AXIS,\n autoBind: naviOptions.autoBindElements\n })\n );\n }\n };\n\n return Navigator;\n}(Class));\n\nfunction ClonedObject() { }\nfunction clone(obj) {\n ClonedObject.prototype = obj;\n return new ClonedObject();\n}\n\nexport default Navigator;\n","import { Chart } from '../chart';\n\nimport Navigator from './navigator';\nimport { DEFAULT_WIDTH } from '../common/constants';\nimport { addClass, deepExtend, elementSize, grep, setDefaultOptions } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nvar AUTO_CATEGORY_WIDTH = 28;\n\nvar StockChart = (function (Chart) {\n function StockChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) StockChart.__proto__ = Chart;\n StockChart.prototype = Object.create( Chart && Chart.prototype );\n StockChart.prototype.constructor = StockChart;\n\n StockChart.prototype.applyDefaults = function applyDefaults (options, themeOptions) {\n var width = elementSize(this.element).width || DEFAULT_WIDTH;\n var theme = themeOptions;\n\n var stockDefaults = {\n seriesDefaults: {\n categoryField: options.dateField\n },\n axisDefaults: {\n categoryAxis: {\n name: \"default\",\n majorGridLines: {\n visible: false\n },\n labels: {\n step: 2\n },\n majorTicks: {\n visible: false\n },\n maxDateGroups: Math.floor(width / AUTO_CATEGORY_WIDTH)\n }\n }\n };\n\n if (theme) {\n theme = deepExtend({}, theme, stockDefaults);\n }\n\n Navigator.setup(options, theme);\n\n Chart.prototype.applyDefaults.call(this, options, theme);\n };\n\n StockChart.prototype._setElementClass = function _setElementClass (element) {\n addClass(element, 'k-chart k-stockchart');\n };\n\n StockChart.prototype.setOptions = function setOptions (options) {\n this.destroyNavigator();\n Chart.prototype.setOptions.call(this, options);\n };\n\n StockChart.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n var transitions = this.options.transitions;\n\n this.options.transitions = false;\n this._fullRedraw();\n this.options.transitions = transitions;\n };\n\n StockChart.prototype._resize = function _resize () {\n this.noTransitionsRedraw();\n };\n\n StockChart.prototype._redraw = function _redraw () {\n var navigator = this.navigator;\n\n if (!this._dirty() && navigator && navigator.options.partialRedraw) {\n navigator.redrawSlaves();\n } else {\n this._fullRedraw();\n }\n };\n\n StockChart.prototype._dirty = function _dirty () {\n var options = this.options;\n var series = [].concat(options.series, options.navigator.series);\n var seriesCount = grep(series, function(s) { return s && s.visible; }).length;\n var dirty = this._seriesCount !== seriesCount;\n this._seriesCount = seriesCount;\n\n return dirty;\n };\n\n StockChart.prototype._fullRedraw = function _fullRedraw () {\n var navigator = this.navigator;\n\n if (!navigator) {\n navigator = this.navigator = new Navigator(this);\n this.trigger(\"navigatorCreated\", { navigator: navigator });\n }\n\n navigator.clean();\n navigator.setRange();\n\n Chart.prototype._redraw.call(this);\n\n navigator.initSelection();\n };\n\n StockChart.prototype._trackSharedTooltip = function _trackSharedTooltip (coords) {\n var plotArea = this._plotArea;\n var pane = plotArea.paneByPoint(coords);\n\n if (pane && pane.options.name === NAVIGATOR_PANE) {\n this._unsetActivePoint();\n } else {\n Chart.prototype._trackSharedTooltip.call(this, coords);\n }\n };\n\n StockChart.prototype.bindCategories = function bindCategories () {\n Chart.prototype.bindCategories.call(this);\n this.copyNavigatorCategories();\n };\n\n StockChart.prototype.copyNavigatorCategories = function copyNavigatorCategories () {\n var definitions = [].concat(this.options.categoryAxis);\n var categories;\n\n for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n var axis = definitions[axisIx];\n if (axis.name === NAVIGATOR_AXIS) {\n categories = axis.categories;\n } else if (categories && axis.pane === NAVIGATOR_PANE) {\n axis.categories = categories;\n }\n }\n };\n\n StockChart.prototype.destroyNavigator = function destroyNavigator () {\n if (this.navigator) {\n this.navigator.destroy();\n this.navigator = null;\n }\n };\n\n StockChart.prototype.destroy = function destroy () {\n this.destroyNavigator();\n Chart.prototype.destroy.call(this);\n };\n\n StockChart.prototype._stopChartHandlers = function _stopChartHandlers (e) {\n var coords = this._eventCoordinates(e);\n var pane = this._plotArea.paneByPoint(coords);\n\n return Chart.prototype._stopChartHandlers.call(this, e) || (pane && pane.options.name === NAVIGATOR_PANE);\n };\n\n StockChart.prototype._toggleDragZoomEvents = function _toggleDragZoomEvents () {\n if (!this._dragZoomEnabled) {\n this.element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n };\n\n return StockChart;\n}(Chart));\n\nsetDefaultOptions(StockChart, {\n dateField: \"date\",\n axisDefaults: {\n categoryAxis: {\n type: \"date\",\n baseUnit: \"fit\",\n justified: true\n },\n valueAxis: {\n narrowRange: true,\n labels: {\n format: \"C\"\n }\n }\n },\n navigator: {\n select: {},\n seriesDefaults: {\n markers: {\n visible: false\n },\n tooltip: {\n visible: false\n },\n highlight: {\n visible: false\n },\n line: {\n width: 2\n }\n },\n hint: {},\n visible: true\n },\n tooltip: {\n visible: true\n },\n legend: {\n visible: false\n }\n});\n\nexport default StockChart;\n","var ANGULAR_SPEED = 150;\nvar LINEAR_SPEED = 250;\nvar ARROW = \"arrow\";\nvar ARROW_POINTER = \"arrowPointer\";\nvar BAR_POINTER = \"barPointer\";\nvar DEFAULT_HEIGHT = 200;\nvar DEFAULT_LINE_WIDTH = 0.5;\nvar DEFAULT_WIDTH = 200;\nvar DEGREE = Math.PI / 180;\nvar INSIDE = \"inside\";\nvar LINEAR = \"linear\";\nvar OUTSIDE = \"outside\";\nvar RADIAL_POINTER = \"radialPointer\";\nvar RADIAL_RANGE_POINTER = \"radialRangePointer\";\n\nexport {\n ANGULAR_SPEED, LINEAR_SPEED, ARROW, ARROW_POINTER, BAR_POINTER,\n DEFAULT_HEIGHT, DEFAULT_LINE_WIDTH, DEFAULT_WIDTH,\n DEGREE, INSIDE, LINEAR, OUTSIDE, RADIAL_POINTER, RADIAL_RANGE_POINTER\n};","import { getSpacing } from '../../common';\n\nexport default function pad(bbox, value) {\n var origin = bbox.getOrigin();\n var size = bbox.getSize();\n var spacing = getSpacing(value);\n\n bbox.setOrigin([ origin.x - spacing.left, origin.y - spacing.top ]);\n bbox.setSize([ size.width + (spacing.left + spacing.right), size.height + (spacing.top + spacing.bottom) ]);\n\n return bbox;\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport pad from './pad';\n\nvar Group = drawing.Group;\nvar Path = drawing.Path;\nvar Text = drawing.Text;\n\nexport default function buildLabelElement(label, options) {\n var labelBox = label.box;\n var textBox = label.children[0].box;\n var border = options.border || {};\n var background = options.background || \"\";\n\n var wrapper = Path.fromRect(new geo.Rect([ labelBox.x1, labelBox.y1 ], [ labelBox.width(), labelBox.height() ]), {\n stroke: {}\n });\n\n var text = new Text(label.text, new geo.Point(textBox.x1, textBox.y1), {\n font: options.font,\n fill: { color: options.color }\n });\n\n var styleGeometry = pad(text.bbox().clone(), options.padding);\n\n var styleBox = Path.fromRect(styleGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n opacity: border.opacity,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: background\n }\n });\n\n var elements = new Group();\n elements.append(wrapper);\n elements.append(styleBox);\n elements.append(text);\n\n return elements;\n}","import { defined } from '../../common';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\n\nexport default function getRange(range, min, max) {\n var from = defined(range.from) ? range.from : MIN_VALUE;\n var to = defined(range.to) ? range.to : MAX_VALUE;\n\n range.from = Math.max(Math.min(to, from), min);\n range.to = Math.min(Math.max(to, from), max);\n\n return range;\n}","import { getSpacing } from '../../common';\nimport pad from './pad';\n\nexport default function unpad(bbox, value) {\n var spacing = getSpacing(value);\n\n spacing.left = -spacing.left; spacing.top = -spacing.top;\n spacing.right = -spacing.right; spacing.bottom = -spacing.bottom;\n\n return pad(bbox, spacing);\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { Class, elementSize, setDefaultOptions, deepExtend, isArray, isNumber } from '../common';\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT } from './constants';\nimport { ChartService } from '../services';\nimport { unpad } from './utils';\n\nvar DEFAULT_MARGIN = 5;\nvar Path = drawing.Path;\nvar Surface = drawing.Surface;\n\nvar Gauge = (function (Class) {\n function Gauge(element, userOptions, theme, context) {\n if ( context === void 0 ) context = {};\n\n Class.call(this);\n\n this.element = element;\n this.theme = theme;\n this.contextService = new ChartService(this, context);\n this._originalOptions = deepExtend({}, this.options, userOptions);\n this.options = deepExtend({}, this._originalOptions);\n this._initTheme(theme);\n\n this.redraw();\n }\n\n if ( Class ) Gauge.__proto__ = Class;\n Gauge.prototype = Object.create( Class && Class.prototype );\n Gauge.prototype.constructor = Gauge;\n\n Gauge.prototype.destroy = function destroy () {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n }\n\n delete this.element;\n delete this.surfaceElement;\n };\n\n Gauge.prototype.value = function value (pointerValue) {\n var pointer = this.pointers[0];\n\n if (arguments.length === 0) {\n return pointer.value();\n }\n\n pointer.value(pointerValue);\n this._setValueOptions(pointerValue);\n };\n\n Gauge.prototype._draw = function _draw () {\n var surface = this.surface;\n\n surface.clear();\n surface.draw(this._visuals);\n };\n\n Gauge.prototype.exportVisual = function exportVisual () {\n return this._visuals;\n };\n\n Gauge.prototype.allValues = function allValues (values) {\n var pointers = this.pointers;\n var allValues = [];\n\n if (arguments.length === 0) {\n for (var i = 0; i < pointers.length; i++) {\n allValues.push(pointers[i].value());\n }\n\n return allValues;\n }\n\n if (isArray(values)) {\n for (var i$1 = 0; i$1 < values.length; i$1++) {\n if (isNumber(values[i$1])) {\n pointers[i$1].value(values[i$1]);\n }\n }\n }\n\n this._setValueOptions(values);\n };\n\n Gauge.prototype._setValueOptions = function _setValueOptions (values) {\n var pointers = [].concat(this.options.pointer);\n var arrayValues = [].concat(values);\n\n for (var i = 0; i < arrayValues.length; i++) {\n pointers[i].value = arrayValues[i];\n }\n };\n\n Gauge.prototype.resize = function resize () {\n this.noTransitionsRedraw();\n };\n\n Gauge.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n var transitions = this.options.transitions;\n\n this._toggleTransitions(false);\n\n this.redraw();\n\n this._toggleTransitions(transitions);\n };\n\n Gauge.prototype.redraw = function redraw () {\n var size = this._surfaceSize();\n var wrapper = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._initSurface();\n\n this.gaugeArea = this._createGaugeArea();\n\n this._createModel();\n\n var bbox = unpad(wrapper.bbox(), this._gaugeAreaMargin);\n this.reflow(bbox);\n };\n\n Gauge.prototype.setOptions = function setOptions (options, theme) {\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n this._initTheme(theme);\n\n this.redraw();\n };\n\n Gauge.prototype.setDirection = function setDirection (rtl) {\n this.contextService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this.surface.destroy();\n this.surface = null;\n }\n };\n\n Gauge.prototype.setIntlService = function setIntlService (intl) {\n this.contextService.intl = intl;\n };\n\n Gauge.prototype._initTheme = function _initTheme (theme) {\n var currentTheme = theme || this.theme || {};\n this.theme = currentTheme;\n\n this.options = deepExtend({}, currentTheme, this.options);\n var options = this.options;\n var pointer = options.pointer;\n\n if (isArray(pointer)) {\n var pointers = [];\n for (var i = 0; i < pointer.length; i++) {\n pointers.push(deepExtend({}, currentTheme.pointer, pointer[i]));\n }\n options.pointer = pointers;\n }\n };\n\n Gauge.prototype._createGaugeArea = function _createGaugeArea () {\n var options = this.options.gaugeArea;\n var size = this.surface.size();\n var border = options.border || {};\n var areaGeometry = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._gaugeAreaMargin = options.margin || DEFAULT_MARGIN;\n\n if (border.width > 0) {\n areaGeometry = unpad(areaGeometry, border.width);\n }\n\n var gaugeArea = Path.fromRect(areaGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: options.background\n }\n });\n\n return gaugeArea;\n };\n\n Gauge.prototype._initSurface = function _initSurface () {\n var ref = this;\n var options = ref.options;\n var surface = ref.surface;\n var element = this._surfaceElement();\n var size = this._surfaceSize();\n\n elementSize(element, size);\n\n if (!surface || surface.options.type !== options.renderAs) {\n if (surface) {\n surface.destroy();\n }\n\n this.surface = Surface.create(element, {\n type: options.renderAs\n });\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n };\n\n Gauge.prototype._surfaceSize = function _surfaceSize () {\n var options = this.options;\n var size = this._getSize();\n\n if (options.gaugeArea) {\n deepExtend(size, options.gaugeArea);\n }\n\n return size;\n };\n\n Gauge.prototype._surfaceElement = function _surfaceElement () {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.element.appendChild(this.surfaceElement);\n }\n\n return this.surfaceElement;\n };\n\n Gauge.prototype.getSize = function getSize () {\n return this._getSize();\n };\n\n Gauge.prototype._getSize = function _getSize () {\n var element = this.element;\n var defaultSize = this._defaultSize();\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (!width) {\n width = defaultSize.width;\n }\n\n if (!height) {\n height = defaultSize.height;\n }\n\n return { width: width, height: height };\n };\n\n Gauge.prototype._defaultSize = function _defaultSize () {\n return {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT\n };\n };\n\n Gauge.prototype._toggleTransitions = function _toggleTransitions (value) {\n var this$1 = this;\n\n this.options.transitions = value;\n for (var i = 0; i < this.pointers.length; i++) {\n this$1.pointers[i].options.animation.transitions = value;\n }\n };\n\n return Gauge;\n}(Class));\n\nsetDefaultOptions(Gauge, {\n plotArea: {},\n theme: \"default\",\n renderAs: \"\",\n pointer: {},\n scale: {},\n gaugeArea: {}\n});\n\nexport default Gauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined } from '../../common';\nimport { BLACK } from '../../common/constants';\nimport { NumericAxis } from '../../core';\nimport { DEFAULT_LINE_WIDTH, INSIDE } from '../constants';\nimport { autoMajorUnit } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nvar Path = drawing.Path;\nvar Group = drawing.Group;\nvar Point = geo.Point;\n\nfunction renderAxisTick(tickRenderOptions, tickOptions) {\n var position = tickRenderOptions.position;\n var tickX = tickRenderOptions.tickX;\n var tickY = tickRenderOptions.tickY;\n var start, end;\n\n if (tickRenderOptions.vertical) {\n start = new Point(tickX, position);\n end = new Point(tickX + tickOptions.size, position);\n } else {\n start = new Point(position, tickY);\n end = new Point(position, tickY + tickOptions.size);\n }\n\n var tickPath = new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(start).lineTo(end);\n\n return tickPath;\n}\n\nfunction renderTicks(tickGroup, tickPositions, tickRenderOptions, tickOptions) {\n var count = tickPositions.length;\n\n if (tickOptions.visible) {\n var mirror = tickRenderOptions.mirror;\n var lineBox = tickRenderOptions.lineBox;\n for (var i = tickOptions.skip; i < count; i += tickOptions.step) {\n if (i % tickOptions.skipUnit === 0) {\n continue;\n }\n\n tickRenderOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickRenderOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickRenderOptions.position = tickPositions[i];\n\n tickGroup.append(renderAxisTick(tickRenderOptions, tickOptions));\n }\n }\n}\n\nvar LinearScale = (function (NumericAxis) {\n function LinearScale(options, service) {\n var scaleOptions = options || {};\n if (!defined(scaleOptions.reverse) && scaleOptions.vertical === false && (service || {}).rtl) {\n scaleOptions = Object.assign({}, scaleOptions, {\n reverse: true\n });\n }\n\n NumericAxis.call(this, 0, 1, scaleOptions, service);\n\n this.options.minorUnit = this.options.minorUnit || this.options.majorUnit / 10;\n }\n\n if ( NumericAxis ) LinearScale.__proto__ = NumericAxis;\n LinearScale.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n LinearScale.prototype.constructor = LinearScale;\n\n LinearScale.prototype.initUserOptions = function initUserOptions (options) {\n var scaleOptions = deepExtend({}, this.options, options);\n scaleOptions = deepExtend({}, scaleOptions , { labels: { mirror: scaleOptions.mirror } });\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n\n return scaleOptions;\n };\n\n LinearScale.prototype.initFields = function initFields () {\n };\n\n LinearScale.prototype.render = function render () {\n var elements = this.elements = new Group();\n var labels = this.renderLabels();\n var scaleLine = this.renderLine();\n var scaleTicks = this.renderTicks();\n var ranges = this.renderRanges();\n\n elements.append(scaleLine, labels, scaleTicks, ranges);\n\n return elements;\n };\n\n LinearScale.prototype.renderRanges = function renderRanges () {\n var this$1 = this;\n\n var options = this.options;\n var min = options.min;\n var max = options.max;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var ranges = options.ranges || [];\n var elements = new Group();\n var count = ranges.length;\n var rangeSize = options.rangeSize || options.minorTicks.size / 2;\n\n for (var i = 0; i < count; i++) {\n var range = getRange(ranges[i], min, max);\n var slot = this$1.getSlot(range.from, range.to);\n var slotX = vertical ? this$1.lineBox() : slot;\n var slotY = vertical ? slot : this$1.lineBox();\n if (vertical) {\n slotX.x1 -= rangeSize * (mirror ? -1 : 1);\n } else {\n slotY.y2 += rangeSize * (mirror ? -1 : 1);\n }\n\n elements.append(Path.fromRect(new geo.Rect([ slotX.x1, slotY.y1 ], [ slotX.x2 - slotX.x1, slotY.y2 - slotY.y1 ]), {\n fill: { color: range.color, opacity: range.opacity },\n stroke: { }\n }));\n }\n\n return elements;\n };\n\n LinearScale.prototype.renderLabels = function renderLabels () {\n var ref = this;\n var labels = ref.labels;\n var options = ref.options;\n var elements = new Group();\n\n for (var i = 0; i < labels.length; i++) {\n elements.append(buildLabelElement(labels[i], options.labels));\n }\n\n return elements;\n };\n\n LinearScale.prototype.renderLine = function renderLine () {\n var line = this.options.line;\n var lineBox = this.lineBox();\n var elements = new Group();\n\n if (line.width > 0 && line.visible) {\n var linePath = new Path({\n stroke: {\n color: line.color,\n dashType: line.dashType,\n width: line.width\n }\n });\n\n linePath.moveTo(lineBox.x1, lineBox.y1).lineTo(lineBox.x2, lineBox.y2);\n elements.append(linePath);\n }\n\n return elements;\n };\n\n LinearScale.prototype.renderTicks = function renderTicks$1 () {\n var ticks = new Group();\n var options = this.options;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickRenderOptions = {\n vertical: options.vertical,\n mirror: options.labels.mirror,\n lineBox: this.lineBox()\n };\n\n renderTicks(ticks, this.getMajorTickPositions(), tickRenderOptions, options.majorTicks);\n renderTicks(ticks, this.getMinorTickPositions(), tickRenderOptions, deepExtend({}, {\n skipUnit: majorUnit / options.minorUnit\n }, options.minorTicks));\n\n return ticks;\n };\n\n return LinearScale;\n}(NumericAxis));\n\nsetDefaultOptions(LinearScale, {\n min: 0,\n max: 50,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n line: {\n width: DEFAULT_LINE_WIDTH\n },\n\n labels: {\n position: INSIDE,\n padding: 2\n },\n mirror: false,\n _alignLines: false\n});\n\nexport default LinearScale;","import { Class, setDefaultOptions, defined, deepExtend, limitValue } from '../common';\nimport { BLACK } from '../common/constants';\n\nvar Pointer = (function (Class) {\n function Pointer(scale, userOptions) {\n Class.call(this);\n\n var ref = scale.options;\n var min = ref.min;\n var max = ref.max;\n var options = this.options = deepExtend({}, this.options, userOptions);\n\n options.fill = options.color;\n\n this.scale = scale;\n\n if (defined(options.value)) {\n options.value = limitValue(options.value, min, max);\n } else {\n options.value = min;\n }\n }\n\n if ( Class ) Pointer.__proto__ = Class;\n Pointer.prototype = Object.create( Class && Class.prototype );\n Pointer.prototype.constructor = Pointer;\n\n Pointer.prototype.value = function value (newValue) {\n var options = this.options;\n var value = options.value;\n\n if (arguments.length === 0) {\n return value;\n }\n\n var ref = this.scale.options;\n var min = ref.min;\n var max = ref.max;\n\n options._oldValue = defined(options._oldValue) ? options.value : min;\n options.value = limitValue(newValue, min, max);\n\n if (this.elements) {\n this.repaint();\n }\n };\n\n return Pointer;\n}(Class));\n\nsetDefaultOptions(Pointer, {\n color: BLACK\n});\n\nexport default Pointer;","import { setDefaultOptions, deepExtend, defined, getSpacing } from '../../common';\nimport { Box } from '../../core';\nimport { BLACK } from '../../common/constants';\nimport { BAR_POINTER } from '../constants';\nimport Pointer from '../pointer';\n\nvar LinearPointer = (function (Pointer) {\n function LinearPointer(scale, options) {\n Pointer.call(this, scale, options);\n\n this.options = deepExtend({\n track: {\n visible: defined(options.track)\n }\n }, this.options);\n }\n\n if ( Pointer ) LinearPointer.__proto__ = Pointer;\n LinearPointer.prototype = Object.create( Pointer && Pointer.prototype );\n LinearPointer.prototype.constructor = LinearPointer;\n\n LinearPointer.prototype.reflow = function reflow () {\n var ref = this;\n var options = ref.options;\n var scale = ref.scale;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var scaleLine = scale.lineBox();\n var trackSize = options.track.size || options.size;\n var pointerHalfSize = options.size / 2;\n var margin = getSpacing(options.margin);\n var space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n var pointerBox, pointerRangeBox, trackBox;\n\n space = mirror ? -space : space;\n\n if (vertical) {\n trackBox = new Box(\n scaleLine.x1 + space, scaleLine.y1,\n scaleLine.x1 + space, scaleLine.y2);\n\n if (mirror) {\n trackBox.x1 -= trackSize;\n } else {\n trackBox.x2 += trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize,\n scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize\n );\n pointerBox = pointerRangeBox;\n }\n } else {\n trackBox = new Box(\n scaleLine.x1, scaleLine.y1 - space,\n scaleLine.x2, scaleLine.y1 - space);\n\n if (mirror) {\n trackBox.y2 += trackSize;\n } else {\n trackBox.y1 -= trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space,\n scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space\n );\n pointerBox = pointerRangeBox;\n }\n }\n\n this.trackBox = trackBox;\n this.pointerRangeBox = pointerRangeBox;\n this.box = pointerBox || trackBox.clone().pad(options.border.width);\n };\n\n LinearPointer.prototype.getElementOptions = function getElementOptions () {\n var options = this.options;\n\n return {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: defined(options.border) ? {\n color: options.border.width ? options.border.color || options.color : \"\",\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: options.opacity\n } : null\n };\n };\n\n LinearPointer.prototype._margin = function _margin () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var margin = getSpacing(options.margin);\n\n var space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n\n return space;\n };\n\n return LinearPointer;\n}(Pointer));\n\nsetDefaultOptions(LinearPointer, {\n shape: BAR_POINTER,\n\n track: {\n border: {\n width: 1\n }\n },\n\n color: BLACK,\n border: {\n width: 1\n },\n opacity: 1,\n\n margin: getSpacing(3),\n animation: {\n type: BAR_POINTER\n },\n visible: true\n});\n\nexport default LinearPointer;","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ARROW_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nvar ArrowLinearPointerAnimation = (function (superclass) {\n function ArrowLinearPointerAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) ArrowLinearPointerAnimation.__proto__ = superclass;\n ArrowLinearPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n ArrowLinearPointerAnimation.prototype.constructor = ArrowLinearPointerAnimation;\n\n ArrowLinearPointerAnimation.prototype.setup = function setup () {\n var options = this.options;\n var margin = options.margin;\n var from = options.from;\n var to = options.to;\n var vertical = options.vertical;\n var axis = vertical ? \"x1\" : \"y1\";\n\n if (options.mirror === vertical) {\n from[axis] -= margin; to[axis] -= margin;\n } else {\n from[axis] += margin; to[axis] += margin;\n }\n\n var fromScale = this.fromScale = new geometry.Point(from.x1, from.y1);\n var toScale = this.toScale = new geometry.Point(to.x1, to.y1);\n\n if (options.duration !== 0) {\n options.duration = Math.max((fromScale.distanceTo(toScale) / options.duration) * 1000, 1);\n }\n };\n\n ArrowLinearPointerAnimation.prototype.step = function step (pos) {\n var translateX = interpolateValue(this.fromScale.x, this.toScale.x, pos);\n var translateY = interpolateValue(this.fromScale.y, this.toScale.y, pos);\n\n this.element.transform(geometry.transform().translate(translateX, translateY));\n };\n\n return ArrowLinearPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(ArrowLinearPointerAnimation, {\n easing: LINEAR,\n duration: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n\nexport default ArrowLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { ARROW_POINTER } from '../constants';\nimport LinearPointer from './linear-pointer';\nimport ArrowLinearPointerAnimation from './arrow-linear-pointer-animation';\n\nvar Point = geo.Point;\nvar Path = drawing.Path;\n\nvar ArrowLinearPointer = (function (LinearPointer) {\n function ArrowLinearPointer(scale, options) {\n LinearPointer.call(this, scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.6;\n }\n }\n\n if ( LinearPointer ) ArrowLinearPointer.__proto__ = LinearPointer;\n ArrowLinearPointer.prototype = Object.create( LinearPointer && LinearPointer.prototype );\n ArrowLinearPointer.prototype.constructor = ArrowLinearPointer;\n\n ArrowLinearPointer.prototype.pointerShape = function pointerShape () {\n var ref = this;\n var scale = ref.scale;\n var size = ref.options.size;\n var halfSize = size / 2;\n var sign = (scale.options.mirror ? -1 : 1);\n var shape;\n\n if (scale.options.vertical) {\n shape = [\n new Point(0, 0 - halfSize), new Point(0 - sign * size, 0), new Point(0, 0 + halfSize)\n ];\n } else {\n shape = [\n new Point(0 - halfSize, 0), new Point(0, 0 + sign * size), new Point(0 + halfSize, 0)\n ];\n }\n\n return shape;\n };\n\n ArrowLinearPointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var animation = new ArrowLinearPointerAnimation(this.elements, deepExtend(options.animation, {\n vertical: scale.options.vertical,\n mirror: scale.options.mirror,\n margin: this._margin(options.margin),\n from: scale.getSlot(options._oldValue),\n to: scale.getSlot(options.value)\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n };\n\n ArrowLinearPointer.prototype.render = function render () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var elementOptions = this.getElementOptions();\n var shape = this.pointerShape(options.value);\n\n options.animation.type = ARROW_POINTER;\n\n var elements = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close();\n\n var slot = scale.getSlot(options.value);\n elements.transform(geo.transform().translate(slot.x1, slot.y1));\n\n this.elements = elements;\n\n return elements;\n };\n\n return ArrowLinearPointer;\n}(LinearPointer));\n\nexport default ArrowLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport { BAR_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nvar BarLinearPointerAnimation = (function (superclass) {\n function BarLinearPointerAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) BarLinearPointerAnimation.__proto__ = superclass;\n BarLinearPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n BarLinearPointerAnimation.prototype.constructor = BarLinearPointerAnimation;\n\n BarLinearPointerAnimation.prototype.setup = function setup () {\n var options = this.options;\n var axis = this.axis = options.vertical ? Y : X;\n var to = this.to = options.newPoints[0][axis];\n var from = this.from = options.oldPoints[0][axis];\n\n if (options.duration !== 0) {\n options.duration = Math.max((Math.abs(to - from) / options.speed) * 1000, 1);\n }\n\n this._set(from);\n };\n\n BarLinearPointerAnimation.prototype.step = function step (pos) {\n var value = interpolateValue(this.from, this.to, pos);\n this._set(value);\n };\n\n BarLinearPointerAnimation.prototype._set = function _set (value) {\n var setter = \"set\" + this.axis.toUpperCase();\n var points = this.options.newPoints;\n\n points[0][setter](value);\n points[1][setter](value);\n };\n\n return BarLinearPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(BarLinearPointerAnimation, {\n easing: LINEAR,\n speed: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n\nexport default BarLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport LinearPointer from './linear-pointer';\nimport BarLinearPointerAnimation from './bar-linear-pointer-animation';\n\nvar Group = drawing.Group;\nvar Path = drawing.Path;\n\nvar BarLinearPointer = (function (LinearPointer) {\n function BarLinearPointer(scale, options) {\n LinearPointer.call(this, scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.3;\n }\n }\n\n if ( LinearPointer ) BarLinearPointer.__proto__ = LinearPointer;\n BarLinearPointer.prototype = Object.create( LinearPointer && LinearPointer.prototype );\n BarLinearPointer.prototype.constructor = BarLinearPointer;\n\n BarLinearPointer.prototype.pointerShape = function pointerShape (value) {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var dir = mirror === vertical ? -1 : 1;\n var size = options.size * dir;\n var minSlot = scale.getSlot(scale.options.min);\n var slot = scale.getSlot(value);\n var axis = vertical ? Y : X;\n var sizeAxis = vertical ? X : Y;\n var margin = this._margin() * dir;\n\n var p1 = new geo.Point();\n p1[axis] = minSlot[axis + \"1\"];\n p1[sizeAxis] = minSlot[sizeAxis + \"1\"];\n\n var p2 = new geo.Point();\n p2[axis] = slot[axis + \"1\"];\n p2[sizeAxis] = slot[sizeAxis + \"1\"];\n\n if (vertical) {\n p1.translate(margin, 0);\n p2.translate(margin, 0);\n } else {\n p1.translate(0, margin);\n p2.translate(0, margin);\n }\n\n var p3 = p2.clone();\n var p4 = p1.clone();\n\n if (vertical) {\n p3.translate(size, 0);\n p4.translate(size, 0);\n } else {\n p3.translate(0, size);\n p4.translate(0, size);\n }\n\n return [ p1, p2, p3, p4 ];\n };\n\n BarLinearPointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var shape = this.pointerShape(options.value);\n var pointerPath = this.pointerPath;\n var oldShape = this.pointerShape(options._oldValue);\n\n pointerPath.moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).lineTo(shape[3]).close();\n\n var animation = new BarLinearPointerAnimation(pointerPath, deepExtend(options.animation, {\n reverse: scale.options.reverse,\n vertical: scale.options.vertical,\n oldPoints: [ oldShape[1], oldShape[2] ],\n newPoints: [ shape[1], shape[2] ]\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n };\n\n BarLinearPointer.prototype.render = function render () {\n var group = new Group();\n var elementOptions = this.getElementOptions();\n\n if (this.options.track.visible) {\n group.append(this.renderTrack());\n }\n\n var pointer = this.pointerPath = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n });\n\n group.append(pointer);\n\n this.elements = group;\n\n return group;\n };\n\n BarLinearPointer.prototype.renderTrack = function renderTrack () {\n var trackOptions = this.options.track;\n var border = trackOptions.border || {};\n var trackBox = this.trackBox.clone().pad(border.width || 0);\n\n return new Path.fromRect(trackBox.toRect(), {\n fill: {\n color: trackOptions.color,\n opacity: trackOptions.opacity\n },\n stroke: {\n color: border.width ? border.color || trackOptions.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n };\n\n return BarLinearPointer;\n}(LinearPointer));\n\nexport default BarLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { Box } from '../../core';\nimport { setDefaultOptions, deepExtend, isArray } from '../../common';\nimport { ARROW, DEFAULT_WIDTH, DEFAULT_HEIGHT } from '../constants';\nimport Gauge from '../gauge';\nimport LinearScale from './linear-scale';\nimport ArrowLinearPointer from './arrow-linear-pointer';\nimport BarLinearPointer from './bar-linear-pointer';\n\nvar DEFAULT_MIN_WIDTH = 60;\nvar DEFAULT_MIN_HEIGHT = 60;\n\nvar Group = drawing.Group;\n\nvar LinearGauge = (function (Gauge) {\n function LinearGauge () {\n Gauge.apply(this, arguments);\n }\n\n if ( Gauge ) LinearGauge.__proto__ = Gauge;\n LinearGauge.prototype = Object.create( Gauge && Gauge.prototype );\n LinearGauge.prototype.constructor = LinearGauge;\n\n LinearGauge.prototype.reflow = function reflow (bbox) {\n var pointers = this.pointers;\n var bboxX = bbox.origin.x;\n var bboxY = bbox.origin.y;\n\n var box = new Box(bboxX, bboxY, bboxX + bbox.width(), bboxY + bbox.height());\n\n this.scale.reflow(box);\n this._shrinkScaleWidth(box);\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow();\n }\n\n this.bbox = this._getBox(box);\n this._alignElements();\n this._shrinkElements();\n this._buildVisual();\n this._draw();\n };\n\n LinearGauge.prototype._buildVisual = function _buildVisual () {\n var visuals = new Group();\n var scaleElements = this.scale.render();\n var pointers = this.pointers;\n\n visuals.append(this.gaugeArea);\n visuals.append(scaleElements);\n\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n visuals.append(current.render());\n current.value(current.options.value);\n }\n\n this._visuals = visuals;\n };\n\n LinearGauge.prototype._createModel = function _createModel () {\n var this$1 = this;\n\n var options = this.options;\n var scale = this.scale = new LinearScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n var pointers = options.pointer;\n pointers = isArray(pointers) ? pointers : [ pointers ];\n\n for (var i = 0; i < pointers.length; i++) {\n var currentOptions = deepExtend({}, pointers[i], {\n animation: {\n transitions: options.transitions\n }\n });\n var pointerType = currentOptions.shape === ARROW ? ArrowLinearPointer : BarLinearPointer;\n\n this$1.pointers.push(new pointerType(scale, currentOptions));\n }\n };\n\n LinearGauge.prototype._defaultSize = function _defaultSize () {\n var vertical = this.options.scale.vertical;\n\n return {\n width: vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH,\n height: vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT\n };\n };\n\n LinearGauge.prototype._getBox = function _getBox (box) {\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var boxCenter = box.center();\n var plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n\n for (var i = 0; i < pointers.length; i++) {\n plotAreaBox.wrap(pointers[i].box.clone());\n }\n\n var size;\n if (scale.options.vertical) {\n size = plotAreaBox.width() / 2;\n plotAreaBox = new Box(\n boxCenter.x - size, box.y1,\n boxCenter.x + size, box.y2\n );\n } else {\n size = plotAreaBox.height() / 2;\n plotAreaBox = new Box(\n box.x1, boxCenter.y - size,\n box.x2, boxCenter.y + size\n );\n }\n\n return plotAreaBox;\n };\n\n LinearGauge.prototype._alignElements = function _alignElements () {\n var this$1 = this;\n\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var scaleBox = scale.box;\n var box = pointers[0].box.clone().wrap(scale.box);\n var plotAreaBox = this.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n box.wrap(pointers[i].box.clone());\n }\n\n var diff;\n if (scale.options.vertical) {\n diff = plotAreaBox.center().x - box.center().x;\n scale.reflow(new Box(\n scaleBox.x1 + diff, plotAreaBox.y1,\n scaleBox.x2 + diff, plotAreaBox.y2\n ));\n } else {\n diff = plotAreaBox.center().y - box.center().y;\n scale.reflow(new Box(\n scaleBox.x1, scaleBox.y1 + diff,\n scaleBox.x2, scaleBox.y2 + diff\n ));\n }\n\n for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n pointers[i$1].reflow(this$1.bbox);\n }\n };\n\n LinearGauge.prototype._shrinkScaleWidth = function _shrinkScaleWidth (bbox) {\n var ref = this;\n var scale = ref.scale;\n if (!scale.options.vertical) {\n var overflow = scale.contentBox().width() - bbox.width();\n if (overflow > 0) {\n scale.box.shrink(overflow, 0);\n scale.box.alignTo(bbox, 'center');\n scale.reflow(scale.box);\n }\n }\n };\n\n LinearGauge.prototype._shrinkElements = function _shrinkElements () {\n var this$1 = this;\n\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var scaleBox = scale.box.clone();\n var pos = scale.options.vertical ? \"y\" : \"x\";\n var pointerBox = pointers[0].box;\n\n for (var i = 0; i < pointers.length; i++) {\n pointerBox.wrap(pointers[i].box.clone());\n }\n\n scaleBox[pos + 1] += Math.max(scaleBox[pos + 1] - pointerBox[pos + 1], 0);\n scaleBox[pos + 2] -= Math.max(pointerBox[pos + 2] - scaleBox[pos + 2], 0);\n\n scale.reflow(scaleBox);\n\n for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n pointers[i$1].reflow(this$1.bbox);\n }\n };\n\n return LinearGauge;\n}(Gauge));\n\nsetDefaultOptions(LinearGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n },\n scale: {\n vertical: true\n }\n});\n\nexport default LinearGauge;","import GeometryArc from '../geometry/arc';\nimport Element from './element';\nimport { Path } from './path';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport { defined } from '../util';\n\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Arc = (function (superclass) {\n function Arc(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryArc();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if ( superclass ) Arc.__proto__ = superclass;\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Arc\";\n };\n\n Arc.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Arc.prototype.rawBBox = function rawBBox () {\n return this.geometry().bbox();\n };\n\n Arc.prototype.toPath = function toPath () {\n var path = new Path();\n var curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n\n return path;\n };\n\n Arc.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Arc.prototype, prototypeAccessors );\n\n return Arc;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Arc;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined, round, getSpacing } from '../../common';\nimport { BLACK, COORD_PRECISION } from '../../common/constants';\nimport { autoMajorUnit, Box, NumericAxis } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nimport { DEGREE, DEFAULT_LINE_WIDTH, INSIDE, OUTSIDE } from '../constants';\n\nvar GEO_ARC_ADJUST_ANGLE = 180;\n\nvar Arc = drawing.Arc;\nvar Path = drawing.Path;\nvar Group = drawing.Group;\n\nfunction drawTicks(arc, tickAngles, unit, tickOptions) {\n var ticks = new Group();\n var center = arc.center;\n var radius = arc.getRadiusX();\n\n if (tickOptions.visible) {\n for (var i = 0; i < tickAngles.length; i++) {\n var tickStart = arc.pointAt(tickAngles[i]);\n var tickEnd = new geo.Point(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n\n ticks.append(new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(tickStart).lineTo(tickEnd));\n }\n }\n\n return ticks;\n}\n\nfunction rangeSegment(from, to, color, opacity) {\n return { from: from, to: to, color: color, opacity: opacity };\n}\n\nvar RadialScale = (function (NumericAxis) {\n function RadialScale(options, service) {\n NumericAxis.call(this, 0, 1, options, service);\n }\n\n if ( NumericAxis ) RadialScale.__proto__ = NumericAxis;\n RadialScale.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n RadialScale.prototype.constructor = RadialScale;\n\n RadialScale.prototype.initUserOptions = function initUserOptions (options) {\n var scaleOptions = deepExtend({}, this.options, options);\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n scaleOptions.minorUnit = scaleOptions.minorUnit || scaleOptions.majorUnit / 10;\n\n return scaleOptions;\n };\n\n RadialScale.prototype.initFields = function initFields () {\n };\n\n RadialScale.prototype.render = function render (center, radius) {\n var arc = this.renderArc(center, radius);\n\n this.bbox = arc.bbox();\n this.labelElements = this.renderLabels();\n this.ticks = this.renderTicks();\n this.ranges = this.renderRanges();\n };\n\n RadialScale.prototype.reflow = function reflow (bbox) {\n var center = bbox.center();\n var radius = Math.min(bbox.height(), bbox.width()) / 2;\n\n if (defined(this.bbox)) {\n this.bbox = this.arc.bbox();\n this.radius(this.arc.getRadiusX());\n this.repositionRanges();\n this.renderLabels();\n } else {\n return this.render(center, radius);\n }\n };\n\n RadialScale.prototype.slotAngle = function slotAngle (value) {\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var reverse = ref.reverse;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var angle = endAngle - startAngle;\n var result;\n\n if (reverse) {\n result = endAngle - (value - min) / (max - min) * angle;\n } else {\n result = ((value - min) / (max - min) * angle) + startAngle;\n }\n\n return result + GEO_ARC_ADJUST_ANGLE;\n };\n\n RadialScale.prototype.hasRanges = function hasRanges () {\n var ranges = this.options.ranges;\n\n return ranges && ranges.length;\n };\n\n RadialScale.prototype.ticksSize = function ticksSize () {\n var ref = this.options;\n var majorTicks = ref.majorTicks;\n var minorTicks = ref.minorTicks;\n var size = 0;\n if (majorTicks.visible) {\n size = majorTicks.size;\n }\n\n if (minorTicks.visible) {\n size = Math.max(minorTicks.size, size);\n }\n\n return size;\n };\n\n RadialScale.prototype.labelsCount = function labelsCount () {\n var count = NumericAxis.prototype.labelsCount.call(this);\n var options = this.options;\n var angle = options.endAngle - options.startAngle;\n\n if (angle >= 360 && (options.max % options.majorUnit === 0)) {\n count -= 1;\n }\n\n return count;\n };\n\n RadialScale.prototype.renderLabels = function renderLabels () {\n var this$1 = this;\n\n var options = this.options;\n var arc = this.arc.clone();\n var radius = arc.getRadiusX();\n var tickAngles = this.tickAngles(arc, options.majorUnit);\n var rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n var labelsGroup = new Group();\n\n var rangeDistance = radius * 0.05;\n if (defined(options.rangeDistance)) {\n rangeDistance = options.rangeDistance;\n } else {\n options.rangeDistance = rangeDistance;\n }\n\n var labelsOptions = options.labels;\n var isInside = labelsOptions.position === INSIDE;\n var hasLabelElements = defined(this.labelElements);\n\n if (isInside) {\n radius -= this.ticksSize();\n\n if (this.hasRanges() && !hasLabelElements) {\n radius -= rangeSize + rangeDistance;\n }\n arc.setRadiusX(radius).setRadiusY(radius);\n }\n\n var labels = this.labels;\n var count = labels.length;\n var padding = getSpacing(labelsOptions.padding);\n var paddingWidth = (padding.left + padding.right) / 2;\n var paddingHeight = (padding.top + padding.bottom) / 2;\n\n for (var i = 0; i < count; i++) {\n var label = labels[i];\n var halfWidth = label.box.width() / 2;\n var halfHeight = label.box.height() / 2;\n var angle = tickAngles[i];\n var labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n\n var lp = arc.pointAt(angle);\n var cx = lp.x + (Math.cos(labelAngle) * (halfWidth + paddingWidth) * (isInside ? 1 : -1));\n var cy = lp.y + (Math.sin(labelAngle) * (halfHeight + paddingHeight) * (isInside ? 1 : -1));\n\n label.reflow(new Box(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n var labelPos = new geo.Point(label.box.x1, label.box.y1);\n\n var labelElement = (void 0);\n if (!hasLabelElements) {\n labelElement = buildLabelElement(label, options.labels);\n labelsGroup.append(labelElement);\n } else {\n labelElement = this$1.labelElements.children[i];\n var prevLabelPos = labelElement.bbox().origin;\n\n var labelTransform = labelElement.transform() || geo.transform();\n labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n labelElement.transform(labelTransform);\n }\n\n this$1.bbox = geo.Rect.union(this$1.bbox, labelElement.bbox());\n }\n\n return labelsGroup;\n };\n\n RadialScale.prototype.repositionRanges = function repositionRanges () {\n var ranges = this.ranges.children;\n\n if (ranges.length > 0) {\n var ref = this.options;\n var rangeDistance = ref.rangeDistance;\n var rangeSize = ref.rangeSize;\n var rangeRadius = this.getRangeRadius();\n\n if (this.options.labels.position === INSIDE) {\n rangeRadius += rangeSize + rangeDistance;\n }\n\n var newRadius = rangeRadius + (rangeSize / 2);\n\n for (var i = 0; i < ranges.length; i++) {\n ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n }\n\n this.bbox = geo.Rect.union(this.bbox, this.ranges.bbox());\n }\n };\n\n RadialScale.prototype.renderRanges = function renderRanges () {\n var this$1 = this;\n\n var segments = this.rangeSegments();\n var segmentsCount = segments.length;\n var result = new Group();\n\n if (segmentsCount) {\n var ref = this.options;\n var rangeSize = ref.rangeSize;\n var reverse = ref.reverse;\n var rangeDistance = ref.rangeDistance;\n var rangeRadius = this.getRangeRadius();\n\n // move the ticks with a range distance and a range size\n this.radius(this.radius() - rangeSize - rangeDistance);\n\n for (var i = 0; i < segmentsCount; i++) {\n var segment = segments[i];\n var from = this$1.slotAngle(segment[reverse ? \"to\" : \"from\"]);\n var to = this$1.slotAngle(segment[!reverse ? \"to\" : \"from\"]);\n\n if (to - from !== 0) {\n result.append(this$1.createRange(from, to, rangeRadius, segment));\n }\n }\n }\n\n return result;\n };\n\n RadialScale.prototype.createRange = function createRange (startAngle, endAngle, rangeRadius, options) {\n var rangeSize = this.options.rangeSize;\n var rangeGeom = new geo.Arc(this.arc.center, {\n radiusX: rangeRadius + (rangeSize / 2),\n radiusY: rangeRadius + (rangeSize / 2),\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return new Arc(rangeGeom, {\n stroke: {\n width: rangeSize,\n color: options.color,\n opacity: options.opacity,\n lineCap: options.lineCap\n }\n });\n };\n\n RadialScale.prototype.rangeSegments = function rangeSegments () {\n var options = this.options;\n var ranges = options.ranges || [];\n var count = ranges.length;\n var segments = [];\n\n if (count) {\n var min = options.min;\n var max = options.max;\n var defaultColor = options.rangePlaceholderColor;\n segments.push(rangeSegment(min, max, defaultColor));\n\n for (var i = 0; i < count; i++) {\n var range = getRange(ranges[i], min, max);\n var segmentsCount = segments.length;\n\n for (var j = 0; j < segmentsCount; j++) {\n var segment = segments[j];\n\n if (segment.from <= range.from && range.from <= segment.to) {\n segments.push(rangeSegment(range.from, range.to, range.color, range.opacity));\n\n if (segment.from <= range.to && range.to <= segment.to) {\n segments.push(rangeSegment(range.to, segment.to, defaultColor, range.opacity));\n }\n\n segment.to = range.from;\n\n break;\n }\n }\n }\n }\n\n return segments;\n };\n\n RadialScale.prototype.getRangeRadius = function getRangeRadius () {\n var ref = this;\n var arc = ref.arc;\n var options = ref.options;\n var rangeSize = options.rangeSize;\n var rangeDistance = options.rangeDistance;\n var majorTickSize = options.majorTicks.size;\n var radius;\n\n if (options.labels.position === OUTSIDE) {\n radius = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n } else {\n radius = arc.getRadiusX() - rangeSize;\n }\n\n return radius;\n };\n\n RadialScale.prototype.renderArc = function renderArc (center, radius) {\n var options = this.options;\n\n var arc = this.arc = new geo.Arc(center, {\n radiusX: radius,\n radiusY: radius,\n startAngle: options.startAngle + GEO_ARC_ADJUST_ANGLE,\n endAngle: options.endAngle + GEO_ARC_ADJUST_ANGLE\n });\n\n return arc;\n };\n\n RadialScale.prototype.renderTicks = function renderTicks () {\n var ref = this;\n var arc = ref.arc;\n var options = ref.options;\n var tickArc = arc.clone();\n\n this.majorTickAngles = this.tickAngles(arc, options.majorUnit);\n this.majorTicks = drawTicks(tickArc, this.majorTickAngles, options.majorUnit, options.majorTicks);\n\n var allTicks = new Group();\n allTicks.append(this.majorTicks);\n\n var majorTickSize = options.majorTicks.size;\n var minorTickSize = options.minorTicks.size;\n\n this._tickDifference = majorTickSize - minorTickSize;\n\n if (options.labels.position === OUTSIDE) {\n var radius = tickArc.getRadiusX();\n tickArc.setRadiusX(radius - majorTickSize + minorTickSize)\n .setRadiusY(radius - majorTickSize + minorTickSize);\n }\n\n this.minorTickAngles = this.normalizeTickAngles(this.tickAngles(arc, options.minorUnit));\n this.minorTicks = drawTicks(tickArc, this.minorTickAngles, options.minorUnit, options.minorTicks);\n allTicks.append(this.minorTicks);\n\n return allTicks;\n };\n\n RadialScale.prototype.normalizeTickAngles = function normalizeTickAngles (angles) {\n var options = this.options;\n var skip = options.majorUnit / options.minorUnit;\n\n for (var i = angles.length - 1; i >= 0; i--) {\n if (i % skip === 0) {\n angles.splice(i, 1);\n }\n }\n\n return angles;\n };\n\n RadialScale.prototype.tickAngles = function tickAngles (ring, stepValue) {\n var options = this.options;\n var reverse = options.reverse;\n var range = options.max - options.min;\n var angle = ring.endAngle - ring.startAngle;\n var tickCount = range / stepValue;\n var pos = ring.startAngle;\n var step = angle / tickCount;\n\n if (reverse) {\n pos += angle;\n step = -step;\n }\n\n if (angle >= 360 && (options.max % stepValue === 0)) {\n tickCount -= 1;\n }\n\n var positions = [];\n for (var i = 0; i < tickCount; i++) {\n positions.push(round(pos, COORD_PRECISION));\n pos += step;\n }\n\n if (round(pos) <= ring.endAngle) {\n positions.push(pos);\n }\n\n return positions;\n };\n\n RadialScale.prototype.radius = function radius (value) {\n if (value) {\n this.arc.setRadiusX(value).setRadiusY(value);\n this.repositionTicks(this.majorTicks.children, this.majorTickAngles);\n this.repositionTicks(this.minorTicks.children, this.minorTickAngles, true);\n } else {\n return this.arc.getRadiusX();\n }\n };\n\n RadialScale.prototype.repositionTicks = function repositionTicks (ticks, tickAngles, minor) {\n var diff = minor ? (this._tickDifference || 0) : 0;\n var tickArc = this.arc;\n var radius = tickArc.getRadiusX();\n\n if (minor && this.options.labels.position === OUTSIDE && diff !== 0) {\n tickArc = this.arc.clone();\n tickArc.setRadiusX(radius - diff).setRadiusY(radius - diff);\n }\n\n for (var i = 0; i < ticks.length; i++) {\n var newPoint = tickArc.pointAt(tickAngles[i]);\n var segments = ticks[i].segments;\n var xDiff = newPoint.x - segments[0].anchor().x;\n var yDiff = newPoint.y - segments[0].anchor().y;\n\n ticks[i].transform(new geo.transform().translate(xDiff, yDiff));\n }\n };\n\n return RadialScale;\n}(NumericAxis));\n\nsetDefaultOptions(RadialScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n startAngle: -30,\n endAngle: 210,\n\n labels: {\n position: INSIDE,\n padding: 2\n }\n});\n\nexport default RadialScale;\n","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_POINTER } from '../constants';\n\nvar RadialPointerAnimation = (function (superclass) {\n function RadialPointerAnimation(element, options) {\n superclass.call(this, element, options);\n\n var animationOptions = this.options;\n\n animationOptions.duration = Math.max((Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000, 1);\n }\n\n if ( superclass ) RadialPointerAnimation.__proto__ = superclass;\n RadialPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n RadialPointerAnimation.prototype.constructor = RadialPointerAnimation;\n\n RadialPointerAnimation.prototype.step = function step (pos) {\n var options = this.options;\n var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n\n this.element.transform(geometry.transform().rotate(angle, options.center));\n };\n\n return RadialPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(RadialPointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n\nexport default RadialPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\n\nimport { setDefaultOptions, deepExtend, limitValue } from '../../common';\nimport { ANGULAR_SPEED, DEGREE, DEFAULT_LINE_WIDTH, RADIAL_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RadialPointerAnimation from './radial-pointer-animation';\n\nvar CAP_SIZE = 0.05;\nvar Circle = drawing.Circle;\nvar Group = drawing.Group;\nvar Path = drawing.Path;\n\nvar RadialPointer = (function (Pointer) {\n function RadialPointer () {\n Pointer.apply(this, arguments);\n }\n\n if ( Pointer ) RadialPointer.__proto__ = Pointer;\n RadialPointer.prototype = Object.create( Pointer && Pointer.prototype );\n RadialPointer.prototype.constructor = RadialPointer;\n\n RadialPointer.prototype.setAngle = function setAngle (angle) {\n this.elements.transform(geo.transform().rotate(angle, this.center));\n };\n\n RadialPointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var oldAngle = scale.slotAngle(options._oldValue);\n var newAngle = scale.slotAngle(options.value);\n\n if (options.animation.transitions === false) {\n this.setAngle(newAngle);\n } else {\n new RadialPointerAnimation(this.elements, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n })).play();\n }\n };\n\n RadialPointer.prototype.render = function render () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var elements = new Group();\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n elements.append(this._renderNeedle(), this._renderCap());\n\n this.elements = elements;\n this.setAngle(DEGREE);\n\n return elements;\n };\n\n RadialPointer.prototype.reflow = function reflow (arc) {\n var center = this.center = arc.center;\n var length = limitValue(this.options.length || 1, 0.1, 1.5);\n var radius = this.radius = arc.getRadiusX() * length;\n var capSize = this.capSize = Math.round(radius * this.options.cap.size);\n\n this.bbox = geo.Rect.fromPoints(new geo.Point(center.x - capSize, center.y - capSize),\n new geo.Point(center.x + capSize, center.y + capSize));\n };\n\n RadialPointer.prototype._renderNeedle = function _renderNeedle () {\n var minorTickSize = this.scale.options.minorTicks.size;\n var center = this.center;\n var needleColor = this.options.color;\n\n var needlePath = new Path({\n fill: { color: needleColor },\n stroke: { color: needleColor, width: DEFAULT_LINE_WIDTH }\n });\n\n needlePath.moveTo(center.x + this.radius - minorTickSize, center.y)\n .lineTo(center.x, center.y - (this.capSize / 2))\n .lineTo(center.x, center.y + (this.capSize / 2))\n .close();\n\n return needlePath;\n };\n\n RadialPointer.prototype._renderCap = function _renderCap () {\n var options = this.options;\n var capColor = options.cap.color || options.color;\n var circle = new geo.Circle(this.center, this.capSize);\n\n var cap = new Circle(circle, {\n fill: { color: capColor },\n stroke: { color: capColor }\n });\n\n return cap;\n };\n\n return RadialPointer;\n}(Pointer));\n\nsetDefaultOptions(RadialPointer, {\n cap: {\n size: CAP_SIZE\n },\n arrow: {\n width: 16,\n height: 14\n },\n animation: {\n type: RADIAL_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RadialPointer;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, round, isArray } from '../../common';\nimport { COORD_PRECISION } from '../../common/constants';\nimport Gauge from '../gauge';\nimport RadialScale from './radial-scale';\nimport RadialPointer from './radial-pointer';\n\nvar Group = drawing.Group;\n\nvar RadialGauge = (function (Gauge) {\n function RadialGauge () {\n Gauge.apply(this, arguments);\n }\n\n if ( Gauge ) RadialGauge.__proto__ = Gauge;\n RadialGauge.prototype = Object.create( Gauge && Gauge.prototype );\n RadialGauge.prototype.constructor = RadialGauge;\n\n RadialGauge.prototype.reflow = function reflow (bbox) {\n var this$1 = this;\n\n var pointers = this.pointers;\n this.scale.reflow(bbox);\n this._initialPlotArea = this.scale.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this$1.scale.arc);\n this$1._initialPlotArea = geo.Rect.union(this$1._initialPlotArea, pointers[i].bbox);\n }\n\n this.fitScale(bbox);\n this.alignScale(bbox);\n this._buildVisual(this.gaugeArea, pointers, this.scale);\n this._draw();\n };\n\n RadialGauge.prototype._buildVisual = function _buildVisual (gaugeArea, pointers, scale) {\n var visuals = this._visuals = new Group();\n\n visuals.append(gaugeArea);\n visuals.append(scale.ticks);\n visuals.append(scale.ranges);\n this._buildPointers(pointers);\n visuals.append(scale.labelElements);\n };\n\n RadialGauge.prototype._buildPointers = function _buildPointers (pointers) {\n var this$1 = this;\n\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n current.render();\n this$1._visuals.append(current.elements);\n\n current.value(current.options.value);\n }\n };\n\n RadialGauge.prototype.fitScale = function fitScale (bbox) {\n var this$1 = this;\n\n var arc = this.scale.arc;\n var plotAreaBox = this._initialPlotArea;\n var step = Math.abs(this.getDiff(plotAreaBox, bbox));\n var min = round(step, COORD_PRECISION);\n var max = round(-step, COORD_PRECISION);\n var minDiff, midDiff, maxDiff, mid, oldDiff;\n var staleFlag = 0;\n var i = 0;\n\n while (i++ < 100) {\n staleFlag = (oldDiff === maxDiff) ? (staleFlag + 1) : 0;\n\n if (staleFlag > 5) {\n break;\n }\n\n if (min !== mid) {\n minDiff = this$1.getPlotBox(min, bbox, arc);\n if (0 <= minDiff && minDiff <= 2) {\n break;\n }\n }\n\n if (max !== mid) {\n maxDiff = this$1.getPlotBox(max, bbox, arc);\n if (0 <= maxDiff && maxDiff <= 2) {\n break;\n }\n }\n\n if (minDiff > 0 && maxDiff > 0) {\n mid = min * 2;\n } else if (minDiff < 0 && maxDiff < 0) {\n mid = max * 2;\n } else {\n mid = round(((min + max) / 2) || 1, COORD_PRECISION);\n }\n\n midDiff = this$1.getPlotBox(mid, bbox, arc);\n if (0 <= midDiff && midDiff <= 2) {\n break;\n }\n\n oldDiff = maxDiff;\n\n if (midDiff > 0) {\n max = mid;\n maxDiff = midDiff;\n } else {\n min = mid;\n minDiff = midDiff;\n }\n }\n };\n\n RadialGauge.prototype.getPlotBox = function getPlotBox (step, bbox, arc) {\n var this$1 = this;\n\n var scale = this.scale;\n var pointers = this.pointers;\n var radius = arc.getRadiusX();\n var scaleArc = arc.clone();\n\n scaleArc.setRadiusX(radius + step).setRadiusY(radius + step);\n\n scale.arc = scaleArc;\n scale.reflow(bbox);\n this.plotBbox = scale.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scaleArc);\n this$1.plotBbox = geo.Rect.union(this$1.plotBbox, pointers[i].bbox);\n }\n\n return this.getDiff(this.plotBbox, bbox);\n };\n\n RadialGauge.prototype.getDiff = function getDiff (plotBox, box) {\n return Math.min(box.width() - plotBox.width(), box.height() - plotBox.height());\n };\n\n RadialGauge.prototype.alignScale = function alignScale (bbox) {\n var this$1 = this;\n\n var plotBoxCenter = this.plotBbox.center();\n var boxCenter = bbox.center();\n var paddingX = plotBoxCenter.x - boxCenter.x;\n var paddingY = plotBoxCenter.y - boxCenter.y;\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n\n scale.arc.center.x -= paddingX;\n scale.arc.center.y -= paddingY;\n\n scale.reflow(bbox);\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scale.arc);\n this$1.plotBbox = geo.Rect.union(scale.bbox, pointers[i].bbox);\n }\n };\n\n RadialGauge.prototype._createModel = function _createModel () {\n var this$1 = this;\n\n var options = this.options;\n var pointers = options.pointer;\n var scale = this.scale = new RadialScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n var pointersArr = isArray(pointers) ? pointers : [ pointers ];\n for (var i = 0; i < pointersArr.length; i++) {\n var current = new RadialPointer(scale, deepExtend({}, pointersArr[i], {\n animation: {\n transitions: options.transitions\n }\n }));\n\n this$1.pointers.push(current);\n }\n };\n\n return RadialGauge;\n}(Gauge));\n\nsetDefaultOptions(RadialGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n }\n});\n\nexport default RadialGauge;","import RadialScale from '../radial/radial-scale';\nimport { setDefaultOptions } from '../../common';\n\nvar ArcScale = (function (RadialScale) {\n function ArcScale () {\n RadialScale.apply(this, arguments);\n }\n\n if ( RadialScale ) ArcScale.__proto__ = RadialScale;\n ArcScale.prototype = Object.create( RadialScale && RadialScale.prototype );\n ArcScale.prototype.constructor = ArcScale;\n\n ArcScale.prototype.rangeSegments = function rangeSegments () {\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var rangePlaceholderColor = ref.rangePlaceholderColor;\n var rangeLineCap = ref.rangeLineCap;\n\n return [ { from: min, to: max, color: rangePlaceholderColor, lineCap: rangeLineCap } ];\n };\n\n ArcScale.prototype.hasRanges = function hasRanges () {\n return true;\n };\n\n ArcScale.prototype.placeholderRangeAngle = function placeholderRangeAngle (angle) {\n var geometry = this.ranges.children[0].geometry();\n\n if (this.options.reverse) {\n geometry.setEndAngle(angle);\n } else {\n geometry.setStartAngle(angle);\n }\n };\n\n ArcScale.prototype.addRange = function addRange (from, to, options) {\n var reverse = this.options.reverse;\n\n var startAngle = this.slotAngle(reverse ? to : from);\n var endAngle = this.slotAngle(reverse ? from : to);\n\n var range = this.createRange(startAngle, endAngle, this.getRangeRadius(), options);\n\n this.ranges.append(range);\n\n return range;\n };\n\n return ArcScale;\n}(RadialScale));\n\nsetDefaultOptions(ArcScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n visible: false\n },\n\n minorTicks: {\n visible: false\n },\n\n labels: {\n visible: false\n },\n\n startAngle: 0,\n endAngle: 180,\n rangeLineCap: 'round'\n});\n\nexport default ArcScale;","import { drawing, Color } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions, round, limitValue } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_RANGE_POINTER } from '../constants';\n\nvar MAX_DURATION = 800;\n\nvar RangePointerAnimation = (function (superclass) {\n function RangePointerAnimation(element, options) {\n superclass.call(this, element, options);\n\n var animationOptions = this.options;\n var duration = (Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000;\n animationOptions.duration = limitValue(duration, ANGULAR_SPEED, MAX_DURATION);\n\n var startColor = element.elements.options.get(\"stroke.color\");\n var color = element.currentColor();\n if (startColor !== color) {\n this.startColor = new Color(startColor);\n this.color = new Color(color);\n }\n }\n\n if ( superclass ) RangePointerAnimation.__proto__ = superclass;\n RangePointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n RangePointerAnimation.prototype.constructor = RangePointerAnimation;\n\n RangePointerAnimation.prototype.step = function step (pos) {\n var ref = this;\n var options = ref.options;\n var startColor = ref.startColor;\n var color = ref.color;\n var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n this.element.angle(angle);\n\n if (color) {\n var r = round(interpolateValue(startColor.r, color.r, pos));\n var g = round(interpolateValue(startColor.g, color.g, pos));\n var b = round(interpolateValue(startColor.b, color.b, pos));\n\n this.element.stroke(new Color(r, g, b).toHex());\n }\n };\n\n return RangePointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(RangePointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_RANGE_POINTER, RangePointerAnimation);\n\nexport default RangePointerAnimation;","import { setDefaultOptions, deepExtend, isNumber } from '../../common';\nimport { ANGULAR_SPEED, RADIAL_RANGE_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RangePointerAnimation from './range-pointer-animation';\n\nvar RangePointer = (function (Pointer) {\n function RangePointer () {\n Pointer.apply(this, arguments);\n }\n\n if ( Pointer ) RangePointer.__proto__ = Pointer;\n RangePointer.prototype = Object.create( Pointer && Pointer.prototype );\n RangePointer.prototype.constructor = RangePointer;\n\n RangePointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var oldAngle = scale.slotAngle(options._oldValue);\n var newAngle = scale.slotAngle(options.value);\n\n if (this.animation) {\n this.animation.abort();\n }\n\n if (options.animation.transitions === false) {\n this.angle(newAngle);\n this.stroke(this.currentColor());\n } else {\n this.animation = new RangePointerAnimation(this, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n }));\n\n this.animation.play();\n }\n };\n\n RangePointer.prototype.angle = function angle (value) {\n var geometry = this.elements.geometry();\n if (this.scale.options.reverse) {\n geometry.setStartAngle(value);\n } else {\n geometry.setEndAngle(value);\n }\n this.scale.placeholderRangeAngle(value);\n };\n\n RangePointer.prototype.stroke = function stroke (value) {\n this.elements.stroke(value);\n };\n\n RangePointer.prototype.render = function render () {\n if (this.elements) {\n return;\n }\n\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n this.elements = scale.addRange(scale.options.min, this.options.value, {\n color: this.currentColor(),\n opacity: options.opacity,\n lineCap: scale.options.rangeLineCap\n });\n };\n\n RangePointer.prototype.currentColor = function currentColor () {\n var ref = this.scale.options;\n var min = ref.min;\n var max = ref.max;\n var ref$1 = this.options;\n var colors = ref$1.colors;\n var color = ref$1.color;\n var value = ref$1.value;\n var currentValue = isNumber(value) ? value : min;\n\n if (colors) {\n for (var idx = 0; idx < colors.length; idx++) {\n var ref$2 = colors[idx];\n var rangeColor = ref$2.color;\n var from = ref$2.from; if ( from === void 0 ) from = min;\n var to = ref$2.to; if ( to === void 0 ) to = max;\n\n if (from <= currentValue && currentValue <= to) {\n return rangeColor;\n }\n }\n }\n\n return color;\n };\n\n RangePointer.prototype.reflow = function reflow () {\n this.render();\n\n this.bbox = this.elements.bbox();\n };\n\n return RangePointer;\n}(Pointer));\n\nsetDefaultOptions(RangePointer, {\n animation: {\n type: RADIAL_RANGE_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RangePointer;\n","import RadialGauge from '../radial/radial-gauge';\nimport ArcScale from './arc-scale';\nimport RangePointer from './range-pointer';\n\nimport { deepExtend } from '../../common';\n\n\nvar ArcGauge = (function (RadialGauge) {\n function ArcGauge () {\n RadialGauge.apply(this, arguments);\n }\n\n if ( RadialGauge ) ArcGauge.__proto__ = RadialGauge;\n ArcGauge.prototype = Object.create( RadialGauge && RadialGauge.prototype );\n ArcGauge.prototype.constructor = ArcGauge;\n\n ArcGauge.prototype._initTheme = function _initTheme (theme) {\n RadialGauge.prototype._initTheme.call(this, theme);\n\n this.options.color = this.options.color || (this.theme.pointer || {}).color;\n };\n\n ArcGauge.prototype._createModel = function _createModel () {\n var options = this.options;\n var scale = this.scale = new ArcScale(options.scale, this.contextService);\n\n var pointer = new RangePointer(scale, deepExtend({}, {\n colors: options.colors,\n color: options.color,\n value: options.value,\n opacity: options.opacity,\n animation: {\n transitions: options.transitions\n }\n }));\n\n this.pointers = [ pointer ];\n };\n\n ArcGauge.prototype._buildPointers = function _buildPointers (pointers) {\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n current.render();\n\n current.value(current.options.value);\n }\n };\n\n ArcGauge.prototype._setValueOptions = function _setValueOptions (value) {\n this.options.value = value;\n };\n\n ArcGauge.prototype.currentColor = function currentColor () {\n var pointer = this.pointers[0];\n if (pointer) {\n return pointer.currentColor();\n }\n };\n\n ArcGauge.prototype.centerLabelPosition = function centerLabelPosition (width, height) {\n var size = this.getSize();\n var center = this.scale.arc.center;\n\n var left = center.x - width / 2;\n var top = center.y - height / 2;\n\n if (width < size.width) {\n var right = left + width;\n\n left = Math.max(left, 0);\n\n if (right > size.width) {\n left -= right - size.width;\n }\n }\n\n if (height < size.height) {\n var bbox = this.scale.bbox;\n var yLimit = bbox.bottomRight().y;\n var bottom = top + height;\n\n top = Math.max(top, bbox.origin.y);\n\n if (bottom > yLimit) {\n top -= bottom - yLimit;\n }\n }\n\n return {\n left: left,\n top: top\n };\n };\n\n return ArcGauge;\n}(RadialGauge));\n\nexport default ArcGauge;","import ArcGauge from '../arc/arc-gauge';\n\nvar defaultStartAngle = 90;\n\nvar CircularGauge = (function (ArcGauge) {\n function CircularGauge () {\n ArcGauge.apply(this, arguments);\n }\n\n if ( ArcGauge ) CircularGauge.__proto__ = ArcGauge;\n CircularGauge.prototype = Object.create( ArcGauge && ArcGauge.prototype );\n CircularGauge.prototype.constructor = CircularGauge;\n\n CircularGauge.prototype._createModel = function _createModel () {\n var scaleOptions = this.options.scale;\n if (typeof scaleOptions.startAngle !== 'number') {\n scaleOptions.startAngle = defaultStartAngle;\n }\n\n scaleOptions.endAngle = scaleOptions.startAngle + 360;\n\n ArcGauge.prototype._createModel.call(this);\n };\n\n return CircularGauge;\n}(ArcGauge));\n\nexport default CircularGauge;\n","import {\n Class,\n defined,\n setDefaultOptions\n} from '../../common';\n\nvar DEFAULT_QUIET_ZONE_LENGTH = 10;\n\nexport var Encoding = (function (Class) {\n function Encoding(options) {\n Class.call(this);\n this.setOptions(options);\n this.initProperties();\n }\n\n if ( Class ) Encoding.__proto__ = Class;\n Encoding.prototype = Object.create( Class && Class.prototype );\n Encoding.prototype.constructor = Encoding;\n\n Encoding.prototype.initProperties = function initProperties () { };\n\n Encoding.prototype.setOptions = function setOptions (options) {\n this.options = Object.assign({}, this.options, options);\n this.quietZoneLength = this.options.addQuietZone ? 2 * this.options.quietZoneLength : 0;\n };\n\n Encoding.prototype.encode = function encode (value, width, height) {\n var convertedValue = defined(value) ? String(value) : value;\n\n this.initValue(convertedValue, width, height);\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n this.addData();\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n return {\n baseUnit: this.baseUnit,\n pattern: this.pattern\n };\n };\n\n Encoding.prototype.initValue = function initValue () { };\n\n Encoding.prototype.addQuietZone = function addQuietZone () {\n this.pattern.push(this.options.quietZoneLength || DEFAULT_QUIET_ZONE_LENGTH);\n };\n\n Encoding.prototype.addData = function addData () { };\n\n Encoding.prototype.invalidCharacterError = function invalidCharacterError (character) {\n throw new Error((\"Character \\\"\" + character + \"\\\" is not valid for symbology \" + (this.name) + \".\"));\n };\n\n return Encoding;\n}(Class));\n\nsetDefaultOptions(Encoding, {\n quietZoneLength: DEFAULT_QUIET_ZONE_LENGTH,\n addQuietZone: true,\n addCheckSum: true\n});\n","import { Encoding } from './encoding';\nimport { setDefaultOptions } from '../../common';\n\nvar extend = Object.assign;\n\nexport var Code11 = (function (Encoding) {\n function Code11 () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Code11.__proto__ = Encoding;\n Code11.prototype = Object.create( Encoding && Encoding.prototype );\n Code11.prototype.constructor = Code11;\n\n Code11.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 11\",\n characterMap: [\"111121\", \"211121\", \"121121\", \"221111\", \"112121\", \"212111\", \"122111\", \"111221\", \"211211\", \"211111\", \"112111\"],\n cCheckSumTotal: 10,\n kCheckSumTotal: 9,\n kCheckSumMinLength: 10,\n checkSumMod: 11,\n DASH_VALUE: 10,\n DASH: \"-\",\n START: \"112211\",\n STOP: \"11221\"\n });\n };\n\n Code11.prototype.initValue = function initValue (value, width) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.totalUnits = 0;\n };\n\n Code11.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addPattern(this.START);\n\n for (var i = 0; i < value.length; i++) {\n this$1.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n };\n\n Code11.prototype.setBaseUnit = function setBaseUnit () {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n };\n\n Code11.prototype.addCheckSum = function addCheckSum () {\n var value = this.value;\n var length = value.length;\n var cValue = this.getWeightedSum(value, length, this.cCheckSumTotal) % this.checkSumMod;\n\n this.checksum = String(cValue);\n this.addPattern(this.characterMap[cValue]);\n\n length++;\n\n if (length >= this.kCheckSumMinLength) {\n var kValue = (cValue + this.getWeightedSum(value, length, this.kCheckSumTotal)) % this.checkSumMod;\n this.checksum += kValue;\n this.addPattern(this.characterMap[kValue]);\n }\n };\n\n Code11.prototype.getWeightedSum = function getWeightedSum (value, length, total) {\n var this$1 = this;\n\n var weightedSum = 0;\n\n for (var i = 0; i < value.length; i++) {\n weightedSum += this$1.weightedValue(this$1.getValue(value.charAt(i)), length, i, total);\n }\n\n return weightedSum;\n };\n\n Code11.prototype.weightedValue = function weightedValue (value, length, index, total) {\n var weight = (length - index) % total || total;\n return weight * value;\n };\n\n Code11.prototype.getValue = function getValue (character) {\n if (!isNaN(character)) {\n return parseInt(character, 10);\n } else if (character !== this.DASH) {\n this.invalidCharacterError(character);\n }\n\n return this.DASH_VALUE;\n };\n\n Code11.prototype.addCharacter = function addCharacter (character) {\n var value = this.getValue(character);\n var pattern = this.characterMap[value];\n\n this.addPattern(pattern);\n };\n\n Code11.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n var value;\n\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this$1.pattern.push(value);\n this$1.totalUnits += value;\n }\n };\n\n return Code11;\n}(Encoding));\n\nsetDefaultOptions(Code11, {\n addCheckSum: true\n});\n","import { setDefaultOptions } from '../../common';\nimport { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var Code39Base = (function (Encoding) {\n function Code39Base () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Code39Base.__proto__ = Encoding;\n Code39Base.prototype = Object.create( Encoding && Encoding.prototype );\n Code39Base.prototype.constructor = Code39Base;\n\n Code39Base.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n minBaseUnitLength: 0.7\n });\n };\n\n Code39Base.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addStart();\n\n for (var idx = 0; idx < value.length; idx++) {\n this$1.addCharacter(value.charAt(idx));\n }\n\n if (this.options.addCheckSum) {\n this.pushCheckSum();\n }\n\n this.addStop();\n this.prepareValues();\n };\n\n Code39Base.prototype.addCharacter = function addCharacter (character) {\n var characterData = this.characterMap[character];\n\n if (!characterData) {\n this.invalidCharacterError(character);\n }\n\n this.addBase(characterData);\n };\n\n Code39Base.prototype.addBase = function addBase () { };\n\n return Code39Base;\n}(Encoding));\n\nexport var Code39 = (function (Code39Base) {\n function Code39 () {\n Code39Base.apply(this, arguments);\n }\n\n if ( Code39Base ) Code39.__proto__ = Code39Base;\n Code39.prototype = Object.create( Code39Base && Code39Base.prototype );\n Code39.prototype.constructor = Code39;\n\n Code39.prototype.initProperties = function initProperties () {\n Code39Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 39\",\n checkSumMod: 43,\n minRatio: 2.5,\n maxRatio: 3,\n gapWidth: 1,\n splitCharacter: \"|\",\n patternMappings: {\n \"b\": \"1|\",\n \"w\": \"1|\",\n \"B\": \"ratio|\",\n \"W\": \"ratio|\"\n },\n characterMap: {\n \"0\": { \"pattern\": \"bwbWBwBwb\", \"value\": 0 },\n \"1\": { \"pattern\": \"BwbWbwbwB\", \"value\": 1 },\n \"2\": { \"pattern\": \"bwBWbwbwB\", \"value\": 2 },\n \"3\": { \"pattern\": \"BwBWbwbwb\", \"value\": 3 },\n \"4\": { \"pattern\": \"bwbWBwbwB\", \"value\": 4 },\n \"5\": { \"pattern\": \"BwbWBwbwb\", \"value\": 5 },\n \"6\": { \"pattern\": \"bwBWBwbwb\", \"value\": 6 },\n \"7\": { \"pattern\": \"bwbWbwBwB\", \"value\": 7 },\n \"8\": { \"pattern\": \"BwbWbwBwb\", \"value\": 8 },\n \"9\": { \"pattern\": \"bwBWbwBwb\", \"value\": 9 },\n \"A\": { \"pattern\": \"BwbwbWbwB\", \"value\": 10 },\n \"B\": { \"pattern\": \"bwBwbWbwB\", \"value\": 11 },\n \"C\": { \"pattern\": \"BwBwbWbwb\", \"value\": 12 },\n \"D\": { \"pattern\": \"bwbwBWbwB\", \"value\": 13 },\n \"E\": { \"pattern\": \"BwbwBWbwb\", \"value\": 14 },\n \"F\": { \"pattern\": \"bwBwBWbwb\", \"value\": 15 },\n \"G\": { \"pattern\": \"bwbwbWBwB\", \"value\": 16 },\n \"H\": { \"pattern\": \"BwbwbWBwb\", \"value\": 17 },\n \"I\": { \"pattern\": \"bwBwbWBwb\", \"value\": 18 },\n \"J\": { \"pattern\": \"bwbwBWBwb\", \"value\": 19 },\n \"K\": { \"pattern\": \"BwbwbwbWB\", \"value\": 20 },\n \"L\": { \"pattern\": \"bwBwbwbWB\", \"value\": 21 },\n \"M\": { \"pattern\": \"BwBwbwbWb\", \"value\": 22 },\n \"N\": { \"pattern\": \"bwbwBwbWB\", \"value\": 23 },\n \"O\": { \"pattern\": \"BwbwBwbWb\", \"value\": 24 },\n \"P\": { \"pattern\": \"bwBwBwbWb\", \"value\": 25 },\n \"Q\": { \"pattern\": \"bwbwbwBWB\", \"value\": 26 },\n \"R\": { \"pattern\": \"BwbwbwBWb\", \"value\": 27 },\n \"S\": { \"pattern\": \"bwBwbwBWb\", \"value\": 28 },\n \"T\": { \"pattern\": \"bwbwBwBWb\", \"value\": 29 },\n \"U\": { \"pattern\": \"BWbwbwbwB\", \"value\": 30 },\n \"V\": { \"pattern\": \"bWBwbwbwB\", \"value\": 31 },\n \"W\": { \"pattern\": \"BWBwbwbwb\", \"value\": 32 },\n \"X\": { \"pattern\": \"bWbwBwbwB\", \"value\": 33 },\n \"Y\": { \"pattern\": \"BWbwBwbwb\", \"value\": 34 },\n \"Z\": { \"pattern\": \"bWBwBwbwb\", \"value\": 35 },\n \"-\": { \"pattern\": \"bWbwbwBwB\", \"value\": 36 },\n \".\": { \"pattern\": \"BWbwbwBwb\", \"value\": 37 },\n \" \": { \"pattern\": \"bWBwbwBwb\", \"value\": 38 },\n \"$\": { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n \"/\": { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n \"+\": { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n \"%\": { \"pattern\": \"bwbWbWbWb\", \"value\": 42 },\n START: { pattern: \"bWbwBwBwb\" }\n }\n });\n };\n\n Code39.prototype.initValue = function initValue (value, width, height) {\n this.width = width;\n this.height = height;\n this.value = value;\n this.dataLength = value.length;\n this.pattern = [];\n this.patternString = \"\";\n };\n\n Code39.prototype.prepareValues = function prepareValues () {\n var this$1 = this;\n\n var minBaseUnit = this.minBaseUnitLength;\n var minRatio = this.minRatio;\n var minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n var baseUnit;\n var ratio = this.maxRatio;\n\n if (this.height < minHeight) {\n throw new Error((\"Insufficient height for Code39 encoding: the current height is \" + (this.height) + \"px and the minimum height is \" + minHeight + \"px.\"));\n }\n\n baseUnit = this.getBaseUnit(ratio);\n\n while (baseUnit < minBaseUnit && ratio > minRatio) {\n ratio = parseFloat((ratio - 0.1).toFixed(1));\n baseUnit = this$1.getBaseUnit(ratio);\n }\n\n if (baseUnit < minBaseUnit) {\n var minWidth = Math.ceil(this.getBaseWidth(minRatio) * minBaseUnit);\n throw new Error((\"Insufficient width for Code39 encoding: the current width is \" + (this.width) + \"px and the minimum width for value \\\"\" + (this.value) + \"\\\" is \" + minWidth + \"px.\"));\n }\n\n this.ratio = ratio;\n this.baseUnit = baseUnit;\n this.patternString = this.patternString.substring(0, this.patternString.length - 1);\n this.pattern = this.pattern.concat(this.patternString.replace(/ratio/g, ratio).split(this.splitCharacter));\n };\n\n Code39.prototype.getBaseUnit = function getBaseUnit (ratio) {\n return this.width / this.getBaseWidth(ratio);\n };\n\n Code39.prototype.getBaseWidth = function getBaseWidth (ratio) {\n var characterLength = 3 * (ratio + 2);\n return this.quietZoneLength + characterLength * (this.dataLength + 2) + this.gapWidth * (this.dataLength + 1);\n };\n\n Code39.prototype.addStart = function addStart () {\n this.addPattern(this.characterMap.START.pattern);\n this.addCharacterGap();\n };\n\n Code39.prototype.addBase = function addBase (character) {\n this.addPattern(character.pattern);\n this.addCharacterGap();\n };\n\n Code39.prototype.addStop = function addStop () {\n this.addPattern(this.characterMap.START.pattern);\n };\n\n Code39.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n for (var i = 0; i < pattern.length; i++) {\n this$1.patternString += this$1.patternMappings[pattern.charAt(i)];\n }\n };\n\n Code39.prototype.addCharacterGap = function addCharacterGap () {\n this.patternString += this.gapWidth + this.splitCharacter;\n };\n\n return Code39;\n}(Code39Base));\n\nsetDefaultOptions(Code39, {\n addCheckSum: false\n});\n","import { Code39 } from './code39';\nimport deepExtend from '../../common/deep-extend';\n\nexport var Code39ExtendedBase = {\n addCharacter: function addCharacter(character) {\n if (this.characterMap[character]) {\n this.addBase(this.characterMap[character]);\n } else if (character.charCodeAt(0) > 127) {\n this.invalidCharacterError(character);\n } else {\n this.addExtended(character.charCodeAt(0));\n }\n },\n\n addExtended: function addExtended(code) {\n var this$1 = this;\n\n var patterns;\n\n for (var i = 0; i < this.extendedMappings.length; i++) {\n patterns = this$1.extendedMappings[i].call(this$1, code);\n\n if (patterns) {\n for (var patternIndex = 0; patternIndex < patterns.length; patternIndex++) {\n var pattern = patterns[patternIndex];\n this$1.addBase(pattern);\n }\n\n this$1.dataLength += patterns.length - 1;\n return;\n }\n }\n },\n\n extendedMappings: [\n function(code) {\n if (97 <= code && code <= 122) {\n return [this.characterMap[this.shiftCharacters[0]], this.characterMap[String.fromCharCode(code - 32)]];\n }\n },\n function(code) {\n if (33 <= code && code <= 58) {\n return [this.characterMap[this.shiftCharacters[1]], this.characterMap[String.fromCharCode(code + 32)]];\n }\n },\n function(code) {\n if (1 <= code && code <= 26) {\n return [this.characterMap[this.shiftCharacters[2]], this.characterMap[String.fromCharCode(code + 64)]];\n }\n },\n function(code) {\n var this$1 = this;\n\n var result;\n var dataCharacter;\n\n if (!this.specialAsciiCodes[code]) {\n dataCharacter = Math.floor(code / 32) * 6 + (code - 27) % 32 + 64;\n result = [this.characterMap[this.shiftCharacters[3]], this.characterMap[String.fromCharCode(dataCharacter)]];\n } else {\n result = [];\n\n for (var i = 0; i < this.specialAsciiCodes[code].length; i++) {\n result.push(this$1.characterMap[this$1.shiftCharacters[3]]);\n result.push(this$1.characterMap[this$1.specialAsciiCodes[code][i]]);\n }\n }\n\n return result;\n }\n ],\n specialAsciiCodes: {\n \"0\": [\"U\"],\n \"64\": [\"V\"],\n \"96\": [\"W\"],\n \"127\": [\"T\", \"X\", \"Y\", \"Z\"]\n },\n shiftValuesAsciiCodes: {\n \"39\": 36,\n \"40\": 47,\n \"41\": 43,\n \"42\": 37\n },\n characterMap: {\n \"+\": false,\n \"/\": false,\n \"$\": false,\n \"%\": false\n },\n shiftCharacters: [\"SHIFT0\", \"SHIFT1\", \"SHIFT2\", \"SHIFT3\"]\n};\n\nexport var Code39Extended = (function (Code39) {\n function Code39Extended () {\n Code39.apply(this, arguments);\n }\n\n if ( Code39 ) Code39Extended.__proto__ = Code39;\n Code39Extended.prototype = Object.create( Code39 && Code39.prototype );\n Code39Extended.prototype.constructor = Code39Extended;\n\n Code39Extended.prototype.initProperties = function initProperties () {\n Code39.prototype.initProperties.call(this);\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 39 extended\",\n characterMap: {\n SHIFT0: { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n SHIFT1: { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n SHIFT2: { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n SHIFT3: { \"pattern\": \"bwbWbWbWb\", \"value\": 42 }\n }\n });\n };\n\n return Code39Extended;\n}(Code39));\n","import { Code39Base } from './code39';\n\nvar extend = Object.assign;\n\nexport var Code93 = (function (Code39Base) {\n function Code93 () {\n Code39Base.apply(this, arguments);\n }\n\n if ( Code39Base ) Code93.__proto__ = Code39Base;\n Code93.prototype = Object.create( Code39Base && Code39Base.prototype );\n Code93.prototype.constructor = Code93;\n\n Code93.prototype.initProperties = function initProperties () {\n Code39Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 93\",\n cCheckSumTotal: 20,\n kCheckSumTotal: 15,\n checkSumMod: 47,\n characterMap: {\n \"0\": { \"pattern\": \"131112\", \"value\": 0 },\n \"1\": { \"pattern\": \"111213\", \"value\": 1 },\n \"2\": { \"pattern\": \"111312\", \"value\": 2 },\n \"3\": { \"pattern\": \"111411\", \"value\": 3 },\n \"4\": { \"pattern\": \"121113\", \"value\": 4 },\n \"5\": { \"pattern\": \"121212\", \"value\": 5 },\n \"6\": { \"pattern\": \"121311\", \"value\": 6 },\n \"7\": { \"pattern\": \"111114\", \"value\": 7 },\n \"8\": { \"pattern\": \"131211\", \"value\": 8 },\n \"9\": { \"pattern\": \"141111\", \"value\": 9 },\n \"A\": { \"pattern\": \"211113\", \"value\": 10 },\n \"B\": { \"pattern\": \"211212\", \"value\": 11 },\n \"C\": { \"pattern\": \"211311\", \"value\": 12 },\n \"D\": { \"pattern\": \"221112\", \"value\": 13 },\n \"E\": { \"pattern\": \"221211\", \"value\": 14 },\n \"F\": { \"pattern\": \"231111\", \"value\": 15 },\n \"G\": { \"pattern\": \"112113\", \"value\": 16 },\n \"H\": { \"pattern\": \"112212\", \"value\": 17 },\n \"I\": { \"pattern\": \"112311\", \"value\": 18 },\n \"J\": { \"pattern\": \"122112\", \"value\": 19 },\n \"K\": { \"pattern\": \"132111\", \"value\": 20 },\n \"L\": { \"pattern\": \"111123\", \"value\": 21 },\n \"M\": { \"pattern\": \"111222\", \"value\": 22 },\n \"N\": { \"pattern\": \"111321\", \"value\": 23 },\n \"O\": { \"pattern\": \"121122\", \"value\": 24 },\n \"P\": { \"pattern\": \"131121\", \"value\": 25 },\n \"Q\": { \"pattern\": \"212112\", \"value\": 26 },\n \"R\": { \"pattern\": \"212211\", \"value\": 27 },\n \"S\": { \"pattern\": \"211122\", \"value\": 28 },\n \"T\": { \"pattern\": \"211221\", \"value\": 29 },\n \"U\": { \"pattern\": \"221121\", \"value\": 30 },\n \"V\": { \"pattern\": \"222111\", \"value\": 31 },\n \"W\": { \"pattern\": \"112122\", \"value\": 32 },\n \"X\": { \"pattern\": \"112221\", \"value\": 33 },\n \"Y\": { \"pattern\": \"122121\", \"value\": 34 },\n \"Z\": { \"pattern\": \"123111\", \"value\": 35 },\n \"-\": { \"pattern\": \"121131\", \"value\": 36 },\n \".\": { \"pattern\": \"311112\", \"value\": 37 },\n \" \": { \"pattern\": \"311211\", \"value\": 38 },\n \"$\": { \"pattern\": \"321111\", \"value\": 39 },\n \"/\": { \"pattern\": \"112131\", \"value\": 40 },\n \"+\": { \"pattern\": \"113121\", \"value\": 41 },\n \"%\": { \"pattern\": \"211131\", \"value\": 42 },\n SHIFT0: { \"pattern\": \"122211\", \"value\": 46 },\n SHIFT1: { \"pattern\": \"311121\", \"value\": 45 },\n SHIFT2: { \"pattern\": \"121221\", \"value\": 43 },\n SHIFT3: { \"pattern\": \"312111\", \"value\": 44 },\n START: { \"pattern\": \"111141\" },\n TERMINATION_BAR: \"1\"\n }\n });\n };\n\n Code93.prototype.initValue = function initValue (value, width, height) {\n this.value = value;\n this.width = width;\n this.height = height;\n this.pattern = [];\n this.values = [];\n this.dataLength = value.length;\n };\n\n Code93.prototype.prepareValues = function prepareValues () {\n var minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n\n if (this.height < minHeight) {\n throw new Error((\"Insufficient height for Code93 encoding: the current height is \" + (this.height) + \"px, the minimum required height is \" + minHeight + \"px.\"));\n }\n\n this.setBaseUnit();\n\n if (this.baseUnit < this.minBaseUnitLength) {\n var minWidth = Math.ceil(this.minBaseUnitLength * (this.width / this.baseUnit));\n throw new Error((\"Insufficient width for Code93 encoding: the current width is \" + (this.width) + \"px and the minimum required width for value \\\"\" + (this.value) + \"\\\" is \" + minWidth + \"px.\"));\n }\n };\n\n Code93.prototype.setBaseUnit = function setBaseUnit () {\n var checkSumLength = 2;\n\n this.baseUnit = this.width / (9 * (this.dataLength + 2 + checkSumLength) + this.quietZoneLength + 1);\n };\n\n Code93.prototype.addStart = function addStart () {\n var pattern = this.characterMap.START.pattern;\n this.addPattern(pattern);\n };\n\n Code93.prototype.addStop = function addStop () {\n this.addStart();\n this.pattern.push(this.characterMap.TERMINATION_BAR);\n };\n\n Code93.prototype.addBase = function addBase (charData) {\n this.addPattern(charData.pattern);\n this.values.push(charData.value);\n };\n\n Code93.prototype.pushCheckSum = function pushCheckSum () {\n var this$1 = this;\n\n var checkValues = this._getCheckValues();\n var charData;\n\n this.checksum = checkValues.join(\"\");\n\n for (var i = 0; i < checkValues.length; i++) {\n charData = this$1.characterMap[this$1._findCharacterByValue(checkValues[i])];\n this$1.addPattern(charData.pattern);\n }\n };\n\n Code93.prototype._getCheckValues = function _getCheckValues () {\n var this$1 = this;\n\n var values = this.values;\n var length = values.length;\n var wightedSum = 0;\n var cValue;\n var kValue;\n var idx;\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this$1.weightedValue(values[idx], length - idx, this$1.cCheckSumTotal);\n }\n\n cValue = wightedSum % this.checkSumMod;\n\n wightedSum = this.weightedValue(cValue, 1, this.kCheckSumTotal);\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this$1.weightedValue(values[idx], length - idx + 1, this$1.kCheckSumTotal);\n }\n\n kValue = wightedSum % this.checkSumMod;\n return [cValue, kValue];\n };\n\n Code93.prototype._findCharacterByValue = function _findCharacterByValue (value) {\n var this$1 = this;\n\n for (var character in this$1.characterMap) {\n if (this$1.characterMap[character].value === value) {\n return character;\n }\n }\n };\n\n Code93.prototype.weightedValue = function weightedValue (value, index, total) {\n return (index % total || total) * value;\n };\n\n Code93.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n var value;\n\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this$1.pattern.push(value);\n }\n };\n\n return Code93;\n}(Code39Base));\n","import { Code93 } from './code93';\nimport { Code39ExtendedBase } from './code39-extended';\nimport deepExtend from '../../common/deep-extend';\n\nexport var Code93Extended = (function (Code93) {\n function Code93Extended () {\n Code93.apply(this, arguments);\n }\n\n if ( Code93 ) Code93Extended.__proto__ = Code93;\n Code93Extended.prototype = Object.create( Code93 && Code93.prototype );\n Code93Extended.prototype.constructor = Code93Extended;\n\n Code93Extended.prototype.initProperties = function initProperties () {\n Code93.prototype.initProperties.call(this);\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 93 extended\",\n pushCheckSum: function() {\n var this$1 = this;\n\n var checkValues = this._getCheckValues();\n var value;\n\n this.checksum = checkValues.join(\"\");\n\n for (var i = 0; i < checkValues.length; i++) {\n value = checkValues[i];\n\n if (this$1.shiftValuesAsciiCodes[value]) {\n this$1.addExtended(this$1.shiftValuesAsciiCodes[value]);\n } else {\n var characterByValue = this$1._findCharacterByValue(value);\n this$1.addPattern(this$1.characterMap[characterByValue].pattern);\n }\n }\n }\n });\n };\n\n return Code93Extended;\n}(Code93));\n","import { Encoding } from './encoding';\nimport inArray from '../../common/in-array';\n\nvar numberRegex = /^\\d+$/;\nvar extend = Object.assign;\n\nexport var Postnet = (function (Encoding) {\n function Postnet () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Postnet.__proto__ = Encoding;\n Postnet.prototype = Object.create( Encoding && Encoding.prototype );\n Postnet.prototype.constructor = Postnet;\n\n Postnet.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Postnet\",\n START: \"2\",\n VALID_CODE_LENGTHS: [5, 9, 11],\n DIGIT_SEPARATOR: \"-\",\n characterMap: [\"22111\", \"11122\", \"11212\", \"11221\", \"12112\", \"12121\", \"12211\", \"21112\", \"21121\", \"21211\"]\n });\n };\n\n Postnet.prototype.initValue = function initValue (value, width, height) {\n this.height = height;\n this.width = width;\n this.baseHeight = height / 2;\n this.value = value.replace(new RegExp(this.DIGIT_SEPARATOR, \"g\"), \"\");\n this.pattern = [];\n this.validate(this.value);\n this.checkSum = 0;\n this.setBaseUnit();\n };\n\n Postnet.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addPattern(this.START);\n\n for (var i = 0; i < value.length; i++) {\n this$1.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.START);\n this.pattern.pop();\n };\n\n Postnet.prototype.addCharacter = function addCharacter (character) {\n var pattern = this.characterMap[character];\n this.checkSum += parseInt(character, 10);\n this.addPattern(pattern);\n };\n\n Postnet.prototype.addCheckSum = function addCheckSum () {\n this.checksum = (10 - (this.checkSum % 10)) % 10;\n this.addCharacter(this.checksum);\n };\n\n Postnet.prototype.setBaseUnit = function setBaseUnit () {\n var startStopLength = 3;\n\n this.baseUnit = this.width / ((this.value.length + 1) * 10 + startStopLength + this.quietZoneLength);\n };\n\n Postnet.prototype.validate = function validate (value) {\n if (!numberRegex.test(value)) {\n this.invalidCharacterError(value.match(/[^0-9]/)[0]);\n }\n\n if (!inArray(value.length, this.VALID_CODE_LENGTHS)) {\n throw new Error(\"Invalid value length. Valid lengths for the Postnet symbology are \" + this.VALID_CODE_LENGTHS.join(\",\") + \".\");\n }\n };\n\n Postnet.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n var y1;\n\n for (var i = 0; i < pattern.length; i++) {\n y1 = this$1.height - this$1.baseHeight * pattern.charAt(i);\n this$1.pattern.push({ width: 1, y1: y1, y2: this$1.height });\n this$1.pattern.push(1);\n }\n };\n\n return Postnet;\n}(Encoding));\n","import { Class } from '../../common';\nimport { Encoding } from './encoding';\nimport deepExtend from '../../common/deep-extend';\nimport inArray from '../../common/in-array';\n\nvar numberRegex = /^\\d+$/;\nvar alphanumericRegex = /^[a-z0-9]+$/i;\nvar extend = Object.assign;\n\nexport var State128 = (function (Class) {\n function State128(encoding) {\n Class.call(this);\n this.encoding = encoding;\n this.initProperties();\n }\n\n if ( Class ) State128.__proto__ = Class;\n State128.prototype = Object.create( Class && Class.prototype );\n State128.prototype.constructor = State128;\n\n State128.prototype.initProperties = function initProperties () { };\n\n State128.prototype.addStart = function addStart () { };\n\n State128.prototype.is = function is () { };\n\n State128.prototype.isCode = function isCode () {\n return false;\n };\n\n State128.prototype.move = function move () { };\n\n State128.prototype.pushState = function pushState () { };\n\n return State128;\n}(Class));\n\nexport var State128AB = (function (State128) {\n function State128AB(encoding, states) {\n State128.call(this, encoding);\n this.states = states;\n this._initMoves(states);\n }\n\n if ( State128 ) State128AB.__proto__ = State128;\n State128AB.prototype = Object.create( State128 && State128.prototype );\n State128AB.prototype.constructor = State128AB;\n\n State128AB.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n deepExtend(this, {\n FNC4: \"FNC4\",\n SHIFT: 98\n });\n };\n\n State128AB.prototype.addStart = function addStart () {\n this.encoding.addPattern(this.START);\n };\n\n State128AB.prototype.is = function is (value, index) {\n var code = value.charCodeAt(index);\n return this.isCode(code);\n };\n\n State128AB.prototype.move = function move (encodingState) {\n var idx = 0;\n\n while (!this._moves[idx].call(this, encodingState) && idx < this._moves.length) {\n idx++;\n }\n };\n\n State128AB.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var states = this.states,\n value = encodingState.value,\n maxLength = value.length,\n code;\n\n if (inArray(\"C\", states)) {\n var numberMatch = value.substr(encodingState.index).match(/\\d{4,}/g);\n\n if (numberMatch) {\n maxLength = value.indexOf(numberMatch[0], encodingState.index);\n }\n }\n\n while ((code = encodingState.value.charCodeAt(encodingState.index)) >= 0 &&\n this.isCode(code) &&\n encodingState.index < maxLength) {\n this$1.encoding.addPattern(this$1.getValue(code));\n encodingState.index++;\n }\n };\n\n State128AB.prototype._initMoves = function _initMoves (states) {\n this._moves = [];\n\n if (inArray(this.FNC4, states)) {\n this._moves.push(this._moveFNC);\n }\n\n if (inArray(this.shiftKey, states)) {\n this._moves.push(this._shiftState);\n }\n\n this._moves.push(this._moveState);\n };\n\n State128AB.prototype._moveFNC = function _moveFNC (encodingState) {\n if (encodingState.fnc) {\n encodingState.fnc = false;\n return encodingState.previousState === this.key;\n }\n };\n\n State128AB.prototype._shiftState = function _shiftState (encodingState) {\n if (encodingState.previousState === this.shiftKey &&\n (encodingState.index + 1 >= encodingState.value.length ||\n this.encoding[this.shiftKey].is(encodingState.value, encodingState.index + 1))) {\n this.encoding.addPattern(this.SHIFT);\n encodingState.shifted = true;\n return true;\n }\n };\n\n State128AB.prototype._moveState = function _moveState () {\n this.encoding.addPattern(this.MOVE);\n return true;\n };\n\n return State128AB;\n}(State128));\n\nvar states128 = {};\n\nstates128.A = (function (State128AB) {\n function State128A () {\n State128AB.apply(this, arguments);\n }\n\n if ( State128AB ) State128A.__proto__ = State128AB;\n State128A.prototype = Object.create( State128AB && State128AB.prototype );\n State128A.prototype.constructor = State128A;\n\n State128A.prototype.initProperties = function initProperties () {\n State128AB.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"A\",\n shiftKey: \"B\",\n MOVE: 101,\n START: 103\n });\n };\n\n State128A.prototype.isCode = function isCode (code) {\n return 0 <= code && code < 96;\n };\n\n State128A.prototype.getValue = function getValue (code) {\n if (code < 32) {\n return code + 64;\n }\n\n return code - 32;\n };\n\n return State128A;\n}(State128AB));\n\nstates128.B = (function (State128AB) {\n function State128B () {\n State128AB.apply(this, arguments);\n }\n\n if ( State128AB ) State128B.__proto__ = State128AB;\n State128B.prototype = Object.create( State128AB && State128AB.prototype );\n State128B.prototype.constructor = State128B;\n\n State128B.prototype.initProperties = function initProperties () {\n State128AB.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"B\",\n shiftKey: \"A\",\n MOVE: 100,\n START: 104\n });\n };\n\n State128B.prototype.isCode = function isCode (code) {\n return 32 <= code && code < 128;\n };\n\n State128B.prototype.getValue = function getValue (code) {\n return code - 32;\n };\n\n return State128B;\n}(State128AB));\n\nstates128.C = (function (State128) {\n function State128C () {\n State128.apply(this, arguments);\n }\n\n if ( State128 ) State128C.__proto__ = State128;\n State128C.prototype = Object.create( State128 && State128.prototype );\n State128C.prototype.constructor = State128C;\n\n State128C.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"C\",\n MOVE: 99,\n START: 105\n });\n };\n\n State128C.prototype.addStart = function addStart () {\n this.encoding.addPattern(this.START);\n };\n\n State128C.prototype.is = function is (value, index) {\n var next4 = getSubstring(value, index, 4);\n return (index + 4 <= value.length || value.length === 2) && numberRegex.test(next4);\n };\n\n State128C.prototype.move = function move () {\n this.encoding.addPattern(this.MOVE);\n };\n\n State128C.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var code;\n\n while ((code = getSubstring(encodingState.value, encodingState.index, 2)) &&\n numberRegex.test(code) && code.length === 2) {\n this$1.encoding.addPattern(parseInt(code, 10));\n encodingState.index += 2;\n }\n };\n\n State128C.prototype.getValue = function getValue (code) {\n return code;\n };\n\n return State128C;\n}(State128));\n\nstates128.FNC4 = (function (State128) {\n function State128FNC4(encoding, states) {\n State128.call(this, encoding);\n this._initSubStates(states);\n }\n\n if ( State128 ) State128FNC4.__proto__ = State128;\n State128FNC4.prototype = Object.create( State128 && State128.prototype );\n State128FNC4.prototype.constructor = State128FNC4;\n\n State128FNC4.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"FNC4\",\n dependentStates: [\"A\", \"B\"]\n });\n };\n\n State128FNC4.prototype.addStart = function addStart (encodingState) {\n var code = encodingState.value.charCodeAt(0) - 128,\n subState = this._getSubState(code);\n\n this.encoding[subState].addStart();\n };\n\n State128FNC4.prototype.is = function is (value, index) {\n var code = value.charCodeAt(index);\n return this.isCode(code);\n };\n\n State128FNC4.prototype.isCode = function isCode (code) {\n return 128 <= code && code < 256;\n };\n\n State128FNC4.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var subState = this._initSubState(encodingState),\n encoding = this.encoding,\n length = subState.value.length;\n var code;\n\n encodingState.index += length;\n\n if (length < 3) {\n for (; subState.index < length; subState.index++) {\n code = subState.value.charCodeAt(subState.index);\n subState.state = this$1._getSubState(code);\n\n if (subState.previousState !== subState.state) {\n subState.previousState = subState.state;\n encoding[subState.state].move(subState);\n }\n\n encoding.addPattern(encoding[subState.state].MOVE);\n encoding.addPattern(encoding[subState.state].getValue(code));\n }\n } else {\n if (subState.state !== subState.previousState) {\n encoding[subState.state].move(subState);\n }\n\n this._pushStart(subState);\n encoding.pushData(subState, this.subStates);\n\n if (encodingState.index < encodingState.value.length) {\n this._pushStart(subState);\n }\n }\n\n encodingState.fnc = true;\n encodingState.state = subState.state;\n };\n\n State128FNC4.prototype._pushStart = function _pushStart (subState) {\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n };\n\n State128FNC4.prototype._initSubState = function _initSubState (encodingState) {\n var subState = {\n value: this._getAll(encodingState.value, encodingState.index),\n index: 0\n };\n\n subState.state = this._getSubState(subState.value.charCodeAt(0));\n subState.previousState = encodingState.previousState === this.key ?\n subState.state :\n encodingState.previousState;\n\n return subState;\n };\n\n State128FNC4.prototype._initSubStates = function _initSubStates (states) {\n var this$1 = this;\n\n this.subStates = [];\n\n for (var i = 0; i < states.length; i++) {\n if (inArray(states[i], this$1.dependentStates)) {\n this$1.subStates.push(states[i]);\n }\n }\n };\n\n State128FNC4.prototype._getSubState = function _getSubState (code) {\n var this$1 = this;\n\n for (var i = 0; i < this.subStates.length; i++) {\n if (this$1.encoding[this$1.subStates[i]].isCode(code)) {\n return this$1.subStates[i];\n }\n }\n };\n\n State128FNC4.prototype._getAll = function _getAll (value, index) {\n var code;\n var result = \"\";\n var i = index;\n\n while ((code = value.charCodeAt(i++)) && this.isCode(code)) {\n result += String.fromCharCode(code - 128);\n }\n\n return result;\n };\n\n return State128FNC4;\n}(State128));\n\nstates128.FNC1 = (function (State128) {\n function States128FNC1(encoding, states) {\n State128.call(this, encoding);\n this.states = states;\n }\n\n if ( State128 ) States128FNC1.__proto__ = State128;\n States128FNC1.prototype = Object.create( State128 && State128.prototype );\n States128FNC1.prototype.constructor = States128FNC1;\n\n States128FNC1.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"FNC1\",\n startState: \"C\",\n startAI: \"(\",\n endAI: \")\",\n dependentStates: [\"C\", \"B\"],\n applicationIdentifiers: {\n \"22\": { max: 29, type: \"alphanumeric\" },\n \"402\": { length: 17 },\n \"7004\": { max: 4, type: \"alphanumeric\" },\n \"242\": { max: 6, type: \"alphanumeric\" },\n \"8020\": { max: 25, type: \"alphanumeric\" },\n \"703\": { min: 3, max: 30, type: \"alphanumeric\" },\n \"8008\": { min: 8, max: 12, type: \"alphanumeric\" },\n \"253\": { min: 13, max: 17, type: \"alphanumeric\" },\n \"8003\": { min: 14, max: 30, type: \"alphanumeric\" },\n multiKey: [{\n ids: [\"15\", \"17\", \"8005\", \"8100\"],\n ranges: [\n [11, 13],\n [310, 316],\n [320, 336],\n [340, 369]\n ],\n type: { length: 6 }\n }, {\n ids: [\"240\", \"241\", \"250\", \"251\", \"400\", \"401\", \"403\", \"7002\", \"8004\", \"8007\", \"8110\"],\n ranges: [[90 - 99]],\n type: { max: 30, type: \"alphanumeric\" }\n }, {\n ids: [\"7001\"],\n ranges: [[410, 414]],\n type: { length: 13 }\n }, {\n ids: [\"10\", \"21\", \"254\", \"420\", \"8002\"],\n type: { max: 20, type: \"alphanumeric\" }\n }, {\n ids: [\"00\", \"8006\", \"8017\", \"8018\"],\n type: { length: 18 }\n }, {\n ids: [\"01\", \"02\", \"8001\"],\n type: { length: 14 }\n }, {\n ids: [\"422\"],\n ranges: [\n [424, 426]\n ],\n type: { length: 3 }\n }, {\n ids: [\"20\", \"8102\"],\n type: { length: 2 }\n }, {\n ids: [\"30\", \"37\"],\n type: { max: 8, type: \"alphanumeric\" }\n }, {\n ids: [\"390\", \"392\"],\n type: { max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"421\", \"423\"],\n type: { min: 3, max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"391\", \"393\"],\n type: { min: 3, max: 18, type: \"alphanumeric\" }\n }, {\n ids: [\"7003\", \"8101\"],\n type: { length: 10 }\n }]\n },\n START: 102\n });\n };\n\n\n States128FNC1.prototype.addStart = function addStart () {\n this.encoding[this.startState].addStart();\n };\n\n States128FNC1.prototype.is = function is () {\n return inArray(this.key, this.states);\n };\n\n States128FNC1.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var encoding = this.encoding,\n value = encodingState.value.replace(/\\s/g, \"\"),\n regexSeparators = new RegExp(\"[\" + this.startAI + this.endAI + \"]\", \"g\"),\n index = encodingState.index,\n subState = {\n state: this.startState\n },\n current,\n nextStart,\n separatorLength;\n\n encoding.addPattern(this.START);\n\n var trueCondition = true;\n\n while (trueCondition) {\n subState.index = 0;\n\n separatorLength = value.charAt(index) === this$1.startAI ? 2 : 0;\n current = separatorLength > 0 ? this$1.getBySeparator(value, index) : this$1.getByLength(value, index);\n\n if (current.ai.length) {\n nextStart = index + separatorLength + current.id.length + current.ai.length;\n } else {\n nextStart = value.indexOf(this$1.startAI, index + 1);\n\n if (nextStart < 0) {\n if (index + current.ai.max + current.id.length + separatorLength < value.length) {\n throw new Error(\"Separators are required after variable length identifiers\");\n }\n\n nextStart = value.length;\n }\n }\n\n subState.value = value.substring(index, nextStart).replace(regexSeparators, \"\");\n this$1.validate(current, subState.value);\n encoding.pushData(subState, this$1.dependentStates);\n\n if (nextStart >= value.length) {\n break;\n }\n\n index = nextStart;\n\n if (subState.state !== this$1.startState) {\n encoding[this$1.startState].move(subState);\n subState.state = this$1.startState;\n }\n\n if (!current.ai.length) {\n encoding.addPattern(this$1.START);\n }\n }\n\n encodingState.index = encodingState.value.length;\n };\n\n States128FNC1.prototype.validate = function validate (current, value) {\n var code = value.substr(current.id.length),\n ai = current.ai;\n\n if (!ai.type && !numberRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is numeric only but contains non numeric character(s).\");\n }\n\n if (ai.type === \"alphanumeric\" && !alphanumericRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is alphanumeric only but contains non alphanumeric character(s).\");\n }\n\n if (ai.length && ai.length !== code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be \" + ai.length + \" characters long.\");\n }\n\n if (ai.min && ai.min > code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at least \" + ai.min + \" characters long.\");\n }\n\n if (ai.max && ai.max < code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at most \" + ai.max + \" characters long.\");\n }\n };\n\n States128FNC1.prototype.getByLength = function getByLength (value, index) {\n var this$1 = this;\n\n var id;\n var applicationIdentifier;\n\n for (var i = 2; i <= 4; i++) {\n id = getSubstring(value, index, i);\n applicationIdentifier = this$1.getApplicationIdentifier(id) || this$1.getApplicationIdentifier(id.substring(0, id.length - 1));\n if (applicationIdentifier) {\n return {\n id: id,\n ai: applicationIdentifier\n };\n }\n }\n this.unsupportedAIError(id);\n };\n\n States128FNC1.prototype.unsupportedAIError = function unsupportedAIError (id) {\n throw new Error(\"'\" + id + \"' is not a supported Application Identifier\");\n };\n\n States128FNC1.prototype.getBySeparator = function getBySeparator (value, index) {\n var start = value.indexOf(this.startAI, index),\n end = value.indexOf(this.endAI, start),\n id = value.substring(start + 1, end),\n ai = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substr(id.length - 1));\n\n if (!ai) {\n this.unsupportedAIError(id);\n }\n\n return {\n ai: ai,\n id: id\n };\n };\n\n States128FNC1.prototype.getApplicationIdentifier = function getApplicationIdentifier (id) {\n var applicationIdentifier = this.applicationIdentifiers,\n multiKey = applicationIdentifier.multiKey;\n\n if (applicationIdentifier[id]) {\n return applicationIdentifier[id];\n }\n\n for (var i = 0; i < multiKey.length; i++) {\n if (multiKey[i].ids && inArray(id, multiKey[i].ids)) {\n return multiKey[i].type;\n } else if (multiKey[i].ranges) {\n var ranges = multiKey[i].ranges;\n\n for (var j = 0; j < ranges.length; j++) {\n if (ranges[j][0] <= id && id <= ranges[j][1]) {\n return multiKey[i].type;\n }\n }\n }\n }\n };\n\n return States128FNC1;\n}(State128));\n\nexport var Code128Base = (function (Encoding) {\n function Code128Base(options) {\n Encoding.call(this, options);\n this._initStates();\n }\n\n if ( Encoding ) Code128Base.__proto__ = Encoding;\n Code128Base.prototype = Object.create( Encoding && Encoding.prototype );\n Code128Base.prototype.constructor = Code128Base;\n\n Code128Base.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n characterMap: [\n 212222, 222122, 222221, 121223, 121322, 131222, 122213, 122312, 132212, 221213,\n 221312, 231212, 112232, 122132, 122231, 113222, 123122, 123221, 223211, 221132,\n 221231, 213212, 223112, 312131, 311222, 321122, 321221, 312212, 322112, 322211,\n 212123, 212321, 232121, 111323, 131123, 131321, 112313, 132113, 132311, 211313,\n 231113, 231311, 112133, 112331, 132131, 113123, 113321, 133121, 313121, 211331,\n 231131, 213113, 213311, 213131, 311123, 311321, 331121, 312113, 312311, 332111,\n 314111, 221411, 431111, 111224, 111422, 121124, 121421, 141122, 141221, 112214,\n 112412, 122114, 122411, 142112, 142211, 241211, 221114, 413111, 241112, 134111,\n 111242, 121142, 121241, 114212, 124112, 124211, 411212, 421112, 421211, 212141,\n 214121, 412121, 111143, 111341, 131141, 114113, 114311, 411113, 411311, 113141,\n 114131, 311141, 411131, 211412, 211214, 211232, 2331112\n ],\n STOP: 106\n });\n };\n\n Code128Base.prototype._initStates = function _initStates () {\n var this$1 = this;\n\n for (var i = 0; i < this.states.length; i++) {\n this$1[this$1.states[i]] = new states128[this$1.states[i]](this$1, this$1.states);\n }\n };\n\n Code128Base.prototype.initValue = function initValue (value, width, height) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.height = height;\n this.checkSum = 0;\n this.totalUnits = 0;\n this.index = 0;\n this.position = 1;\n };\n\n Code128Base.prototype.addData = function addData () {\n var encodingState = {\n value: this.value,\n index: 0,\n state: \"\"\n };\n\n if (this.value.length === 0) {\n return;\n }\n\n encodingState.state =\n encodingState.previousState = this.getNextState(encodingState, this.states);\n\n this.addStart(encodingState);\n\n this.pushData(encodingState, this.states);\n\n this.addCheckSum();\n this.addStop();\n this.setBaseUnit();\n };\n\n Code128Base.prototype.pushData = function pushData (encodingState, states) {\n var this$1 = this;\n\n var trueCondition = true;\n\n while (trueCondition) {\n this$1[encodingState.state].pushState(encodingState);\n\n if (encodingState.index >= encodingState.value.length) {\n break;\n }\n\n if (!encodingState.shifted) {\n encodingState.previousState = encodingState.state;\n encodingState.state = this$1.getNextState(encodingState, states);\n this$1[encodingState.state].move(encodingState);\n } else {\n var temp = encodingState.state;\n encodingState.state = encodingState.previousState;\n encodingState.previousState = temp;\n encodingState.shifted = false;\n }\n }\n };\n\n Code128Base.prototype.addStart = function addStart (encodingState) {\n this[encodingState.state].addStart(encodingState);\n this.position = 1;\n };\n\n Code128Base.prototype.addCheckSum = function addCheckSum () {\n this.checksum = this.checkSum % 103;\n this.addPattern(this.checksum);\n };\n\n Code128Base.prototype.addStop = function addStop () {\n this.addPattern(this.STOP);\n };\n\n Code128Base.prototype.setBaseUnit = function setBaseUnit () {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n };\n\n Code128Base.prototype.addPattern = function addPattern (code) {\n var this$1 = this;\n\n var pattern = this.characterMap[code].toString();\n var value;\n\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this$1.pattern.push(value);\n this$1.totalUnits += value;\n }\n this.checkSum += code * this.position++;\n };\n\n Code128Base.prototype.getNextState = function getNextState (encodingState, states) {\n var this$1 = this;\n\n for (var i = 0; i < states.length; i++) {\n if (this$1[states[i]].is(encodingState.value, encodingState.index)) {\n return states[i];\n }\n }\n\n this.invalidCharacterError(encodingState.value.charAt(encodingState.index));\n };\n\n return Code128Base;\n}(Encoding));\n\nexport var Code128a = (function (Code128Base) {\n function Code128a () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128a.__proto__ = Code128Base;\n Code128a.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128a.prototype.constructor = Code128a;\n\n Code128a.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128 A\",\n states: [\"A\"]\n });\n };\n\n return Code128a;\n}(Code128Base));\n\nexport var Code128b = (function (Code128Base) {\n function Code128b () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128b.__proto__ = Code128Base;\n Code128b.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128b.prototype.constructor = Code128b;\n\n Code128b.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128 B\",\n states: [\"B\"]\n });\n };\n\n return Code128b;\n}(Code128Base));\n\nexport var Code128c = (function (Code128Base) {\n function Code128c () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128c.__proto__ = Code128Base;\n Code128c.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128c.prototype.constructor = Code128c;\n\n Code128c.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128 C\",\n states: [\"C\"]\n });\n };\n\n return Code128c;\n}(Code128Base));\n\nexport var Code128 = (function (Code128Base) {\n function Code128 () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128.__proto__ = Code128Base;\n Code128.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128.prototype.constructor = Code128;\n\n Code128.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128\",\n states: [\"C\", \"B\", \"A\", \"FNC4\"]\n });\n };\n\n return Code128;\n}(Code128Base));\n\nexport var CodeGS1128 = (function (Code128Base) {\n function CodeGS1128 () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) CodeGS1128.__proto__ = Code128Base;\n CodeGS1128.prototype = Object.create( Code128Base && Code128Base.prototype );\n CodeGS1128.prototype.constructor = CodeGS1128;\n\n CodeGS1128.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code GS1-128\",\n states: [\"FNC1\", \"C\", \"B\"]\n });\n };\n\n return CodeGS1128;\n}(Code128Base));\n\nfunction getSubstring(value, index, count) {\n return value.substring(index, index + count);\n}\n","import { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var MsiBase = (function (Encoding) {\n function MsiBase () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) MsiBase.__proto__ = Encoding;\n MsiBase.prototype = Object.create( Encoding && Encoding.prototype );\n MsiBase.prototype.constructor = MsiBase;\n\n MsiBase.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n characterMap: [\n \"12121212\",\n \"12121221\",\n \"12122112\",\n \"12122121\",\n \"12211212\",\n \"12211221\",\n \"12212112\",\n \"12212121\",\n \"21121212\",\n \"21121221\"\n ],\n START: \"21\",\n STOP: \"121\",\n checkSumType: \"\",\n checkSums: checkSums\n });\n };\n\n MsiBase.prototype.initValue = function initValue (value, width) {\n this.pattern = [];\n this.value = value;\n this.checkSumLength = 0;\n this.width = width;\n };\n\n MsiBase.prototype.setBaseUnit = function setBaseUnit () {\n var startStopLength = 7;\n\n this.baseUnit = this.width /\n (12 * (this.value.length + this.checkSumLength) + this.quietZoneLength + startStopLength);\n };\n\n MsiBase.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addPattern(this.START);\n\n for (var i = 0; i < value.length; i++) {\n this$1.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n };\n\n MsiBase.prototype.addCharacter = function addCharacter (character) {\n var pattern = this.characterMap[character];\n\n if (!pattern) {\n this.invalidCharacterError(character);\n }\n\n this.addPattern(pattern);\n };\n\n MsiBase.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n for (var i = 0; i < pattern.length; i++) {\n this$1.pattern.push(parseInt(pattern.charAt(i), 10));\n }\n };\n\n MsiBase.prototype.addCheckSum = function addCheckSum () {\n var this$1 = this;\n\n var checkSumFunction = this.checkSums[this.checkSumType];\n var checkValues = checkSumFunction.call(this.checkSums, this.value);\n\n this.checksum = checkValues.join(\"\");\n\n for (var i = 0; i < checkValues.length; i++) {\n this$1.checkSumLength++;\n this$1.addPattern(this$1.characterMap[checkValues[i]]);\n }\n };\n\n return MsiBase;\n}(Encoding));\n\nexport var MsiMod10 = (function (MsiBase) {\n function MsiMod10 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod10.__proto__ = MsiBase;\n MsiMod10.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod10.prototype.constructor = MsiMod10;\n\n MsiMod10.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo10\",\n checkSumType: \"Modulo10\"\n });\n };\n\n return MsiMod10;\n}(MsiBase));\n\nexport var MsiMod11 = (function (MsiBase) {\n function MsiMod11 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod11.__proto__ = MsiBase;\n MsiMod11.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod11.prototype.constructor = MsiMod11;\n\n MsiMod11.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo11\",\n checkSumType: \"Modulo11\"\n });\n };\n\n return MsiMod11;\n}(MsiBase));\n\nexport var MsiMod1010 = (function (MsiBase) {\n function MsiMod1010 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod1010.__proto__ = MsiBase;\n MsiMod1010.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod1010.prototype.constructor = MsiMod1010;\n\n MsiMod1010.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo10 Modulo10\",\n checkSumType: \"Modulo10Modulo10\"\n });\n };\n\n return MsiMod1010;\n}(MsiBase));\n\nexport var MsiMod1110 = (function (MsiBase) {\n function MsiMod1110 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod1110.__proto__ = MsiBase;\n MsiMod1110.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod1110.prototype.constructor = MsiMod1110;\n\n MsiMod1110.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo11 Modulo10\",\n checkSumType: \"Modulo11Modulo10\"\n });\n };\n\n return MsiMod1110;\n}(MsiBase));\n\nvar checkSums = {\n Modulo10: function Modulo10(value) {\n var checkValues = [0, \"\"],\n odd = value.length % 2,\n idx,\n evenSum,\n oddSum;\n\n for (idx = 0; idx < value.length; idx++) {\n checkValues[(idx + odd) % 2] += parseInt(value.charAt(idx), 10);\n }\n\n oddSum = checkValues[0];\n evenSum = (checkValues[1] * 2).toString();\n\n for (idx = 0; idx < evenSum.length; idx++) {\n oddSum += parseInt(evenSum.charAt(idx), 10);\n }\n\n return [(10 - (oddSum % 10)) % 10];\n },\n Modulo11: function Modulo11(value) {\n var weightedSum = 0,\n mod = 11,\n length = value.length,\n weight,\n checkValue;\n\n for (var i = 0; i < length; i++) {\n weight = ((length - i) % 6 || 6) + 1;\n weightedSum += weight * value.charAt(i);\n }\n\n checkValue = (mod - weightedSum % mod) % mod;\n\n if (checkValue !== 10) {\n return [checkValue];\n }\n\n return [1, 0];\n },\n Modulo11Modulo10: function Modulo11Modulo10(value) {\n var checkValues = this.Modulo11(value),\n mod11Value;\n mod11Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod11Value));\n },\n Modulo10Modulo10: function Modulo10Modulo10(value) {\n var checkValues = this.Modulo10(value),\n mod10Value;\n mod10Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod10Value));\n }\n};\n","import { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var Ean13 = (function (Encoding) {\n function Ean13 () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Ean13.__proto__ = Encoding;\n Ean13.prototype = Object.create( Encoding && Encoding.prototype );\n Ean13.prototype.constructor = Ean13;\n\n Ean13.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"EAN 13\",\n keyTable: [\n '000000',\n '001011',\n '001101',\n '001110',\n '010011',\n '011001',\n '011100',\n '010101',\n '010110',\n '011010'\n ],\n characterMap: {\n digits: [\n [3, 2, 1, 1],\n [2, 2, 2, 1],\n [2, 1, 2, 2],\n [1, 4, 1, 1],\n [1, 1, 3, 2],\n [1, 2, 3, 1],\n [1, 1, 1, 4],\n [1, 3, 1, 2],\n [1, 2, 1, 3],\n [3, 1, 1, 2]\n ],\n start: [1, 1, 1],\n middle: [1, 1, 1, 1, 1]\n }\n });\n };\n\n Ean13.prototype.initValue = function initValue (value, width, height) {\n var valueAsString = String(value);\n\n if (valueAsString.length !== 12 || /\\D/.test(valueAsString)) {\n throw new Error('The value of the \"EAN13\" encoding should be 12 symbols');\n }\n\n this.pattern = [];\n this.options.height = height;\n this.baseUnit = width / (95 + this.quietZoneLength);\n this.value = valueAsString;\n this.checksum = this.calculateChecksum();\n this.leftKey = valueAsString[0];\n this.leftPart = valueAsString.substr(1, 6);\n this.rightPart = valueAsString.substr(7) + this.checksum;\n };\n\n Ean13.prototype.addData = function addData () {\n this.addPieces(this.characterMap.start);\n this.addSide(this.leftPart, this.leftKey);\n this.addPieces(this.characterMap.middle);\n this.addSide(this.rightPart);\n this.addPieces(this.characterMap.start);\n };\n\n Ean13.prototype.addSide = function addSide (leftPart, key) {\n var this$1 = this;\n\n for (var i = 0; i < leftPart.length; i++) {\n if (key && parseInt(this$1.keyTable[key].charAt(i), 10)) {\n this$1.addPieces(Array.prototype.slice.call(this$1.characterMap.digits[leftPart.charAt(i)]).reverse(), true);\n } else {\n this$1.addPieces(this$1.characterMap.digits[leftPart.charAt(i)], true);\n }\n }\n };\n\n Ean13.prototype.addPieces = function addPieces (arrToAdd, limitedHeight) {\n var this$1 = this;\n\n for (var i = 0; i < arrToAdd.length; i++) {\n if (limitedHeight) {\n this$1.pattern.push({\n y1: 0,\n y2: this$1.options.height * 0.95,\n width: arrToAdd[i]\n });\n } else {\n this$1.pattern.push(arrToAdd[i]);\n }\n }\n };\n\n Ean13.prototype.calculateChecksum = function calculateChecksum () {\n var odd = 0,\n even = 0,\n value = this.value.split(\"\").reverse().join(\"\");\n\n for (var i = 0; i < value.length; i++) {\n if (i % 2) {\n even += parseInt(value.charAt(i), 10);\n } else {\n odd += parseInt(value.charAt(i), 10);\n }\n }\n\n var checksum = (10 - ((3 * odd + even) % 10)) % 10;\n\n return checksum;\n };\n\n return Ean13;\n}(Encoding));\n","import { Ean13 } from './ean13';\n\nvar extend = Object.assign;\n\nexport var Ean8 = (function (Ean13) {\n function Ean8 () {\n Ean13.apply(this, arguments);\n }\n\n if ( Ean13 ) Ean8.__proto__ = Ean13;\n Ean8.prototype = Object.create( Ean13 && Ean13.prototype );\n Ean8.prototype.constructor = Ean8;\n\n Ean8.prototype.initProperties = function initProperties () {\n Ean13.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"EAN 8\"\n });\n };\n\n Ean8.prototype.initValue = function initValue (value, width, height) {\n if (value.length !== 7 || /\\D/.test(value)) {\n throw new Error('Invalid value provided');\n }\n\n this.value = value;\n this.options.height = height;\n this.checksum = this.calculateChecksum(this.value);\n this.leftPart = this.value.substr(0, 4);\n this.rightPart = this.value.substr(4) + this.checksum;\n this.pattern = [];\n this.baseUnit = width / (67 + this.quietZoneLength);\n };\n\n return Ean8;\n}(Ean13));\n","import { Code11 } from './code11';\nimport { Code39 } from './code39';\nimport { Code39Extended } from './code39-extended';\nimport { Code93 } from './code93';\nimport { Code93Extended } from './code93-extended';\nimport { Postnet } from './postnet';\n\nimport {\n Code128,\n Code128a,\n Code128b,\n Code128c,\n CodeGS1128\n} from './code128';\n\nimport {\n MsiMod10,\n MsiMod11,\n MsiMod1010,\n MsiMod1110\n} from './msi';\n\nimport { Ean8 } from './ean8';\nimport { Ean13 } from './ean13';\n\nexport var Encodings = {\n code11: Code11,\n\n code39: Code39,\n code39extended: Code39Extended,\n\n code93: Code93,\n code93extended: Code93Extended,\n\n code128: Code128,\n code128a: Code128a,\n code128b: Code128b,\n code128c: Code128c\n};\nEncodings[\"gs1-128\"] = CodeGS1128;\nEncodings.msimod10 = MsiMod10;\nEncodings.msimod11 = MsiMod11;\nEncodings.msimod1010 = MsiMod1010;\nEncodings.msimod1110 = MsiMod1110;\nEncodings.postnet = Postnet;\nEncodings.ean8 = Ean8;\nEncodings.ean13 = Ean13;\n","export function surfaceSize(element, surfaceType) {\n var display = element.style.display;\n if (surfaceType === 'canvas') {\n // The Canvas default size is different from SVG for\n // inline-block containers such as the Barcode and QR Code.\n //\n // Switch to display: block to get same dimensions.\n element.style.display = 'block';\n }\n\n var size = {\n width: element.clientWidth,\n height: element.clientHeight\n };\n\n element.style.display = display;\n\n return size;\n}\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n addClass,\n setDefaultOptions,\n deepExtend,\n getSpacing,\n isObject,\n defaultErrorHandler\n} from '../common';\n\nimport {\n Box,\n TextBox\n} from '../core';\n\nimport { Encodings } from './encodings/main';\nimport { surfaceSize } from './surface-size';\n\nvar DEFAULT_BARCODE_WIDTH = 300;\nvar DEFAULT_BARCODE_HEIGHT = 100;\n\nvar Barcode = (function (Class) {\n function Barcode(element, options, errorHandler) {\n if ( errorHandler === void 0 ) errorHandler = defaultErrorHandler;\n\n Class.call(this);\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n this._setOptions(options);\n\n if (options && defined(options.value)) {\n this.redraw();\n }\n }\n\n if ( Class ) Barcode.__proto__ = Class;\n Barcode.prototype = Object.create( Class && Class.prototype );\n Barcode.prototype.constructor = Barcode;\n\n Barcode.prototype.destroy = function destroy () {\n this._destroySurface();\n };\n\n Barcode.prototype._initElement = function _initElement () {\n addClass(this.element, \"k-barcode\");\n };\n\n Barcode.prototype._initSurface = function _initSurface () {\n var ref = this;\n var options = ref.options;\n var surface = ref.surface;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n };\n\n Barcode.prototype._createSurface = function _createSurface () {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n };\n\n Barcode.prototype._destroySurface = function _destroySurface () {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n };\n\n Barcode.prototype._initSurfaceElement = function _initSurfaceElement () {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = 'relative';\n this.element.appendChild(this.surfaceElement);\n }\n };\n\n Barcode.prototype._destroySurfaceElement = function _destroySurfaceElement () {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n };\n\n Barcode.prototype.setOptions = function setOptions (options) {\n this._setOptions(options);\n this._initSurface();\n this.redraw();\n };\n\n Barcode.prototype.redraw = function redraw () {\n var size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size.width,\n height: size.height\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n };\n\n Barcode.prototype.getSize = function getSize () {\n return {\n width: this.element.offsetWidth,\n height: this.element.offsetHeight\n };\n };\n\n Barcode.prototype._resize = function _resize () {\n this.redraw();\n };\n\n Barcode.prototype.createVisual = function createVisual () {\n this.visual = this._render();\n };\n\n Barcode.prototype._render = function _render () {\n var options = this.options;\n var value = options.value;\n var textOptions = options.text;\n var textMargin = getSpacing(textOptions.margin);\n var size = this._getSize();\n var border = options.border || {};\n var encoding = this.encoding;\n var contentBox = new Box(0, 0, size.width, size.height).unpad(border.width).unpad(options.padding);\n var barHeight = contentBox.height();\n var encodedValue;\n var textToDisplay;\n var textHeight;\n var visual = new draw.Group();\n\n this.contentBox = contentBox;\n visual.append(this._getBackground(size));\n\n if (textOptions.visible) {\n textHeight = draw.util.measureText(value, { font: textOptions.font }).height;\n barHeight -= textHeight + textMargin.top + textMargin.bottom;\n }\n\n try {\n encodedValue = encoding.encode(value, contentBox.width(), barHeight);\n } catch (error) {\n this.onError(error);\n return visual;\n }\n\n if (textOptions.visible) {\n textToDisplay = value;\n\n if (options.checksum && defined(encoding.checksum)) {\n textToDisplay += \" \" + encoding.checksum;\n }\n\n visual.append(this._getText(textToDisplay));\n }\n\n this.barHeight = barHeight;\n this._bandsGroup = this._getBands(encodedValue.pattern, encodedValue.baseUnit);\n visual.append(this._bandsGroup);\n\n return visual;\n };\n\n Barcode.prototype.exportVisual = function exportVisual () {\n return this._render();\n };\n\n Barcode.prototype._getSize = function _getSize () {\n var element = this.element;\n var elementSize = surfaceSize(element, this.options.renderAs);\n var size = new geom.Size(DEFAULT_BARCODE_WIDTH, DEFAULT_BARCODE_HEIGHT);\n\n if (elementSize.width > 0) {\n size.width = elementSize.width;\n }\n\n if (elementSize.height > 0) {\n size.height = elementSize.height;\n }\n\n if (this.options.width) {\n size.width = this.options.width;\n }\n\n if (this.options.height) {\n size.height = this.options.height;\n }\n\n return size;\n };\n\n Barcode.prototype.value = function value (value$1) {\n if (!defined(value$1)) {\n return this.options.value;\n }\n\n this.options.value = String(value$1);\n this.redraw();\n };\n\n Barcode.prototype._getBands = function _getBands (pattern, baseUnit) {\n var this$1 = this;\n\n var contentBox = this.contentBox;\n var offsetX = contentBox.x1;\n var stepX;\n var patternItem;\n var group = new draw.Group();\n\n for (var i = 0; i < pattern.length; i++) {\n patternItem = isObject(pattern[i]) ? pattern[i] : {\n width: pattern[i],\n y1: 0,\n y2: this$1.barHeight\n };\n\n stepX = patternItem.width * baseUnit;\n\n if (i % 2) {\n var rect = geom.Rect.fromPoints(\n new geom.Point(offsetX, patternItem.y1 + contentBox.y1),\n new geom.Point(offsetX + stepX, patternItem.y2 + contentBox.y1)\n );\n\n var path = draw.Path.fromRect(rect, {\n fill: {\n color: this$1.options.color\n },\n stroke: null\n });\n\n group.append(path);\n }\n\n offsetX += stepX;\n }\n\n return group;\n };\n\n Barcode.prototype._getBackground = function _getBackground (size) {\n var options = this.options;\n var border = options.border || {};\n var box = new Box(0, 0, size.width, size.height).unpad(border.width / 2);\n var path = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: options.background\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n\n return path;\n };\n\n Barcode.prototype._getText = function _getText (value) {\n var textOptions = this.options.text;\n var text = this._textbox = new TextBox(value, {\n font: textOptions.font,\n color: textOptions.color,\n align: \"center\",\n vAlign: \"bottom\",\n margin: textOptions.margin\n });\n\n text.reflow(this.contentBox);\n text.renderVisual();\n\n return text.visual;\n };\n\n Barcode.prototype._setOptions = function _setOptions (options) {\n this.type = (options.type || this.options.type).toLowerCase();\n\n if (this.type === \"upca\") {\n this.type = \"ean13\";\n options.value = '0' + options.value;\n }\n\n if (this.type === \"upce\") {\n this.type = \"ean8\";\n options.value = '0' + options.value;\n }\n\n if (!Encodings[this.type]) {\n throw new Error((\"Encoding '\" + (this.type) + \"' is not supported.\"));\n }\n\n this.encoding = new Encodings[this.type]();\n\n this.options = deepExtend({}, this.options, options);\n };\n\n return Barcode;\n}(Class));\n\nsetDefaultOptions(Barcode, {\n name: \"Barcode\",\n renderAs: \"svg\",\n value: \"\",\n type: \"code39\",\n checksum: false,\n width: 0,\n height: 0,\n color: \"black\",\n background: \"white\",\n text: {\n visible: true,\n font: \"16px Consolas, Monaco, Sans Mono, monospace, sans-serif\",\n color: \"black\",\n margin: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n },\n border: {\n width: 0,\n dashType: \"solid\",\n color: \"black\"\n },\n padding: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n});\n\nexport default Barcode;\n","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\n\nvar Image = (function (superclass) {\n function Image(src, rect, options) {\n if ( rect === void 0 ) rect = new Rect();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.src(src);\n this.rect(rect);\n }\n\n if ( superclass ) Image.__proto__ = superclass;\n Image.prototype = Object.create( superclass && superclass.prototype );\n Image.prototype.constructor = Image;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Image\";\n };\n\n Image.prototype.src = function src (value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n };\n\n Image.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n };\n\n Image.prototype.rawBBox = function rawBBox () {\n return this._rect.bbox();\n };\n\n Image.prototype._containsPoint = function _containsPoint (point) {\n return this._rect.containsPoint(point);\n };\n\n Image.prototype._hasFill = function _hasFill () {\n return this.src();\n };\n\n Object.defineProperties( Image.prototype, prototypeAccessors );\n\n return Image;\n}(withGeometry(Element, [ \"rect\" ])));\n\nexport default Image;","export var extend = Object.assign;\n\nexport function splitInto(str, chunkLength) {\n var result = [];\n var idx = 0;\n\n while (idx < str.length) {\n result.push(str.substring(idx, idx + chunkLength));\n idx += chunkLength;\n }\n\n return result;\n}\n\nexport function toBitsString(value, length) {\n var bitString = Number(value).toString(2);\n\n if (bitString.length < length) {\n bitString = new Array(length - bitString.length + 1).join(0) + bitString;\n }\n\n return bitString;\n}\n\nexport function toDecimal(value) {\n return parseInt(value, 2);\n}\n\n","import { Class } from '../../common';\n\nexport var FreeCellVisitor = (function (Class) {\n function FreeCellVisitor(matrix) {\n Class.call(this);\n\n this.matrix = matrix;\n this.row = matrix.length - 1;\n this.column = matrix.length - 1;\n this.startColumn = this.column;\n this.dir = -1;\n this.c = 0;\n }\n\n if ( Class ) FreeCellVisitor.__proto__ = Class;\n FreeCellVisitor.prototype = Object.create( Class && Class.prototype );\n FreeCellVisitor.prototype.constructor = FreeCellVisitor;\n\n FreeCellVisitor.prototype.move = function move () {\n this.row += this.dir * this.c;\n this.c ^= 1;\n this.column = this.startColumn - this.c;\n };\n\n FreeCellVisitor.prototype.getNextCell = function getNextCell () {\n var this$1 = this;\n\n while (this.matrix[this.row][this.column] !== undefined) {\n this$1.move();\n\n if (this$1.row < 0 || this$1.row >= this$1.matrix.length) {\n this$1.dir = -this$1.dir;\n this$1.startColumn -= this$1.startColumn !== 8 ? 2 : 3;\n this$1.column = this$1.startColumn;\n this$1.row = this$1.dir < 0 ? this$1.matrix.length - 1 : 0;\n }\n }\n\n return {\n row: this.row,\n column: this.column\n };\n };\n\n FreeCellVisitor.prototype.getNextRemainderCell = function getNextRemainderCell () {\n this.move();\n\n if (this.matrix[this.row][this.column] === undefined) {\n return {\n row: this.row,\n column: this.column\n };\n }\n };\n\n return FreeCellVisitor;\n}(Class));\n","import { Class } from '../../common';\n\nexport var EncodingResult = (function (Class) {\n function EncodingResult(dataString, version) {\n Class.call(this);\n\n this.dataString = dataString;\n this.version = version;\n }\n\n if ( Class ) EncodingResult.__proto__ = Class;\n EncodingResult.prototype = Object.create( Class && Class.prototype );\n EncodingResult.prototype.constructor = EncodingResult;\n\n return EncodingResult;\n}(Class));\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport {\n getModes,\n getVersion,\n getDataCodewordsCount,\n getDataString\n} from '../encoding';\n\nexport var IsoEncoder = (function (Class) {\n function IsoEncoder () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) IsoEncoder.__proto__ = Class;\n IsoEncoder.prototype = Object.create( Class && Class.prototype );\n IsoEncoder.prototype.constructor = IsoEncoder;\n\n IsoEncoder.prototype.getEncodingResult = function getEncodingResult (inputString, errorCorrectionLevel) {\n var modes = getModes(inputString),\n dataCodewordsCount = getDataCodewordsCount(modes),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = getDataString(modes, version);\n\n return new EncodingResult(dataString, version);\n };\n\n return IsoEncoder;\n}(Class));\n","import {\n toBitsString,\n toDecimal\n} from '../utils';\nimport { FreeCellVisitor } from './free-cell-visitor';\nimport { IsoEncoder } from './encoders/iso-encoder';\nimport { Utf8Encoder } from './encoders/utf8-encoder';\nimport { VersionsCodewordsInformation } from './version-codewords';\nimport { DataModeInstances } from './data-modes/data-mode-instances';\n\nvar terminator = \"0000\",\n NUMERIC = \"numeric\",\n ALPHA_NUMERIC = \"alphanumeric\",\n BYTE = \"byte\",\n powersOfTwo = { \"1\": 0 },\n powersOfTwoResult = { \"0\": 1 },\n irregularAlignmentPatternsStartDistance = {\n 15: 20, 16: 20, 18: 24, 19: 24, 22: 20,\n 24: 22, 26: 24, 28: 20, 30: 20, 31: 24,\n 32: 28, 33: 24, 36: 18, 37: 22, 39: 20, 40: 24\n },\n finderPattern = [1, 0, 1, 1, 1],\n alignmentPattern = [1, 0, 1],\n errorCorrectionPatterns = { L: \"01\", M: \"00\", Q: \"11\", H: \"10\" },\n formatMaskPattern = \"101010000010010\",\n formatGeneratorPolynomial = \"10100110111\",\n versionGeneratorPolynomial = \"1111100100101\",\n paddingCodewords = [\"11101100\", \"00010001\"],\n finderPatternValue = 93,\n /* eslint-disable arrow-body-style */\n /* eslint-disable no-unused-vars */\n maskPatternConditions = [\n function (row, column) { return (row + column) % 2 === 0; },\n function (row, column) { return row % 2 === 0; },\n function (row, column) { return column % 3 === 0; },\n function (row, column) { return (row + column) % 3 === 0; },\n function (row, column) { return (Math.floor(row / 2) + Math.floor(column / 3)) % 2 === 0; },\n function (row, column) { return ((row * column) % 2) + ((row * column) % 3) === 0; },\n function (row, column) { return (((row * column) % 2) + ((row * column) % 3)) % 2 === 0; },\n function (row, column) { return (((row + column) % 2) + ((row * column) % 3)) % 2 === 0; }\n ],\n /* eslint-enable no-unused-vars */\n /* eslint-enable arrow-body-style */\n numberRegex = /^\\d+/,\n alphaPattern = \"A-Z0-9 $%*+./:-\",\n alphaExclusiveSet = \"A-Z $%*+./:-\",\n alphaRegex = new RegExp(\"^[\" + alphaExclusiveSet + \"]+\"),\n alphaNumericRegex = new RegExp(\"^[\" + alphaPattern + \"]+\"),\n byteRegex = new RegExp(\"^[^\" + alphaPattern + \"]+\"),\n initMinNumericBeforeAlpha = 8,\n initMinNumericBeforeByte = 5,\n initMinAlphaBeforeByte = 8,\n minNumericBeforeAlpha = 17,\n minNumericBeforeByte = 9,\n minAlphaBeforeByte = 16;\n\nexport var generatorPolynomials = [[1, 0], [1, 25, 0]];\n\nexport function fillFunctionCell(matrices, bit, x, y) {\n for (var i = 0; i < matrices.length; i++) {\n matrices[i][x][y] = bit;\n }\n}\n\nexport function fillDataCell(matrices, bit, x, y) {\n for (var i = 0; i < maskPatternConditions.length; i++) {\n matrices[i][x][y] = maskPatternConditions[i](x, y) ? bit ^ 1 : parseInt(bit, 10);\n }\n}\n\nexport function fillData(matrices, blocks) {\n var cellVisitor = new FreeCellVisitor(matrices[0]),\n block,\n codewordIdx,\n cell;\n\n for (var blockIdx = 0; blockIdx < blocks.length; blockIdx++) {\n block = blocks[blockIdx];\n codewordIdx = 0;\n\n while (block.length > 0) {\n for (var i = 0; i < block.length; i++) {\n for (var j = 0; j < 8; j++) {\n cell = cellVisitor.getNextCell();\n fillDataCell(matrices, block[i][codewordIdx].charAt(j), cell.row, cell.column);\n }\n }\n\n codewordIdx++;\n\n while (block[0] && codewordIdx === block[0].length) {\n block.splice(0, 1);\n }\n }\n }\n\n while ((cell = cellVisitor.getNextRemainderCell())) {\n fillDataCell(matrices, 0, cell.row, cell.column);\n }\n}\n\nexport function padDataString(initialDataString, totalDataCodewords) {\n var dataBitsCount = totalDataCodewords * 8,\n terminatorIndex = 0,\n paddingCodewordIndex = 0;\n var dataString = initialDataString;\n\n while (dataString.length < dataBitsCount && terminatorIndex < terminator.length) {\n dataString += terminator.charAt(terminatorIndex++);\n }\n\n if (dataString.length % 8 !== 0) {\n dataString += new Array(9 - dataString.length % 8).join(\"0\");\n }\n\n while (dataString.length < dataBitsCount) {\n dataString += paddingCodewords[paddingCodewordIndex];\n paddingCodewordIndex ^= 1;\n }\n\n return dataString;\n}\n\nexport function generatePowersOfTwo() {\n var result;\n var power;\n\n for (power = 1; power < 255; power++) {\n result = powersOfTwoResult[power - 1] * 2;\n if (result > 255) {\n result = result ^ 285;\n }\n\n powersOfTwoResult[power] = result;\n powersOfTwo[result] = power;\n }\n\n result = (powersOfTwoResult[power - 1] * 2) ^ 285;\n powersOfTwoResult[power] = result;\n powersOfTwoResult[-1] = 0;\n}\n\nexport function xorPolynomials(x, y) {\n var result = [],\n idx = x.length - 2;\n\n for (var i = idx; i >= 0; i--) {\n result[i] = x[i] ^ y[i];\n }\n\n return result;\n}\n\nexport function multiplyPolynomials(x, y) {\n var result = [];\n\n for (var i = 0; i < x.length; i++) {\n for (var j = 0; j < y.length; j++) {\n if (result[i + j] === undefined) {\n result[i + j] = (x[i] + (y[j] >= 0 ? y[j] : 0)) % 255;\n } else {\n result[i + j] = powersOfTwo[powersOfTwoResult[result[i + j]] ^ powersOfTwoResult[(x[i] + y[j]) % 255]];\n }\n }\n }\n\n return result;\n}\n\nexport function generateGeneratorPolynomials() {\n var maxErrorCorrectionCodeWordsCount = 68;\n\n for (var idx = 2; idx <= maxErrorCorrectionCodeWordsCount; idx++) {\n var firstPolynomial = generatorPolynomials[idx - 1],\n secondPolynomial = [idx, 0];\n\n generatorPolynomials[idx] = multiplyPolynomials(firstPolynomial, secondPolynomial);\n }\n}\n\n//possibly generate on demand\ngeneratePowersOfTwo();\ngenerateGeneratorPolynomials();\n\nexport function multiplyByConstant(polynomial, power) {\n var result = [],\n idx = polynomial.length - 1;\n\n do {\n result[idx] = powersOfTwoResult[(polynomial[idx] + power) % 255];\n idx--;\n }\n while (polynomial[idx] !== undefined);\n\n return result;\n}\n\nexport function generateErrorCodewords(data, errorCodewordsCount) {\n var generator = generatorPolynomials[errorCodewordsCount - 1],\n result = new Array(errorCodewordsCount).concat(data),\n generatorPolynomial = new Array(result.length - generator.length).concat(generator),\n steps = data.length,\n errorCodewords = [],\n divisor,\n idx;\n\n for (idx = 0; idx < steps; idx++) {\n divisor = multiplyByConstant(generatorPolynomial, powersOfTwo[result[result.length - 1]]);\n generatorPolynomial.splice(0, 1);\n\n result = xorPolynomials(divisor, result);\n }\n\n for (idx = result.length - 1; idx >= 0; idx--) {\n errorCodewords[errorCodewordsCount - 1 - idx] = toBitsString(result[idx], 8);\n }\n\n return errorCodewords;\n}\n\nexport function getBlocks(dataStream, versionCodewordsInformation) {\n var codewordStart = 0,\n dataBlocks = [],\n errorBlocks = [],\n dataBlock,\n versionGroups = versionCodewordsInformation.groups,\n blockCodewordsCount,\n groupBlocksCount,\n messagePolynomial,\n codeword;\n\n for (var groupIdx = 0; groupIdx < versionGroups.length; groupIdx++) {\n groupBlocksCount = versionGroups[groupIdx][0];\n\n for (var blockIdx = 0; blockIdx < groupBlocksCount; blockIdx++) {\n blockCodewordsCount = versionGroups[groupIdx][1];\n dataBlock = [];\n messagePolynomial = [];\n\n for (var codewordIdx = 1; codewordIdx <= blockCodewordsCount; codewordIdx++) {\n codeword = dataStream.substring(codewordStart, codewordStart + 8);\n dataBlock.push(codeword);\n messagePolynomial[blockCodewordsCount - codewordIdx] = toDecimal(codeword);\n codewordStart += 8;\n }\n\n dataBlocks.push(dataBlock);\n errorBlocks.push(generateErrorCodewords(messagePolynomial,\n versionCodewordsInformation.errorCodewordsPerBlock));\n }\n }\n return [dataBlocks, errorBlocks];\n}\n\nexport function chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode) {\n var numeric = numberRegex.exec(str),\n numericMatch = numeric ? numeric[0] : \"\",\n alpha = alphaRegex.exec(str),\n alphaMatch = alpha ? alpha[0] : \"\",\n alphaNumeric = alphaNumericRegex.exec(str),\n alphaNumericMatch = alphaNumeric ? alphaNumeric[0] : \"\",\n mode,\n modeString;\n\n if (numericMatch &&\n (numericMatch.length >= minNumericBeforeAlpha || str.length === numericMatch.length ||\n (numericMatch.length >= minNumericBeforeByte && !alphaNumericRegex.test(str.charAt(numericMatch.length))))) {\n mode = NUMERIC;\n modeString = numericMatch;\n } else if (alphaNumericMatch && (str.length === alphaNumericMatch.length ||\n alphaNumericMatch.length >= minAlphaBeforeByte || previousMode === ALPHA_NUMERIC)) {\n mode = ALPHA_NUMERIC;\n modeString = numericMatch || alphaMatch;\n } else {\n mode = BYTE;\n\n if (alphaNumericMatch) {\n modeString = alphaNumericMatch + byteRegex.exec(str.substring(alphaNumericMatch.length))[0];\n } else {\n modeString = byteRegex.exec(str)[0];\n }\n }\n\n return {\n mode: mode,\n modeString: modeString\n };\n}\n\nexport function getModes(inputString) {\n var modes = [],\n previousMode,\n idx = 0;\n var str = inputString;\n\n modes.push(chooseMode(str, initMinNumericBeforeAlpha, initMinNumericBeforeByte, initMinAlphaBeforeByte, previousMode));\n previousMode = modes[0].mode;\n str = str.substr(modes[0].modeString.length);\n\n while (str.length > 0) {\n var nextMode = chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode);\n\n if (nextMode.mode !== previousMode) {\n previousMode = nextMode.mode;\n modes.push(nextMode);\n idx++;\n } else {\n modes[idx].modeString += nextMode.modeString;\n }\n\n str = str.substr(nextMode.modeString.length);\n }\n\n return modes;\n}\n\nexport function getDataCodewordsCount(modes) {\n var length = 0,\n mode;\n\n for (var i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n length += mode.getStringBitsLength(modes[i].modeString.length);\n }\n\n return Math.ceil(length / 8);\n}\n\nexport function getVersion(dataCodewordsCount, errorCorrectionLevel) {\n var x = 0,\n y = VersionsCodewordsInformation.length - 1,\n version = Math.floor(VersionsCodewordsInformation.length / 2);\n\n do {\n if (dataCodewordsCount < VersionsCodewordsInformation[version][errorCorrectionLevel].totalDataCodewords) {\n y = version;\n } else {\n x = version;\n }\n\n version = x + Math.floor((y - x) / 2);\n } while (y - x > 1);\n\n if (dataCodewordsCount <= VersionsCodewordsInformation[x][errorCorrectionLevel].totalDataCodewords) {\n return version + 1;\n }\n\n return y + 1;\n}\n\nexport function getDataString(modes, version) {\n var dataString = \"\",\n mode;\n\n for (var i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n dataString += mode.encode(modes[i].modeString, version);\n }\n\n return dataString;\n}\n\n//fix case all zeros\nexport function encodeFormatInformation(format) {\n var formatNumber = toDecimal(format),\n encodedString,\n result = \"\";\n\n if (formatNumber === 0) {\n return \"101010000010010\";\n }\n\n encodedString = encodeBCH(toDecimal(format), formatGeneratorPolynomial, 15);\n\n for (var i = 0; i < encodedString.length; i++) {\n result += encodedString.charAt(i) ^ formatMaskPattern.charAt(i);\n }\n\n return result;\n}\n\nexport function encodeBCH(value, generatorPolynomial, codeLength) {\n var generatorNumber = toDecimal(generatorPolynomial),\n polynomialLength = generatorPolynomial.length - 1,\n valueNumber = value << polynomialLength,\n length = codeLength - polynomialLength,\n valueString = toBitsString(value, length),\n result = dividePolynomials(valueNumber, generatorNumber);\n\n result = valueString + toBitsString(result, polynomialLength);\n\n return result;\n}\n\nexport function dividePolynomials(numberX, numberY) {\n var yLength = numberY.toString(2).length,\n xLength = numberX.toString(2).length;\n var x = numberX;\n\n do {\n x ^= numberY << xLength - yLength;\n xLength = x.toString(2).length;\n }\n while (xLength >= yLength);\n\n return x;\n}\n\nexport function getNumberAt(str, idx) {\n return parseInt(str.charAt(idx), 10);\n}\n\nexport function initMatrices(version) {\n var matrices = [],\n modules = 17 + 4 * version;\n\n for (var i = 0; i < maskPatternConditions.length; i++) {\n matrices[i] = new Array(modules);\n\n for (var j = 0; j < modules; j++) {\n matrices[i][j] = new Array(modules);\n }\n }\n\n return matrices;\n}\n\nexport function addFormatInformation(matrices, formatString) {\n var matrix = matrices[0],\n x,\n y,\n idx = 0,\n length = formatString.length;\n\n for (x = 0, y = 8; x <= 8; x++) {\n if (x !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n for (x = 8, y = 7; y >= 0; y--) {\n if (y !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n idx = 0;\n\n for (y = matrix.length - 1, x = 8; y >= matrix.length - 8; y--) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n\n fillFunctionCell(matrices, 1, matrix.length - 8, 8);\n\n for (x = matrix.length - 7, y = 8; x < matrix.length; x++) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n}\n\nexport function encodeVersionInformation(version) {\n return encodeBCH(version, versionGeneratorPolynomial, 18);\n}\n\nexport function addVersionInformation(matrices, dataString) {\n var matrix = matrices[0],\n modules = matrix.length,\n x1 = 0,\n y1 = modules - 11,\n x2 = modules - 11,\n y2 = 0,\n quotient,\n mod,\n value;\n\n for (var idx = 0; idx < dataString.length; idx++) {\n quotient = Math.floor(idx / 3);\n mod = idx % 3;\n value = getNumberAt(dataString, dataString.length - idx - 1);\n\n fillFunctionCell(matrices, value, x1 + quotient, y1 + mod);\n fillFunctionCell(matrices, value, x2 + mod, y2 + quotient);\n }\n}\n\nexport function addCentricPattern(matrices, pattern, x, y) {\n var size = pattern.length + 2,\n length = pattern.length + 1,\n value;\n\n for (var i = 0; i < pattern.length; i++) {\n for (var j = i; j < size - i; j++) {\n value = pattern[i];\n\n fillFunctionCell(matrices, value, x + j, y + i);\n fillFunctionCell(matrices, value, x + i, y + j);\n fillFunctionCell(matrices, value, x + length - j, y + length - i);\n fillFunctionCell(matrices, value, x + length - i, y + length - j);\n }\n }\n}\n\nexport function addFinderSeparator(matrices, direction, x, y) {\n var nextX = x,\n nextY = y,\n matrix = matrices[0];\n\n do {\n fillFunctionCell(matrices, 0, nextX, y);\n fillFunctionCell(matrices, 0, x, nextY);\n nextX += direction[0];\n nextY += direction[1];\n }\n while (nextX >= 0 && nextX < matrix.length);\n}\n\nexport function addFinderPatterns(matrices) {\n var modules = matrices[0].length;\n\n addCentricPattern(matrices, finderPattern, 0, 0);\n addFinderSeparator(matrices, [-1, -1], 7, 7);\n addCentricPattern(matrices, finderPattern, modules - 7, 0);\n addFinderSeparator(matrices, [1, -1], modules - 8, 7);\n addCentricPattern(matrices, finderPattern, 0, modules - 7);\n addFinderSeparator(matrices, [-1, 1], 7, modules - 8);\n}\n\nexport function addAlignmentPatterns(matrices, version) {\n if (version < 2) {\n return;\n }\n\n var matrix = matrices[0],\n modules = matrix.length,\n pointsCount = Math.floor(version / 7),\n points = [6],\n startDistance,\n distance,\n idx = 0;\n\n if ((startDistance = irregularAlignmentPatternsStartDistance[version])) {\n distance = (modules - 13 - startDistance) / pointsCount;\n } else {\n startDistance = distance = (modules - 13) / (pointsCount + 1);\n }\n\n points.push(points[idx++] + startDistance);\n\n while ((points[idx] + distance) < modules) {\n points.push(points[idx++] + distance);\n }\n\n for (var i = 0; i < points.length; i++) {\n for (var j = 0; j < points.length; j++) {\n if (matrix[points[i]][points[j]] === undefined) {\n addCentricPattern(matrices, alignmentPattern, points[i] - 2, points[j] - 2);\n }\n }\n }\n}\n\nexport function addTimingFunctions(matrices) {\n var row = 6,\n column = 6,\n value = 1,\n modules = matrices[0].length;\n\n for (var i = 8; i < modules - 8; i++) {\n fillFunctionCell(matrices, value, row, i);\n fillFunctionCell(matrices, value, i, column);\n value ^= 1;\n }\n}\n\nexport function scoreMaskMatrixes(matrices) {\n var scores = [],\n previousBits = [],\n darkModules = [],\n patterns = [],\n adjacentSameBits = [],\n matrix,\n i,\n row = 0,\n column = 1,\n modulesLength = matrices[0].length;\n\n for (i = 0; i < matrices.length; i++) {\n scores[i] = 0;\n darkModules[i] = 0;\n adjacentSameBits[i] = [0, 0];\n patterns[i] = [0, 0];\n previousBits[i] = [];\n }\n\n for (var rowIndex = 0; rowIndex < modulesLength; rowIndex++) {\n for (var columnIndex = 0; columnIndex < modulesLength; columnIndex++) {\n for (var matrixIndex = 0; matrixIndex < matrices.length; matrixIndex++) {\n matrix = matrices[matrixIndex];\n darkModules[matrixIndex] += parseInt(matrix[rowIndex][columnIndex], 10);\n\n if (previousBits[matrixIndex][row] === matrix[rowIndex][columnIndex] &&\n rowIndex + 1 < modulesLength &&\n columnIndex - 1 >= 0 &&\n matrix[rowIndex + 1][columnIndex] === previousBits[matrixIndex][row] &&\n matrix[rowIndex + 1][columnIndex - 1] === previousBits[matrixIndex][row]) {\n scores[matrixIndex] += 3;\n }\n\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, row, matrix[rowIndex][columnIndex]);\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, column, matrix[columnIndex][rowIndex]);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[rowIndex][columnIndex], adjacentSameBits, row);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[columnIndex][rowIndex], adjacentSameBits, column);\n }\n }\n }\n\n var total = modulesLength * modulesLength,\n minIdx,\n min = Number.MAX_VALUE;\n\n for (i = 0; i < scores.length; i++) {\n scores[i] += calculateDarkModulesRatioScore(darkModules[i], total);\n\n if (scores[i] < min) {\n min = scores[i];\n minIdx = i;\n }\n }\n\n return minIdx;\n}\n\nexport function scoreFinderPatternOccurance(idx, patterns, scores, rowColumn, bit) {\n patterns[idx][rowColumn] = ((patterns[idx][rowColumn] << 1) ^ bit) % 128;\n\n if (patterns[idx][rowColumn] === finderPatternValue) {\n scores[idx] += 40;\n }\n}\n\nexport function scoreAdjacentSameBits(idx, scores, previousBits, bit, adjacentBits, rowColumn) {\n if (previousBits[idx][rowColumn] === bit) {\n adjacentBits[idx][rowColumn]++;\n } else {\n previousBits[idx][rowColumn] = bit;\n\n if (adjacentBits[idx][rowColumn] >= 5) {\n scores[idx] += 3 + adjacentBits[idx][rowColumn] - 5;\n }\n\n adjacentBits[idx][rowColumn] = 1;\n }\n}\n\nexport function calculateDarkModulesRatioScore(darkModules, total) {\n var percent = Math.floor((darkModules / total) * 100),\n mod5 = percent % 5,\n previous = Math.abs(percent - mod5 - 50),\n next = Math.abs(percent + 5 - mod5 - 50),\n score = 10 * Math.min(previous / 5, next / 5);\n\n return score;\n}\n\nexport function createQRCodeDataEncoder(encoding) {\n if (encoding && encoding.toLowerCase().indexOf(\"utf_8\") >= 0) {\n return new Utf8Encoder();\n }\n\n return new IsoEncoder();\n}\n\nexport function encodeData(inputString, errorCorrectionLevel, encoding) {\n var encoder = createQRCodeDataEncoder(encoding),\n encodingResult = encoder.getEncodingResult(inputString, errorCorrectionLevel),\n version = encodingResult.version,\n versionInformation = VersionsCodewordsInformation[version - 1][errorCorrectionLevel],\n dataString = padDataString(encodingResult.dataString, versionInformation.totalDataCodewords),\n blocks = getBlocks(dataString, versionInformation),\n matrices = initMatrices(version);\n\n addFinderPatterns(matrices);\n addAlignmentPatterns(matrices, version);\n addTimingFunctions(matrices);\n\n if (version >= 7) {\n addVersionInformation(matrices, toBitsString(0, 18));\n }\n\n addFormatInformation(matrices, toBitsString(0, 15));\n fillData(matrices, blocks);\n\n var minIdx = scoreMaskMatrixes(matrices),\n optimalMatrix = matrices[minIdx];\n\n if (version >= 7) {\n addVersionInformation([optimalMatrix], encodeVersionInformation(version));\n }\n\n var formatString = errorCorrectionPatterns[errorCorrectionLevel] + toBitsString(minIdx, 3);\n addFormatInformation([optimalMatrix], encodeFormatInformation(formatString));\n\n return optimalMatrix;\n}\n","import { Class } from '../../../common';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport var QRDataMode = (function (Class) {\n function QRDataMode() {\n Class.call(this);\n\n this.initProperties();\n }\n\n if ( Class ) QRDataMode.__proto__ = Class;\n QRDataMode.prototype = Object.create( Class && Class.prototype );\n QRDataMode.prototype.constructor = QRDataMode;\n\n QRDataMode.prototype.initProperties = function initProperties () {\n extend(this, {\n modeIndicator: \"\",\n bitsInCharacterCount: []\n });\n };\n\n QRDataMode.prototype.getVersionIndex = function getVersionIndex (version) {\n if (version < 10) {\n return 0;\n } else if (version > 26) {\n return 2;\n }\n\n return 1;\n };\n\n QRDataMode.prototype.getBitsCharacterCount = function getBitsCharacterCount (version) {\n return this.bitsInCharacterCount[this.getVersionIndex(version || 40)];\n };\n\n QRDataMode.prototype.getModeCountString = function getModeCountString (length, version) {\n return this.modeIndicator + toBitsString(length, this.getBitsCharacterCount(version));\n };\n\n QRDataMode.prototype.encode = function encode () { };\n\n QRDataMode.prototype.getStringBitsLength = function getStringBitsLength () { };\n\n QRDataMode.prototype.getValue = function getValue () { };\n\n return QRDataMode;\n}(Class));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport var NumericQRDataMode = (function (QRDataMode) {\n function NumericQRDataMode () {\n QRDataMode.apply(this, arguments);\n }\n\n if ( QRDataMode ) NumericQRDataMode.__proto__ = QRDataMode;\n NumericQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n NumericQRDataMode.prototype.constructor = NumericQRDataMode;\n\n NumericQRDataMode.prototype.initProperties = function initProperties () {\n QRDataMode.prototype.initProperties.call(this);\n\n extend(this, {\n bitsInCharacterCount: [10, 12, 14],\n modeIndicator: \"0001\"\n });\n };\n\n NumericQRDataMode.prototype.getValue = function getValue (character) {\n return parseInt(character, 10);\n };\n\n NumericQRDataMode.prototype.encode = function encode (str, version) {\n var mode = this,\n parts = splitInto(str, 3),\n result = mode.getModeCountString(str.length, version);\n var i;\n\n for (i = 0; i < parts.length - 1; i++) {\n result += toBitsString(parts[i], 10);\n }\n\n return result + toBitsString(parts[i], 1 + 3 * parts[i].length);\n };\n\n NumericQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n var mod3 = inputLength % 3;\n return 4 + this.getBitsCharacterCount(version) + 10 * Math.floor(inputLength / 3) + 3 * mod3 + (mod3 === 0 ? 0 : 1);\n };\n\n return NumericQRDataMode;\n}(QRDataMode));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport var AlphaNumericQRDataMode = (function (QRDataMode) {\n function AlphaNumericQRDataMode () {\n QRDataMode.apply(this, arguments);\n }\n\n if ( QRDataMode ) AlphaNumericQRDataMode.__proto__ = QRDataMode;\n AlphaNumericQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n AlphaNumericQRDataMode.prototype.constructor = AlphaNumericQRDataMode;\n\n AlphaNumericQRDataMode.prototype.initProperties = function initProperties () {\n QRDataMode.prototype.initProperties.call(this);\n\n extend(this, {\n characters: {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"A\": 10,\n \"B\": 11,\n \"C\": 12,\n \"D\": 13,\n \"E\": 14,\n \"F\": 15,\n \"G\": 16,\n \"H\": 17,\n \"I\": 18,\n \"J\": 19,\n \"K\": 20,\n \"L\": 21,\n \"M\": 22,\n \"N\": 23,\n \"O\": 24,\n \"P\": 25,\n \"Q\": 26,\n \"R\": 27,\n \"S\": 28,\n \"T\": 29,\n \"U\": 30,\n \"V\": 31,\n \"W\": 32,\n \"X\": 33,\n \"Y\": 34,\n \"Z\": 35,\n \" \": 36,\n \"$\": 37,\n \"%\": 38,\n \"*\": 39,\n \"+\": 40,\n \"-\": 41,\n \".\": 42,\n \"/\": 43,\n \":\": 44\n },\n bitsInCharacterCount: [9, 11, 13],\n modeIndicator: \"0010\"\n });\n };\n\n AlphaNumericQRDataMode.prototype.getValue = function getValue (character) {\n return this.characters[character];\n };\n\n AlphaNumericQRDataMode.prototype.encode = function encode (str, version) {\n var this$1 = this;\n\n var\n parts = splitInto(str, 2),\n result = this.getModeCountString(str.length, version),\n value;\n var i;\n\n for (i = 0; i < parts.length - 1; i++) {\n value = 45 * this$1.getValue(parts[i].charAt(0)) + this$1.getValue(parts[i].charAt(1));\n result += toBitsString(value, 11);\n }\n\n value = parts[i].length === 2 ?\n 45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1)) :\n this.getValue(parts[i].charAt(0));\n\n return result + toBitsString(value, 1 + 5 * parts[i].length);\n };\n\n AlphaNumericQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 11 * Math.floor(inputLength / 2) + 6 * (inputLength % 2);\n };\n\n return AlphaNumericQRDataMode;\n}(QRDataMode));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport var ByteQRDataMode = (function (QRDataMode) {\n function ByteQRDataMode () {\n QRDataMode.apply(this, arguments);\n }\n\n if ( QRDataMode ) ByteQRDataMode.__proto__ = QRDataMode;\n ByteQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n ByteQRDataMode.prototype.constructor = ByteQRDataMode;\n\n ByteQRDataMode.prototype.initProperties = function initProperties () {\n QRDataMode.prototype.initProperties.call(this);\n\n extend(this, {\n bitsInCharacterCount: [8, 16, 16],\n modeIndicator: \"0100\"\n });\n };\n\n ByteQRDataMode.prototype.getValue = function getValue (character) {\n var code = character.charCodeAt(0);\n\n if (code <= 127 || (160 <= code && code <= 255)) {\n return code;\n }\n\n throw new Error((\"Unsupported character in QR Code: \\\"\" + character + \"\\\".\"));\n };\n\n ByteQRDataMode.prototype.encode = function encode (str, version) {\n var mode = this,\n result = mode.getModeCountString(str.length, version);\n\n for (var i = 0; i < str.length; i++) {\n result += toBitsString(mode.getValue(str.charAt(i)), 8);\n }\n\n return result;\n };\n\n ByteQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 8 * inputLength;\n };\n\n return ByteQRDataMode;\n}(QRDataMode));\n","import { NumericQRDataMode } from './numeric-data-mode';\nimport { AlphaNumericQRDataMode } from './alpha-numeric-data-mode';\nimport { ByteQRDataMode } from './byte-data-mode';\n\nvar NUMERIC = \"numeric\";\nvar ALPHA_NUMERIC = \"alphanumeric\";\nvar BYTE = \"byte\";\n\nexport var DataModeInstances = {};\nDataModeInstances[NUMERIC] = new NumericQRDataMode();\nDataModeInstances[ALPHA_NUMERIC] = new AlphaNumericQRDataMode();\nDataModeInstances[BYTE] = new ByteQRDataMode();\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport { DataModeInstances } from '../data-modes/data-mode-instances';\nimport { extend } from '../../utils';\nimport { toBitsString } from '../../utils';\nimport { getVersion } from '../encoding';\n\nvar BYTE = \"byte\";\n\nexport var Utf8Encoder = (function (Class) {\n function Utf8Encoder() {\n Class.call(this);\n\n this.initProperties();\n\n this.mode = DataModeInstances[this.encodingMode];\n }\n\n if ( Class ) Utf8Encoder.__proto__ = Class;\n Utf8Encoder.prototype = Object.create( Class && Class.prototype );\n Utf8Encoder.prototype.constructor = Utf8Encoder;\n\n Utf8Encoder.prototype.initProperties = function initProperties () {\n extend(this, {\n encodingMode: BYTE,\n utfBOM: \"111011111011101110111111\",\n initialModeCountStringLength: 20,\n ranges: [128, 2048, 65536, 2097152, 67108864]\n });\n };\n\n Utf8Encoder.prototype.getEncodingResult = function getEncodingResult (inputString, errorCorrectionLevel) {\n var data = this.encode(inputString),\n dataCodewordsCount = this.getDataCodewordsCount(data),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = this.mode.getModeCountString(data.length / 8, version) + data;\n\n return new EncodingResult(dataString, version);\n };\n\n Utf8Encoder.prototype.getDataCodewordsCount = function getDataCodewordsCount (data) {\n var dataLength = data.length,\n dataCodewordsCount = Math.ceil((this.initialModeCountStringLength + dataLength) / 8);\n\n return dataCodewordsCount;\n };\n\n Utf8Encoder.prototype.encode = function encode (str) {\n var this$1 = this;\n\n var result = this.utfBOM;\n\n for (var i = 0; i < str.length; i++) {\n result += this$1.encodeCharacter(str.charCodeAt(i));\n }\n\n return result;\n };\n\n Utf8Encoder.prototype.encodeCharacter = function encodeCharacter (code) {\n var bytesCount = this.getBytesCount(code),\n bc = bytesCount - 1,\n result = \"\";\n\n if (bytesCount === 1) {\n result = toBitsString(code, 8);\n } else {\n var significantOnes = 8 - bytesCount;\n\n for (var i = 0; i < bc; i++) {\n result = toBitsString(code >> (i * 6) & 63 | 128, 8) + result;\n }\n\n result = ((code >> bc * 6) | ((255 >> significantOnes) << significantOnes)).toString(2) + result;\n }\n\n return result;\n };\n\n Utf8Encoder.prototype.getBytesCount = function getBytesCount (code) {\n var ranges = this.ranges;\n\n for (var i = 0; i < ranges.length; i++) {\n if (code < ranges[i]) {\n return i + 1;\n }\n }\n };\n\n return Utf8Encoder;\n}(Class));\n","export var VersionsCodewordsInformation = [{\n L: {\n groups: [\n [1, 19]\n ],\n totalDataCodewords: 19,\n errorCodewordsPerBlock: 7\n },\n M: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 10\n },\n Q: {\n groups: [\n [1, 13]\n ],\n totalDataCodewords: 13,\n errorCodewordsPerBlock: 13\n },\n H: {\n groups: [\n [1, 9]\n ],\n totalDataCodewords: 9,\n errorCodewordsPerBlock: 17\n }\n}, {\n L: {\n groups: [\n [1, 34]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 10\n },\n M: {\n groups: [\n [1, 28]\n ],\n totalDataCodewords: 28,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [1, 22]\n ],\n totalDataCodewords: 22,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [1, 55]\n ],\n totalDataCodewords: 55,\n errorCodewordsPerBlock: 15\n },\n M: {\n groups: [\n [1, 44]\n ],\n totalDataCodewords: 44,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [2, 17]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 13]\n ],\n totalDataCodewords: 26,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [1, 80]\n ],\n totalDataCodewords: 80,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [2, 32]\n ],\n totalDataCodewords: 64,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 24]\n ],\n totalDataCodewords: 48,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [4, 9]\n ],\n totalDataCodewords: 36,\n errorCodewordsPerBlock: 16\n }\n}, {\n L: {\n groups: [\n [1, 108]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [2, 43]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [2, 15],\n [2, 16]\n ],\n totalDataCodewords: 62,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 11],\n [2, 12]\n ],\n totalDataCodewords: 46,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [2, 68]\n ],\n totalDataCodewords: 136,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 27]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [4, 19]\n ],\n totalDataCodewords: 76,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [4, 15]\n ],\n totalDataCodewords: 60,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [2, 78]\n ],\n totalDataCodewords: 156,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [4, 31]\n ],\n totalDataCodewords: 124,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 14],\n [4, 15]\n ],\n totalDataCodewords: 88,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [4, 13],\n [1, 14]\n ],\n totalDataCodewords: 66,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 97]\n ],\n totalDataCodewords: 194,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [2, 38],\n [2, 39]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 18],\n [2, 19]\n ],\n totalDataCodewords: 110,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [4, 14],\n [2, 15]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 116]\n ],\n totalDataCodewords: 232,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 36],\n [2, 37]\n ],\n totalDataCodewords: 182,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 16],\n [4, 17]\n ],\n totalDataCodewords: 132,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [4, 12],\n [4, 13]\n ],\n totalDataCodewords: 100,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 68],\n [2, 69]\n ],\n totalDataCodewords: 274,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 43],\n [1, 44]\n ],\n totalDataCodewords: 216,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [6, 19],\n [2, 20]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [6, 15],\n [2, 16]\n ],\n totalDataCodewords: 122,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 81]\n ],\n totalDataCodewords: 324,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [1, 50],\n [4, 51]\n ],\n totalDataCodewords: 254,\n errorCodewordsPerBlock: 30\n },\n Q: {\n groups: [\n [4, 22],\n [4, 23]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [3, 12],\n [8, 13]\n ],\n totalDataCodewords: 140,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 92],\n [2, 93]\n ],\n totalDataCodewords: 370,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [6, 36],\n [2, 37]\n ],\n totalDataCodewords: 290,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 20],\n [6, 21]\n ],\n totalDataCodewords: 206,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [7, 14],\n [4, 15]\n ],\n totalDataCodewords: 158,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 107]\n ],\n totalDataCodewords: 428,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 37],\n [1, 38]\n ],\n totalDataCodewords: 334,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [8, 20],\n [4, 21]\n ],\n totalDataCodewords: 244,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [12, 11],\n [4, 12]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [3, 115],\n [1, 116]\n ],\n totalDataCodewords: 461,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 40],\n [5, 41]\n ],\n totalDataCodewords: 365,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [11, 16],\n [5, 17]\n ],\n totalDataCodewords: 261,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [11, 12],\n [5, 13]\n ],\n totalDataCodewords: 197,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 87],\n [1, 88]\n ],\n totalDataCodewords: 523,\n errorCodewordsPerBlock: 22\n },\n M: {\n groups: [\n [5, 41],\n [5, 42]\n ],\n totalDataCodewords: 415,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [5, 24],\n [7, 25]\n ],\n totalDataCodewords: 295,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 12],\n [7, 13]\n ],\n totalDataCodewords: 223,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 98],\n [1, 99]\n ],\n totalDataCodewords: 589,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [7, 45],\n [3, 46]\n ],\n totalDataCodewords: 453,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 19],\n [2, 20]\n ],\n totalDataCodewords: 325,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [3, 15],\n [13, 16]\n ],\n totalDataCodewords: 253,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [1, 107],\n [5, 108]\n ],\n totalDataCodewords: 647,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [10, 46],\n [1, 47]\n ],\n totalDataCodewords: 507,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 22],\n [15, 23]\n ],\n totalDataCodewords: 367,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [17, 15]\n ],\n totalDataCodewords: 283,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [5, 120],\n [1, 121]\n ],\n totalDataCodewords: 721,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [9, 43],\n [4, 44]\n ],\n totalDataCodewords: 563,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [1, 23]\n ],\n totalDataCodewords: 397,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [19, 15]\n ],\n totalDataCodewords: 313,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [3, 113],\n [4, 114]\n ],\n totalDataCodewords: 795,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 44],\n [11, 45]\n ],\n totalDataCodewords: 627,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 21],\n [4, 22]\n ],\n totalDataCodewords: 445,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [9, 13],\n [16, 14]\n ],\n totalDataCodewords: 341,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [3, 107],\n [5, 108]\n ],\n totalDataCodewords: 861,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 41],\n [13, 42]\n ],\n totalDataCodewords: 669,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [15, 24],\n [5, 25]\n ],\n totalDataCodewords: 485,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [15, 15],\n [10, 16]\n ],\n totalDataCodewords: 385,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 116],\n [4, 117]\n ],\n totalDataCodewords: 932,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 42]\n ],\n totalDataCodewords: 714,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [6, 23]\n ],\n totalDataCodewords: 512,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [19, 16],\n [6, 17]\n ],\n totalDataCodewords: 406,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [2, 111],\n [7, 112]\n ],\n totalDataCodewords: 1006,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 46]\n ],\n totalDataCodewords: 782,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [16, 25]\n ],\n totalDataCodewords: 568,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [34, 13]\n ],\n totalDataCodewords: 442,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [4, 121],\n [5, 122]\n ],\n totalDataCodewords: 1094,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 47],\n [14, 48]\n ],\n totalDataCodewords: 860,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [14, 25]\n ],\n totalDataCodewords: 614,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [16, 15],\n [14, 16]\n ],\n totalDataCodewords: 464,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 117],\n [4, 118]\n ],\n totalDataCodewords: 1174,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 45],\n [14, 46]\n ],\n totalDataCodewords: 914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [16, 25]\n ],\n totalDataCodewords: 664,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [30, 16],\n [2, 17]\n ],\n totalDataCodewords: 514,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 106],\n [4, 107]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 47],\n [13, 48]\n ],\n totalDataCodewords: 1000,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [22, 25]\n ],\n totalDataCodewords: 718,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [13, 16]\n ],\n totalDataCodewords: 538,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [10, 114],\n [2, 115]\n ],\n totalDataCodewords: 1370,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [19, 46],\n [4, 47]\n ],\n totalDataCodewords: 1062,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [28, 22],\n [6, 23]\n ],\n totalDataCodewords: 754,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [33, 16],\n [4, 17]\n ],\n totalDataCodewords: 596,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 122],\n [4, 123]\n ],\n totalDataCodewords: 1468,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [22, 45],\n [3, 46]\n ],\n totalDataCodewords: 1128,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [8, 23],\n [26, 24]\n ],\n totalDataCodewords: 808,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [12, 15],\n [28, 16]\n ],\n totalDataCodewords: 628,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [3, 117],\n [10, 118]\n ],\n totalDataCodewords: 1531,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 45],\n [23, 46]\n ],\n totalDataCodewords: 1193,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [4, 24],\n [31, 25]\n ],\n totalDataCodewords: 871,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [31, 16]\n ],\n totalDataCodewords: 661,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [7, 116],\n [7, 117]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [21, 45],\n [7, 46]\n ],\n totalDataCodewords: 1267,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 23],\n [37, 24]\n ],\n totalDataCodewords: 911,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [26, 16]\n ],\n totalDataCodewords: 701,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [5, 115],\n [10, 116]\n ],\n totalDataCodewords: 1735,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [19, 47],\n [10, 48]\n ],\n totalDataCodewords: 1373,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 24],\n [25, 25]\n ],\n totalDataCodewords: 985,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [25, 16]\n ],\n totalDataCodewords: 745,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [3, 116]\n ],\n totalDataCodewords: 1843,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [2, 46],\n [29, 47]\n ],\n totalDataCodewords: 1455,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [42, 24],\n [1, 25]\n ],\n totalDataCodewords: 1033,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [28, 16]\n ],\n totalDataCodewords: 793,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115]\n ],\n totalDataCodewords: 1955,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [10, 46],\n [23, 47]\n ],\n totalDataCodewords: 1541,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [10, 24],\n [35, 25]\n ],\n totalDataCodewords: 1115,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [35, 16]\n ],\n totalDataCodewords: 845,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115],\n [1, 116]\n ],\n totalDataCodewords: 2071,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [21, 47]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [29, 24],\n [19, 25]\n ],\n totalDataCodewords: 1171,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [46, 16]\n ],\n totalDataCodewords: 901,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [6, 116]\n ],\n totalDataCodewords: 2191,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [23, 47]\n ],\n totalDataCodewords: 1725,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [44, 24],\n [7, 25]\n ],\n totalDataCodewords: 1231,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [59, 16],\n [1, 17]\n ],\n totalDataCodewords: 961,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [12, 121],\n [7, 122]\n ],\n totalDataCodewords: 2306,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [12, 47],\n [26, 48]\n ],\n totalDataCodewords: 1812,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [39, 24],\n [14, 25]\n ],\n totalDataCodewords: 1286,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [41, 16]\n ],\n totalDataCodewords: 986,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 121],\n [14, 122]\n ],\n totalDataCodewords: 2434,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 47],\n [34, 48]\n ],\n totalDataCodewords: 1914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [46, 24],\n [10, 25]\n ],\n totalDataCodewords: 1354,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [2, 15],\n [64, 16]\n ],\n totalDataCodewords: 1054,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 122],\n [4, 123]\n ],\n totalDataCodewords: 2566,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [29, 46],\n [14, 47]\n ],\n totalDataCodewords: 1992,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [49, 24],\n [10, 25]\n ],\n totalDataCodewords: 1426,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [24, 15],\n [46, 16]\n ],\n totalDataCodewords: 1096,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [4, 122],\n [18, 123]\n ],\n totalDataCodewords: 2702,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [13, 46],\n [32, 47]\n ],\n totalDataCodewords: 2102,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [48, 24],\n [14, 25]\n ],\n totalDataCodewords: 1502,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [42, 15],\n [32, 16]\n ],\n totalDataCodewords: 1142,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [20, 117],\n [4, 118]\n ],\n totalDataCodewords: 2812,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [40, 47],\n [7, 48]\n ],\n totalDataCodewords: 2216,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [43, 24],\n [22, 25]\n ],\n totalDataCodewords: 1582,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [10, 15],\n [67, 16]\n ],\n totalDataCodewords: 1222,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [19, 118],\n [6, 119]\n ],\n totalDataCodewords: 2956,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [18, 47],\n [31, 48]\n ],\n totalDataCodewords: 2334,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [34, 24],\n [34, 25]\n ],\n totalDataCodewords: 1666,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [20, 15],\n [61, 16]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 30\n }\n}];\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n addClass,\n setDefaultOptions,\n deepExtend,\n defaultErrorHandler\n} from '../common';\n\nimport { Box } from '../core';\nimport { encodeData } from './encodings/encoding';\nimport { extend } from './utils';\n\nimport { surfaceSize } from '../barcode/surface-size';\n\nvar round = Math.round;\nvar crossPattern = [[0, 1], [1, 1], [1, 2], [2, 2], [2, 1], [3, 1], [3, 0], [2, 0], [2, -1], [1, -1], [1, 0]];\nvar squarePattern = [[0, 1], [1, 1], [1, 0]];\n\nvar QRCodeDefaults = {\n DEFAULT_SIZE: 200,\n QUIET_ZONE_LENGTH: 4,\n DEFAULT_ERROR_CORRECTION_LEVEL: \"L\",\n DEFAULT_BACKGROUND: \"#fff\",\n DEFAULT_DARK_MODULE_COLOR: \"#000\",\n MIN_BASE_UNIT_SIZE: 1,\n DEFAULT_LOGO_SIZE: 7\n};\n\nvar QRCode = (function (Class) {\n function QRCode(element, options, errorHandler) {\n if ( errorHandler === void 0 ) errorHandler = defaultErrorHandler;\n\n Class.call(this);\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.wrapper = this.element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n\n this.setOptions(options);\n }\n\n if ( Class ) QRCode.__proto__ = Class;\n QRCode.prototype = Object.create( Class && Class.prototype );\n QRCode.prototype.constructor = QRCode;\n\n QRCode.prototype.destroy = function destroy () {\n this._destroySurface();\n };\n\n QRCode.prototype._initElement = function _initElement () {\n addClass(this.element, \"k-qrcode\");\n };\n\n QRCode.prototype._initSurface = function _initSurface () {\n var ref = this;\n var options = ref.options;\n var surface = ref.surface;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n };\n\n QRCode.prototype._createSurface = function _createSurface () {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n };\n\n QRCode.prototype._destroySurface = function _destroySurface () {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n };\n\n QRCode.prototype._initSurfaceElement = function _initSurfaceElement () {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = \"relative\";\n this.element.appendChild(this.surfaceElement);\n }\n };\n\n QRCode.prototype._destroySurfaceElement = function _destroySurfaceElement () {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n };\n\n QRCode.prototype.redraw = function redraw () {\n var size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size,\n height: size\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n };\n\n QRCode.prototype.getSize = function getSize () {\n var element = this.element;\n var elementWidth = element.clientWidth;\n var elementHeight = element.clientHeight;\n var size = { width: 0, height: 0 };\n\n if (elementWidth > 0) {\n size.width = elementWidth;\n }\n\n if (elementHeight) {\n size.height = elementHeight;\n }\n\n return size;\n };\n\n QRCode.prototype._resize = function _resize () {\n this.redraw();\n };\n\n QRCode.prototype.createVisual = function createVisual () {\n this.visual = this._render();\n };\n\n QRCode.prototype.exportVisual = function exportVisual () {\n return this._render();\n };\n\n QRCode.prototype._render = function _render () {\n var value = this._value,\n baseUnit,\n border = this.options.border || {},\n padding = this.options.padding || 0,\n borderWidth = border.width || 0,\n quietZoneSize,\n matrix,\n size,\n dataSize,\n contentSize;\n\n border.width = borderWidth;\n\n var visual = new draw.Group();\n\n try {\n if (value) {\n matrix = encodeData(value, this.options.errorCorrection, this.options.encoding);\n size = this._getSize();\n contentSize = size - 2 * (borderWidth + padding);\n baseUnit = this._calculateBaseUnit(contentSize, matrix.length);\n dataSize = matrix.length * baseUnit;\n quietZoneSize = borderWidth + padding + (contentSize - dataSize) / 2;\n\n visual.append(this._renderBackground(size, border));\n visual.append(this._renderMatrix(matrix, baseUnit, quietZoneSize));\n\n if (this._hasCustomLogo()) {\n visual.append(this._renderLogo(size, baseUnit));\n } else if (this._isSwiss()) {\n visual.append(this._renderSwissCode(size, baseUnit));\n }\n }\n } catch (error) {\n this.onError(error);\n }\n\n return visual;\n };\n\n QRCode.prototype._renderLogo = function _renderLogo (qrSize, baseUnit) {\n var image;\n var imageRect;\n var center = round(qrSize / 2);\n var logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n var logoUrl = this.options.overlay.imageUrl;\n var position = {\n x: center - logoSize.width / 2,\n y: center - logoSize.height / 2\n };\n\n imageRect = new geom.Rect(\n new geom.Point(position.x, position.y),\n new geom.Size(logoSize.width, logoSize.height)\n );\n\n image = new draw.Image(logoUrl, imageRect);\n\n return image;\n };\n\n QRCode.prototype._renderSwissCode = function _renderSwissCode (qrSize, baseUnit) {\n var logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n logoSize = Math.max(logoSize.width, logoSize.height);\n var crossSize = logoSize / 4;\n var crossOffset = crossSize / 2;\n var center = qrSize / 2;\n var start = {};\n var visual = new draw.Group();\n\n start.x = start.y = Math.ceil(center - baseUnit - logoSize / 2);\n visual.append(this._renderShape(start, Math.ceil(logoSize + baseUnit * 2), squarePattern, \"#fff\"));\n\n start.x = start.y = center - logoSize / 2;\n visual.append(this._renderShape(start, logoSize, squarePattern, this.options.color));\n\n start.x = center + crossOffset - logoSize / 2;\n start.y = center + crossOffset + crossSize - logoSize / 2;\n visual.append(this._renderShape(start, crossSize, crossPattern, \"#fff\"));\n\n return visual;\n };\n\n QRCode.prototype._renderShape = function _renderShape (start, step, pattern, color) {\n var path = new draw.MultiPath({\n fill: {\n color: color\n },\n stroke: null\n });\n\n path.moveTo(start.x, start.y);\n\n for (var i = 0; i < pattern.length; i++) {\n path.lineTo(start.x + step * pattern[i][0], start.y + step * pattern[i][1]);\n }\n\n path.close();\n\n return path;\n };\n\n QRCode.prototype._getSize = function _getSize () {\n var size;\n\n if (this.options.size) {\n size = parseInt(this.options.size, 10);\n } else {\n var element = this.element;\n var elementSize = surfaceSize(element, this.options.renderAs);\n var min = Math.min(elementSize.width, elementSize.height);\n\n if (min > 0) {\n size = min;\n } else {\n size = QRCodeDefaults.DEFAULT_SIZE;\n }\n }\n\n return size;\n };\n\n QRCode.prototype._calculateBaseUnit = function _calculateBaseUnit (size, matrixSize) {\n var baseUnit = Math.floor(size / matrixSize);\n\n if (baseUnit < QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n var minSize = Math.ceil(matrixSize * QRCodeDefaults.MIN_BASE_UNIT_SIZE);\n this.onError(new Error(\n (\"Insufficient size for QR Code: the current size is \" + size + \"px and the minimum size is \" + minSize + \"px.\")\n ));\n } else if (baseUnit * matrixSize >= size &&\n baseUnit - 1 >= QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n baseUnit--;\n }\n\n return baseUnit;\n };\n\n QRCode.prototype._renderMatrix = function _renderMatrix (matrix, baseUnit, quietZoneSize) {\n var path = new draw.MultiPath({\n fill: {\n color: this.options.color\n },\n stroke: null\n });\n\n for (var row = 0; row < matrix.length; row++) {\n var y = quietZoneSize + row * baseUnit;\n var column = 0;\n\n while (column < matrix.length) {\n while (matrix[row][column] === 0 && column < matrix.length) {\n column++;\n }\n\n if (column < matrix.length) {\n var x = column;\n while (matrix[row][column] === 1) {\n column++;\n }\n\n var x1 = round(quietZoneSize + x * baseUnit);\n var y1 = round(y);\n var x2 = round(quietZoneSize + column * baseUnit);\n var y2 = round(y + baseUnit);\n\n path.moveTo(x1, y1)\n .lineTo(x1, y2)\n .lineTo(x2, y2)\n .lineTo(x2, y1)\n .close();\n }\n }\n }\n\n return path;\n };\n\n QRCode.prototype._renderBackground = function _renderBackground (size, border) {\n var box = new Box(0, 0, size, size).unpad(border.width / 2);\n var background = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: this.options.background\n },\n stroke: {\n color: border.color,\n width: border.width\n }\n });\n\n return background;\n };\n\n QRCode.prototype.setOptions = function setOptions (options) {\n var newOptions = options || {};\n this.options = extend(this.options, newOptions);\n\n if (options.value !== undefined) {\n this._value = String(this.options.value);\n }\n\n this._initSurface();\n this.redraw();\n };\n\n QRCode.prototype.value = function value (value$1) {\n if (value$1 === undefined) {\n return this._value;\n }\n\n this._value = String(value$1);\n\n this.redraw();\n };\n\n QRCode.prototype._hasCustomLogo = function _hasCustomLogo () {\n return Boolean(this.options.overlay.imageUrl);\n };\n\n QRCode.prototype._isSwiss = function _isSwiss () {\n return this.options.overlay.type === \"swiss\";\n };\n\n QRCode.prototype._getLogoSize = function _getLogoSize (defautLogoSize) {\n var width = this.options.overlay.width;\n var height = this.options.overlay.height;\n\n if (!width && !height) {\n width = height = defautLogoSize;\n } else if (width && !height) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n return {\n width: width,\n height: height\n };\n };\n\n return QRCode;\n}(Class));\n\nsetDefaultOptions(QRCode, {\n name: \"QRCode\",\n renderAs: \"svg\",\n encoding: \"ISO_8859_1\",\n value: \"\",\n errorCorrection: QRCodeDefaults.DEFAULT_ERROR_CORRECTION_LEVEL,\n background: QRCodeDefaults.DEFAULT_BACKGROUND,\n color: QRCodeDefaults.DEFAULT_DARK_MODULE_COLOR,\n size: \"\",\n padding: 0,\n border: {\n color: \"\",\n width: 0\n },\n overlay: {\n type: \"image\",\n imageUrl: \"\",\n width: 0,\n height: 0\n }\n});\n\nexport default QRCode;\n","// Coordinate reference system\n// World Geodetic System of 1984\nvar WGS84 = {\n a: 6378137, // Semi-major radius\n b: 6356752.314245179, // Semi-minor radius\n f: 0.0033528106647474805, // Flattening\n e: 0.08181919084262149 // Eccentricity\n};\n\n// Geographic coordinate systems use a spheroid to calculate positions on the earth.\n// A datum defines the position of the spheroid relative to the center of the earth\n// it provides a frame of reference for measuring locations on the surface of the earth\n// and defines the origin and orientation of latitude and longitude lines.\nexport var datums = {\n WGS84: WGS84\n};\n","import {\n Class,\n deepExtend,\n deg,\n rad,\n round,\n defined\n} from '../common';\n\nimport {\n datums\n} from './datums';\n\nfunction toSquare(value) {\n return value * value;\n}\n\n\nvar math = Math,\n abs = math.abs,\n atan = math.atan,\n atan2 = math.atan2,\n cos = math.cos,\n sin = math.sin,\n tan = math.tan;\n\nexport var Location = (function (Class) {\n function Location(lat, lng) {\n Class.call(this);\n\n this.initProperties();\n\n if (arguments.length === 1) {\n this.lat = lat[0];\n this.lng = lat[1];\n } else {\n this.lat = lat;\n this.lng = lng;\n }\n }\n\n if ( Class ) Location.__proto__ = Class;\n Location.prototype = Object.create( Class && Class.prototype );\n Location.prototype.constructor = Location;\n\n Location.prototype.initProperties = function initProperties () {\n deepExtend(this, {\n DISTANCE_ITERATIONS: 100,\n DISTANCE_CONVERGENCE: 1e-12,\n DISTANCE_PRECISION: 2,\n FORMAT: '{0:N6}{1:N6}'\n });\n };\n\n Location.prototype.toArray = function toArray () {\n return [\n this.lat,\n this.lng\n ];\n };\n\n Location.prototype.equals = function equals (loc) {\n return loc && loc.lat === this.lat && loc.lng === this.lng;\n };\n\n Location.prototype.clone = function clone () {\n return new Location(this.lat, this.lng);\n };\n\n Location.prototype.round = function round$1 (precision) {\n this.lng = round(this.lng, precision);\n this.lat = round(this.lat, precision);\n return this;\n };\n\n Location.prototype.wrap = function wrap () {\n this.lng = this.lng % 180;\n this.lat = this.lat % 90;\n return this;\n };\n\n Location.prototype.distanceTo = function distanceTo (dest, datum) {\n return this.greatCircleTo(dest, datum).distance;\n };\n\n Location.prototype.destination = function destination (distance, initialBearing, initialDatum) {\n var bearing = rad(initialBearing);\n var datum = initialDatum || datums.WGS84;\n var fromLat = rad(this.lat);\n var fromLng = rad(this.lng);\n var dToR = distance / datum.a;\n var lat = math.asin(sin(fromLat) * cos(dToR) + cos(fromLat) * sin(dToR) * cos(bearing));\n var lng = fromLng + atan2(sin(bearing) * sin(dToR) * cos(fromLat), cos(dToR) - sin(fromLat) * sin(lat));\n\n return new Location(deg(lat), deg(lng));\n };\n\n Location.prototype.greatCircleTo = function greatCircleTo (initialDest, initialDatum) {\n var this$1 = this;\n\n var dest = Location.create(dest);\n var datum = initialDatum || datums.WGS84;\n\n if (!dest || this.clone().round(8).equals(dest.clone().round(8))) {\n return {\n distance: 0,\n azimuthFrom: 0,\n azimuthTo: 0\n };\n }\n\n // See http://en.wikipedia.org/wiki/Vincenty's_formulae#Notation\n // o == sigma\n // A == alpha\n\n var a = datum.a;\n var b = datum.b;\n var f = datum.f;\n var L = rad(dest.lng - this.lng);\n var U1 = atan((1 - f) * tan(rad(this.lat)));\n var sinU1 = sin(U1);\n var cosU1 = cos(U1);\n var U2 = atan((1 - f) * tan(rad(dest.lat)));\n var sinU2 = sin(U2);\n var cosU2 = cos(U2);\n var lambda = L;\n var prevLambda;\n var i = this.DISTANCE_ITERATIONS;\n var converged = false;\n var sinLambda;\n var cosLambda;\n var sino;\n var cosA2;\n var coso;\n var cos2om;\n var sigma;\n\n while (!converged && i-- > 0) {\n sinLambda = sin(lambda);\n cosLambda = cos(lambda);\n sino = math.sqrt(toSquare(cosU2 * sinLambda) + toSquare(cosU1 * sinU2 - sinU1 * cosU2 * cosLambda));\n coso = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;\n sigma = atan2(sino, coso);\n\n var sinA = cosU1 * cosU2 * sinLambda / sino;\n cosA2 = 1 - toSquare(sinA);\n cos2om = 0;\n\n if (cosA2 !== 0) {\n cos2om = coso - 2 * sinU1 * sinU2 / cosA2;\n }\n\n prevLambda = lambda;\n var C = f / 16 * cosA2 * (4 + f * (4 - 3 * cosA2));\n lambda = L + (1 - C) * f * sinA * (sigma + C * sino * (cos2om + C * coso * (-1 + 2 * toSquare(cos2om))));\n converged = abs(lambda - prevLambda) <= this$1.DISTANCE_CONVERGENCE;\n }\n\n var u2 = cosA2 * (toSquare(a) - toSquare(b)) / toSquare(b);\n var A = 1 + u2 / 16384 * (4096 + u2 * (-768 + u2 * (320 - 175 * u2)));\n var B = u2 / 1024 * (256 + u2 * (-128 + u2 * (74 - 47 * u2)));\n var deltao = B * sino * (cos2om + B / 4 * (coso * (-1 + 2 * toSquare(cos2om)) - B / 6 * cos2om * (-3 + 4 * toSquare(sino)) * (-3 + 4 * toSquare(cos2om))));\n\n var azimuthFrom = atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);\n var azimuthTo = atan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda);\n\n return {\n distance: round(b * A * (sigma - deltao), this.DISTANCE_PRECISION),\n azimuthFrom: deg(azimuthFrom),\n azimuthTo: deg(azimuthTo)\n };\n };\n\n // IE < 9 doesn't allow to override toString on definition\n Location.prototype.toString = function toString () {\n // return kendo.format(this.FORMAT, this.lat, this.lng);\n return String(this.lat) + \",\" + String(this.lng);\n };\n\n Location.fromLngLat = function fromLngLat (lngAndLat) {\n return new Location(lngAndLat[1], lngAndLat[0]);\n };\n\n Location.fromLatLng = function fromLatLng (lngAndLat) {\n return new Location(lngAndLat[0], lngAndLat[1]);\n };\n\n Location.create = function create (a, b) {\n if (defined(a)) {\n if (a instanceof Location) {\n return a.clone();\n } else if (arguments.length === 1 && a.length === 2) {\n return Location.fromLatLng(a);\n }\n\n return new Location(a, b);\n }\n };\n\n return Location;\n}(Class));\n","import {\n geometry as g\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n setDefaultOptions,\n limitValue,\n rad,\n deg,\n deepExtend\n} from '../common';\n\nimport {\n Location\n} from './location';\n\nimport {\n datums\n} from './datums';\n\n\nvar math = Math,\n atan = math.atan,\n exp = math.exp,\n pow = math.pow,\n sin = math.sin,\n log = math.log,\n tan = math.tan,\n Point = g.Point;\n\nvar PI = math.PI,\n PI_DIV_2 = PI / 2,\n PI_DIV_4 = PI / 4,\n DEG_TO_RAD = PI / 180;\n\nvar WGS84 = datums.WGS84;\n\n// WGS 84 / World Mercator\nexport var Mercator = (function (Class) {\n function Mercator(options) {\n Class.call(this);\n this.initProperties();\n this._initOptions(options);\n }\n\n if ( Class ) Mercator.__proto__ = Class;\n Mercator.prototype = Object.create( Class && Class.prototype );\n Mercator.prototype.constructor = Mercator;\n\n Mercator.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Mercator.prototype.initProperties = function initProperties () {\n // super.initProperties();\n\n deepExtend(this, {\n MAX_LNG: 180,\n MAX_LAT: 85.0840590501,\n INVERSE_ITERATIONS: 15,\n INVERSE_CONVERGENCE: 1e-12\n });\n };\n\n Mercator.prototype.forward = function forward (loc, clamp) {\n var proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lat = limitValue(loc.lat, -proj.MAX_LAT, proj.MAX_LAT),\n lng = clamp ? limitValue(loc.lng, -proj.MAX_LNG, proj.MAX_LNG) : loc.lng,\n x = rad(lng - lng0) * r,\n y = proj._projectLat(lat);\n return new Point(x, y);\n };\n Mercator.prototype._projectLat = function _projectLat (lat) {\n var datum = this.options.datum,\n ecc = datum.e,\n r = datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2),\n con = ecc * sin(y),\n p = pow((1 - con) / (1 + con), ecc / 2);\n\n // See: http://en.wikipedia.org/wiki/Mercator_projection#Generalization_to_the_ellipsoid\n return r * log(ts * p);\n };\n Mercator.prototype.inverse = function inverse (point, clamp) {\n var proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lng = point.x / (DEG_TO_RAD * r) + lng0,\n lat = limitValue(proj._inverseY(point.y), -proj.MAX_LAT, proj.MAX_LAT);\n if (clamp) {\n lng = limitValue(lng, -proj.MAX_LNG, proj.MAX_LNG);\n }\n return new Location(lat, lng);\n };\n Mercator.prototype._inverseY = function _inverseY (y) {\n var proj = this,\n datum = proj.options.datum,\n r = datum.a,\n ecc = datum.e,\n ecch = ecc / 2,\n ts = exp(-y / r),\n phi = PI_DIV_2 - 2 * atan(ts),\n i;\n for (i = 0; i <= proj.INVERSE_ITERATIONS; i++) {\n var con = ecc * sin(phi),\n p = pow((1 - con) / (1 + con), ecch),\n dphi = PI_DIV_2 - 2 * atan(ts * p) - phi;\n phi += dphi;\n if (math.abs(dphi) <= proj.INVERSE_CONVERGENCE) {\n break;\n }\n }\n return deg(phi);\n };\n\n return Mercator;\n}(Class));\n\nsetDefaultOptions(Mercator, {\n centralMeridian: 0,\n datum: WGS84\n});\n\n\n// WGS 84 / Pseudo-Mercator\n// Used by Google Maps, Bing, OSM, etc.\n// Spherical projection of ellipsoidal coordinates.\nexport var SphericalMercator = (function (Mercator) {\n function SphericalMercator () {\n Mercator.apply(this, arguments);\n }\n\n if ( Mercator ) SphericalMercator.__proto__ = Mercator;\n SphericalMercator.prototype = Object.create( Mercator && Mercator.prototype );\n SphericalMercator.prototype.constructor = SphericalMercator;\n\n SphericalMercator.prototype.initProperties = function initProperties () {\n Mercator.prototype.initProperties.call(this);\n\n deepExtend(this, {\n MAX_LAT: 85.0511287798\n });\n };\n\n SphericalMercator.prototype._projectLat = function _projectLat (lat) {\n var r = this.options.datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2);\n return r * log(ts);\n };\n\n SphericalMercator.prototype._inverseY = function _inverseY (y) {\n var r = this.options.datum.a,\n ts = exp(-y / r);\n return deg(PI_DIV_2 - 2 * atan(ts));\n };\n\n return SphericalMercator;\n}(Mercator));\n\nexport var Equirectangular = (function (Class) {\n function Equirectangular () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) Equirectangular.__proto__ = Class;\n Equirectangular.prototype = Object.create( Class && Class.prototype );\n Equirectangular.prototype.constructor = Equirectangular;\n\n Equirectangular.prototype.forward = function forward (loc) {\n return new Point(loc.lng, loc.lat);\n };\n Equirectangular.prototype.inverse = function inverse (point) {\n return new Location(point.y, point.x);\n };\n\n return Equirectangular;\n}(Class));\n\n// This is the projected coordinate system used for rendering maps in Google Maps, OpenStreetMap, etc\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Certain Web mapping and visualisation applications. It is not a recognised geodetic system: for that see ellipsoidal Mercator CRS code 3395 (WGS 84 / World Mercator).\n// Remarks: Uses spherical development of ellipsoidal coordinates. Relative to WGS 84 / World Mercator (CRS code 3395) errors of 0.7 percent in scale and differences in northing of up to 43km in the map (equivalent to 21km on the ground) may arise.\n// Area of use: World between 85.06°S and 85.06°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (X,Y). Orientations: east, north. UoM: m.\n// https://epsg.io/3857\nexport var EPSG3857 = (function (Class) {\n function EPSG3857() {\n Class.call(this);\n var crs = this,\n proj = crs._proj = new SphericalMercator();\n var c = this.c = 2 * PI * proj.options.datum.a;\n\n // transfrom matrix\n // Scale circumference to 1, mirror Y and shift origin to top left\n this._tm = g.transform().translate(0.5, 0.5).scale(1 / c, -1 / c);\n\n // Inverse transform matrix\n this._itm = g.transform().scale(c, -c).translate(-0.5, -0.5);\n }\n\n if ( Class ) EPSG3857.__proto__ = Class;\n EPSG3857.prototype = Object.create( Class && Class.prototype );\n EPSG3857.prototype.constructor = EPSG3857;\n\n // Location <-> Point (screen coordinates for a given scale)\n EPSG3857.prototype.toPoint = function toPoint (loc, scale, clamp) {\n var point = this._proj.forward(loc, clamp);\n return point.transform(this._tm).scale(scale || 1);\n };\n EPSG3857.prototype.toLocation = function toLocation (point, scale, clamp) {\n var newPoint = point.clone().scale(1 / (scale || 1)).transform(this._itm);\n return this._proj.inverse(newPoint, clamp);\n };\n\n return EPSG3857;\n}(Class));\n\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Very small scale mapping.\n// Remarks: Euro-centric view of world excluding polar areas.\n// Area of use: World between 80°S and 84°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (E,N). Orientations: east, north. UoM: m.\n// https://epsg.io/3395\nexport var EPSG3395 = (function (Class) {\n function EPSG3395() {\n Class.call(this);\n this._proj = new Mercator();\n }\n\n if ( Class ) EPSG3395.__proto__ = Class;\n EPSG3395.prototype = Object.create( Class && Class.prototype );\n EPSG3395.prototype.constructor = EPSG3395;\n EPSG3395.prototype.toPoint = function toPoint (loc) {\n return this._proj.forward(loc);\n };\n EPSG3395.prototype.toLocation = function toLocation (point) {\n return this._proj.inverse(point);\n };\n\n return EPSG3395;\n}(Class));\n\n// Unit: degree\n// Geodetic CRS: WGS 84\n// Scope: Horizontal component of 3D system. Used by the GPS satellite navigation system and for NATO military geodetic surveying.\n// Area of use: World.\n// Coordinate system: Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: degree\n// https://epsg.io/4326\nexport var EPSG4326 = (function (Class) {\n function EPSG4326() {\n Class.call(this);\n this._proj = new Equirectangular();\n }\n\n if ( Class ) EPSG4326.__proto__ = Class;\n EPSG4326.prototype = Object.create( Class && Class.prototype );\n EPSG4326.prototype.constructor = EPSG4326;\n EPSG4326.prototype.toPoint = function toPoint (loc) {\n return this._proj.forward(loc);\n };\n EPSG4326.prototype.toLocation = function toLocation (point) {\n return this._proj.inverse(point);\n };\n\n return EPSG4326;\n}(Class));\n","import {\n isFunction,\n isArray\n} from '../common';\n\n/* eslint-disable arrow-body-style */\n\nvar defineProperty = Object.defineProperty;\n\nexport var extend = Object.assign;\n\nexport var convertToHtml = function (html) {\n var div = document.createElement(\"div\");\n div.innerHTML = html;\n return div.firstChild;\n};\n\nexport var appendHtml = function (html, element) {\n var div = document.createElement('div');\n div.innerHTML = html;\n\n // use childNodes instead of children\n // to cover text nodes as well\n while (div.childNodes.length > 0) {\n element.appendChild(div.childNodes[0]);\n }\n};\n\nexport var removeChildren = function (element) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n};\n\nexport var prepend = function (element, originElement) {\n originElement.insertBefore(element, originElement.firstChild);\n};\n\nexport var wrapInner = function (parent, wrapper) {\n parent.appendChild(wrapper);\n\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n};\n\nexport var toHyphens = function (str) {\n var result = str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n\n return result;\n};\n\nexport var toPixels = function (value) {\n var result;\n\n if (value && String(value).endsWith(\"px\")) {\n result = value;\n } else {\n result = String(value) + \"px\";\n }\n\n return result;\n};\n\nvar detectOS = function (ua) {\n var os = false, minorVersion, match = [],\n // notAndroidPhone = !/mobile safari/i.test(ua),\n agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n },\n osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n },\n formFactorRxs = {\n tablet: /playbook|ipad|fire/i\n },\n browserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n };\n\n for (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent === \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\n\n os = {};\n os.device = agent;\n os.tablet = testRegex(agent, formFactorRxs, false);\n os.browser = testRegex(ua, browserRxs, \"default\");\n os.name = testRegex(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = (match[3] || \"0\").replace(\"_\", \".\");\n minorVersion = os.minorVersion.replace(\".\", \"\").substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join(\"0\"));\n\n\n break;\n }\n }\n }\n\n return os;\n};\n\nfunction testRegex(agent, regexes, dflt) {\n for (var regex in regexes) {\n if (regexes.hasOwnProperty(regex) && regexes[regex].test(agent)) {\n return regex;\n }\n }\n return dflt !== undefined ? dflt : agent;\n}\n\nexport var hasNativeScrolling = function (userAgent) {\n var os = detectOS(userAgent);\n return os.ios || os.android;\n};\n\nvar detectBrowser = function (userAgent) {\n var browser = false,\n match = [],\n browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = userAgent.match(browserRxs[agent]);\n\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n};\n\nexport var getEventMap = function () {\n var eventMap = {\n down: \"touchstart mousedown\",\n move: \"mousemove touchmove\",\n up: \"mouseup touchend touchcancel\",\n cancel: \"mouseleave touchcancel\"\n };\n\n var support = getSupportedFeatures();\n\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n eventMap = {\n down: \"touchstart\",\n move: \"touchmove\",\n up: \"touchend touchcancel\",\n cancel: \"touchcancel\"\n };\n } else if (support.pointers) {\n eventMap = {\n down: \"pointerdown\",\n move: \"pointermove\",\n up: \"pointerup\",\n cancel: \"pointercancel pointerleave\"\n };\n } else if (support.msPointers) {\n eventMap = {\n down: \"MSPointerDown\",\n move: \"MSPointerMove\",\n up: \"MSPointerUp\",\n cancel: \"MSPointerCancel MSPointerLeave\"\n };\n }\n\n return eventMap;\n};\n\nexport var getSupportedFeatures = function () {\n var os = detectOS(navigator.userAgent);\n var browser = detectBrowser(navigator.userAgent);\n\n var chrome = browser.chrome,\n mobileChrome = browser.crios,\n mozilla = browser.mozilla,\n safari = browser.safari;\n\n var support = {};\n\n support.mobileOS = os;\n support.touch = \"ontouchstart\" in window;\n support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n support.eventCapture = document.documentElement.addEventListener;\n\n var table = document.createElement(\"table\");\n\n var transitions = support.transitions = false,\n transforms = support.transforms = false;\n\n var STRING = \"string\";\n\n [\"Moz\", \"webkit\", \"O\", \"ms\"].forEach(function(prefix) {\n var hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\n\n if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\n var lowPrefix = prefix.toLowerCase();\n\n transforms = {\n css: (lowPrefix !== \"ms\") ? \"-\" + lowPrefix + \"-\" : \"\",\n prefix: prefix,\n event: (lowPrefix === \"o\" || lowPrefix === \"webkit\") ? lowPrefix : \"\"\n };\n\n if (hasTransitions) {\n transitions = transforms;\n transitions.event = transitions.event ? transitions.event + \"TransitionEnd\" : \"transitionend\";\n }\n\n return false;\n }\n });\n\n table = null;\n\n support.transforms = transforms;\n support.transitions = transitions;\n\n support.delayedClick = function() {\n // only the mobile devices with touch events do this.\n if (support.touch) {\n // All iOS devices so far (by the time I am writing this, iOS 9.0.2 is the latest),\n // delay their click events.\n if (support.mobileOS.ios) {\n return true;\n }\n\n if (support.mobileOS.android) {\n\n if (!support.browser.chrome) { // older webkits and webviews delay the click\n return true;\n }\n\n // from here on, we deal with Chrome on Android.\n if (support.browser.version < 32) {\n return false;\n }\n\n // Chrome 32+ does conditional fast clicks if the view port is not user scalable.\n var meta = document.querySelector(\"meta[name=viewport]\");\n var contentAttr = meta ? meta.getAttribute(\"content\") : \"\";\n return !contentAttr.match(/user-scalable=no/i);\n }\n }\n\n return false;\n };\n\n return support;\n};\n\nexport var ownsElement = function (parent, element) {\n if (!element) {\n return false;\n }\n\n var node = element.parentNode;\n\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n\n node = node.parentNode;\n }\n\n return false;\n};\n\nexport var contains = function (parent, element) {\n return parent === element || ownsElement(parent, element);\n};\n\nexport var proxy = function (method, context) {\n return method.bind(context);\n};\n\nfunction isString(value) {\n return typeof(value) === \"string\";\n}\n\nexport var on = function (element, events, filter, handler, useCapture) {\n addEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport var addEventListeners = function (element, events, filter, handler, useCapture) {\n var eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n addEventListener(element, eventName, filter, handler, useCapture);\n });\n};\n\nexport var addEventListener = function (element, event, filter, handler, useCapture) {\n var eventHandler = handler;\n var eventFilter;\n\n if (filter && isFunction(filter) && !handler) {\n eventHandler = filter;\n } else if (filter && isString(filter) && isFunction(eventHandler)) {\n eventFilter = filter;\n }\n\n element.addEventListener(event, function(e) {\n var closestMatchingTarget = e.target ? e.target.closest(eventFilter) : null;\n\n if (!eventFilter ||\n (eventFilter && e.target && closestMatchingTarget)) {\n var currentTarget = eventFilter ? closestMatchingTarget : e.currentTarget;\n\n // reassign the property as it is a getters only\n defineProperty(e, \"currentTarget\", { value: currentTarget });\n // keep a reference to the top-level target\n defineProperty(e, \"delegateTarget\", { value: element });\n\n eventHandler(e);\n }\n }, Boolean(useCapture));\n};\n\nexport var off = function (element, events, filter, handler, useCapture) {\n removeEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport var removeEventListeners = function (element, events, handler, useCapture) {\n var eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n removeEventListener(element, eventName, handler, useCapture);\n });\n};\n\nexport var removeEventListener = function (element, event, handler, useCapture) {\n element.removeEventListener(event, handler, Boolean(useCapture));\n};\n\nexport var applyEventMap = function (events) {\n var eventMap = getEventMap(navigator.userAgent);\n function queryEventMap(e) {\n return eventMap[e] || e;\n }\n\n var eventRegEx = /([^ ]+)/g;\n var appliedEvents = events.replace(eventRegEx, queryEventMap);\n\n return appliedEvents;\n};\n\nexport var setDefaultEvents = function (type, events) {\n var proto = type.prototype;\n\n if (proto.events) {\n events.forEach(function (event) {\n if (proto.events.indexOf(event) < 0) {\n proto.events.push(event);\n }\n });\n } else {\n proto.events = events;\n }\n};\n\nexport var wheelDeltaY = function (jQueryEvent) {\n var e = jQueryEvent.originalEvent || jQueryEvent;\n var deltaY = e.wheelDeltaY;\n var delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\n delta = (-e.detail) * 10;\n }\n\n return delta;\n};\n\nexport var guid = function () {\n var id = \"\";\n var i;\n var random;\n\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16); // eslint-disable-line no-nested-ternary\n }\n\n return id;\n};\n\nexport var now = function () {\n return Number(new Date());\n};\n\nexport var noop = function () {};\n\nexport var renderPos = function (pos) {\n var result = [];\n\n if (pos) {\n var parts = toHyphens(pos).split(\"-\");\n\n for (var i = 0; i < parts.length; i++) {\n result.push(\"k-pos-\" + parts[i]);\n }\n }\n\n return result.join(\" \");\n};\n\n/* eslint-enable arrow-body-style */\n","import {\n Class\n} from '../../common';\n\nvar STRING = \"string\";\nvar FUNCTION = \"function\";\n\nvar preventDefault = function() {\n this._defaultPrevented = true;\n};\n\nvar isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n};\n\nexport var Observable = (function (Class) {\n function Observable() {\n Class.call(this);\n this._events = {};\n }\n\n if ( Class ) Observable.__proto__ = Class;\n Observable.prototype = Object.create( Class && Class.prototype );\n Observable.prototype.constructor = Observable;\n\n Observable.prototype.destroy = function destroy () {\n this.unbind();\n };\n\n Observable.prototype.bind = function bind (event, handlers, one) {\n var that = this,\n idx,\n eventNames = typeof event === STRING ? [event] : event || [],\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined) {\n for (idx in event) {\n that.bind(idx, event[idx]);\n }\n\n return that;\n }\n\n /* eslint-disable no-loop-func */\n var loop = function ( ) {\n var eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n\n handler.original = original;\n }\n\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n };\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) loop( );\n /* eslint-enable no-loop-func */\n\n return that;\n };\n\n Observable.prototype.one = function one (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n };\n\n Observable.prototype.first = function first (eventName, handlers) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n var eventName$1 = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n events = that._events[eventName$1] = that._events[eventName$1] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n };\n\n Observable.prototype.trigger = function trigger (eventName, eventArgs) {\n var that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n var e = eventArgs || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n };\n\n Observable.prototype.unbind = function unbind (eventName, handler) {\n var that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n };\n\n Observable.prototype._setEvents = function _setEvents (options) {\n var this$1 = this;\n\n var length = (this.events || []).length;\n\n for (var idx = 0; idx < length; idx ++) {\n var e = this$1.events[idx];\n\n if (this$1.options[e] && options[e]) {\n this$1.unbind(e, this$1.options[e]);\n\n if (this$1._events && this$1._events[e]) {\n delete this$1._events[e];\n }\n }\n }\n\n this.bind(this.events, options);\n };\n\n return Observable;\n}(Class));\n","import {\n addClass,\n defined,\n valueOrDefault,\n deepExtend,\n setDefaultOptions\n} from '../common';\n\nimport {\n appendHtml,\n removeChildren\n} from './utils';\n\nimport { Observable } from './scroller/observable';\n\nexport var Attribution = (function (Observable) {\n function Attribution(element, options) {\n Observable.call(this);\n this.element = element;\n\n this._initOptions(options);\n this.items = [];\n\n addClass(this.element, 'k-widget k-attribution');\n }\n\n if ( Observable ) Attribution.__proto__ = Observable;\n Attribution.prototype = Object.create( Observable && Observable.prototype );\n Attribution.prototype.constructor = Attribution;\n\n Attribution.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Attribution.prototype.filter = function filter (extent, zoom) {\n this._extent = extent;\n this._zoom = zoom;\n this._render();\n };\n\n Attribution.prototype.add = function add (item) {\n var newItem = item;\n\n if (defined(item)) {\n if (typeof item === 'string') {\n newItem = {\n text: item\n };\n }\n\n this.items.push(newItem);\n this._render();\n }\n };\n\n Attribution.prototype.remove = function remove (text) {\n var this$1 = this;\n\n var result = [];\n\n for (var i = 0; i < this.items.length; i++) {\n var item = this$1.items[i];\n\n if (item.text !== text) {\n result.push(item);\n }\n }\n\n this.items = result;\n this._render();\n };\n\n Attribution.prototype.clear = function clear () {\n this.items = [];\n removeChildren(this.element);\n };\n\n Attribution.prototype._render = function _render () {\n var this$1 = this;\n\n var result = [];\n\n for (var i = 0; i < this.items.length; i++) {\n var item = this$1.items[i];\n var text = this$1._itemText(item);\n\n if (text !== '') {\n result.push(text);\n }\n }\n\n if (result.length > 0) {\n removeChildren(this.element);\n\n var html = result.join(this.options.separator);\n appendHtml(html, this.element);\n\n this.showElement();\n } else {\n this.hideElement();\n }\n };\n\n Attribution.prototype.hideElement = function hideElement () {\n this.element.style.display = \"none\";\n };\n\n Attribution.prototype.showElement = function showElement () {\n this.element.style.display = \"\";\n };\n\n Attribution.prototype._itemText = function _itemText (item) {\n var text = '';\n var inZoomLevel = this._inZoomLevel(item.minZoom, item.maxZoom);\n var inArea = this._inArea(item.extent);\n\n if (inZoomLevel && inArea) {\n text += item.text;\n }\n\n return text;\n };\n\n Attribution.prototype._inZoomLevel = function _inZoomLevel (min, max) {\n var result = true;\n var newMin = valueOrDefault(min, -Number.MAX_VALUE);\n var newMax = valueOrDefault(max, Number.MAX_VALUE);\n\n result = this._zoom > newMin && this._zoom < newMax;\n return result;\n };\n\n Attribution.prototype._inArea = function _inArea (area) {\n var result = true;\n\n if (area) {\n result = area.contains(this._extent);\n }\n\n return result;\n };\n\n return Attribution;\n}(Observable));\n\nsetDefaultOptions(Attribution, {\n name: 'Attribution',\n separator: ' | '\n});\n","import {\n deepExtend,\n addClass,\n keys,\n setDefaultOptions,\n renderIcon\n} from '../common';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport {\n proxy,\n on,\n off,\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nvar PAN = \"pan\";\n\nvar directionsMap = {\n up: {\n className: \"k-navigator-n\",\n iconClass: \"k-i-caret-alt-up\"\n },\n down: {\n className: \"k-navigator-s\",\n iconClass: \"k-i-caret-alt-down\"\n },\n right: {\n className: \"k-navigator-e\",\n iconClass: \"k-i-caret-alt-right\"\n },\n left: {\n className: \"k-navigator-w\",\n iconClass: \"k-i-caret-alt-left\"\n }\n};\n\nfunction createButton(direction, iconOptions) {\n var html =\n '<button class=\"k-button k-button-square k-rounded-full k-button-flat k-button-flat-base k-icon-button ' +\n directionsMap[direction].className +\n '\" aria-label=\"move ' + direction + '\">' +\n renderIcon({ icon: (\"caret-alt-\" + direction), iconClass: \"k-button-icon\", svgIcons: iconOptions.svgIcons, type: iconOptions.type }) +\n '</button>';\n\n return convertToHtml(html);\n}\n\nexport var Navigator = (function (Observable) {\n function Navigator(element, options) {\n Observable.call(this);\n\n this.element = element;\n this._initOptions(options);\n\n var navigateUpButton = createButton(\"up\", options.icons);\n var navigateRightlButton = createButton(\"right\", options.icons);\n var navigateDownButton = createButton(\"down\", options.icons);\n var navigateLeftButton = createButton(\"left\", options.icons);\n\n this.element.appendChild(navigateUpButton);\n this.element.appendChild(navigateRightlButton);\n this.element.appendChild(navigateDownButton);\n this.element.appendChild(navigateLeftButton);\n\n addClass(this.element, 'k-widget k-navigator');\n\n on(this.element, \"click\", \".k-button\", proxy(this._click, this));\n\n var parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n this._tabindex(this._keyroot);\n\n this._keydownHandler = proxy(this._keydown, this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n if ( Observable ) Navigator.__proto__ = Observable;\n Navigator.prototype = Object.create( Observable && Observable.prototype );\n Navigator.prototype.constructor = Navigator;\n\n Navigator.prototype.destroy = function destroy () {\n this.dispose();\n };\n\n // originates from the kendo.jquery version\n Navigator.prototype.dispose = function dispose () {\n off(this._keyroot, \"keydown\", this._keydownHandler);\n };\n\n Navigator.prototype._tabindex = function _tabindex (target) {\n var targetElement = target || this.wrapper || this.element;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n };\n\n Navigator.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Navigator.prototype._pan = function _pan (x, y) {\n var panStep = this.options.panStep;\n\n this.trigger(PAN, {\n x: x * panStep,\n y: y * panStep\n });\n };\n\n Navigator.prototype._click = function _click (e) {\n var x = 0;\n var y = 0;\n var button = e.currentTarget;\n\n if (button.matches('.k-navigator-n')) {\n y = 1;\n } else if (button.matches('.k-navigator-s')) {\n y = -1;\n } else if (button.matches('.k-navigator-e')) {\n x = 1;\n } else if (button.matches('.k-navigator-w')) {\n x = -1;\n }\n\n this._pan(x, y);\n\n e.preventDefault();\n };\n\n /* eslint-disable indent */\n Navigator.prototype._keydown = function _keydown (e) {\n switch (e.which) {\n case keys.UP:\n this._pan(0, 1);\n e.preventDefault();\n break;\n case keys.DOWN:\n this._pan(0, -1);\n e.preventDefault();\n break;\n case keys.RIGHT:\n this._pan(1, 0);\n e.preventDefault();\n break;\n case keys.LEFT:\n this._pan(-1, 0);\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n\n return Navigator;\n}(Observable));\n\nsetDefaultOptions(Navigator, {\n name: 'Navigator',\n panStep: 1\n});\n\n\nsetDefaultEvents(Navigator, [\n PAN\n]);\n","import {\n deepExtend,\n addClass,\n keys,\n hasClasses,\n setDefaultOptions,\n renderIcon\n} from '../common';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport {\n on,\n off,\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nfunction createButton(direction, icon, iconOptions) {\n var html =\n '<button class=\"k-button k-button-md k-rounded-md k-button-solid k-button-solid-base k-icon-button k-zoom-' + direction +\n '\" title=\"zoom-' + direction +\n '\" aria-label=\"zoom-' + direction + '\">' +\n renderIcon({ icon: icon, iconClass: \"k-button-icon\", svgIcons: iconOptions.svgIcons, type: iconOptions.type }) +\n '</button>';\n\n return convertToHtml(html);\n}\n\nvar PLUS = 187;\nvar MINUS = 189;\nvar FF_PLUS = 61;\nvar FF_MINUS = 173;\nvar CHANGE = \"change\";\n\nexport var ZoomControl = (function (Observable) {\n function ZoomControl(element, options, iconOptions) {\n Observable.call(this);\n this.element = element;\n this._initOptions(options);\n\n var zoomInButton = createButton('in', 'plus', iconOptions);\n var zoomOutButton = createButton('out', 'minus', iconOptions);\n\n this.element.appendChild(zoomInButton);\n this.element.appendChild(zoomOutButton);\n\n addClass(this.element, 'k-widget k-zoom-control k-button-group k-group-horizontal');\n\n this._clickHandler = this._click.bind(this);\n on(this.element, \"click\", \".k-button\", this._clickHandler);\n\n var parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n\n this._tabindex(this._keyroot);\n\n this._keydownHandler = this._keydown.bind(this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n if ( Observable ) ZoomControl.__proto__ = Observable;\n ZoomControl.prototype = Object.create( Observable && Observable.prototype );\n ZoomControl.prototype.constructor = ZoomControl;\n\n ZoomControl.prototype.destroy = function destroy () {\n if (this.element) {\n off(this.element, \"click\", this._clickHandler);\n }\n\n if (this._keyroot) {\n off(this._keyroot, 'keydown', this._keydownHandler);\n }\n };\n\n ZoomControl.prototype._tabindex = function _tabindex (target) {\n var targetElement = target || this.wrapper || this.element;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n };\n\n ZoomControl.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n ZoomControl.prototype._change = function _change (direction) {\n var zoomStep = this.options.zoomStep;\n this.trigger(CHANGE, { delta: direction * zoomStep });\n };\n\n ZoomControl.prototype._click = function _click (e) {\n var button = e.currentTarget;\n var direction = 1;\n\n if (hasClasses(button, 'k-zoom-out')) {\n direction = -1;\n }\n\n this._change(direction);\n e.preventDefault();\n };\n\n /* eslint-disable indent */\n ZoomControl.prototype._keydown = function _keydown (e) {\n switch (e.which) {\n case keys.NUMPAD_PLUS:\n case PLUS:\n case FF_PLUS:\n this._change(1);\n break;\n case keys.NUMPAD_MINUS:\n case MINUS:\n case FF_MINUS:\n this._change(-1);\n break;\n default:\n break;\n }\n };\n\n return ZoomControl;\n}(Observable));\n\nsetDefaultOptions(ZoomControl, {\n name: 'ZoomControl',\n zoomStep: 1\n});\n\nsetDefaultEvents(ZoomControl, [\n CHANGE\n]);\n","import {\n Class,\n valueOrDefault\n} from '../common';\n\nimport { Location } from './location';\n\nvar math = Math,\n max = math.max,\n min = math.min;\n\nexport var Extent = (function (Class) {\n function Extent(initialNw, initialSe) {\n Class.call(this);\n var nw = Location.create(initialNw);\n var se = Location.create(initialSe);\n\n if (nw.lng + 180 > se.lng + 180 && nw.lat + 90 < se.lat + 90) {\n this.se = nw;\n this.nw = se;\n } else {\n this.se = se;\n this.nw = nw;\n }\n }\n\n if ( Class ) Extent.__proto__ = Class;\n Extent.prototype = Object.create( Class && Class.prototype );\n Extent.prototype.constructor = Extent;\n\n var staticAccessors = { World: { configurable: true } };\n\n Extent.prototype.contains = function contains (loc) {\n var nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n return loc &&\n lng + 180 >= nw.lng + 180 && lng + 180 <= se.lng + 180 &&\n lat + 90 >= se.lat + 90 && lat + 90 <= nw.lat + 90;\n };\n\n Extent.prototype.center = function center () {\n var nw = this.nw;\n var se = this.se;\n var lng = nw.lng + (se.lng - nw.lng) / 2;\n var lat = nw.lat + (se.lat - nw.lat) / 2;\n\n return new Location(lat, lng);\n };\n\n Extent.prototype.containsAny = function containsAny (locs) {\n var this$1 = this;\n\n var result = false;\n\n for (var i = 0; i < locs.length; i++) {\n result = result || this$1.contains(locs[i]);\n }\n\n return result;\n };\n\n Extent.prototype.include = function include (loc) {\n var nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n nw.lng = min(nw.lng, lng);\n nw.lat = max(nw.lat, lat);\n se.lng = max(se.lng, lng);\n se.lat = min(se.lat, lat);\n };\n\n Extent.prototype.includeAll = function includeAll (locs) {\n var this$1 = this;\n\n for (var i = 0; i < locs.length; i++) {\n this$1.include(locs[i]);\n }\n };\n\n Extent.prototype.edges = function edges () {\n var nw = this.nw, se = this.se;\n\n return {\n nw: this.nw,\n ne: new Location(nw.lat, se.lng),\n se: this.se,\n sw: new Location(se.lat, nw.lng)\n };\n };\n\n Extent.prototype.toArray = function toArray () {\n var nw = this.nw, se = this.se;\n\n return [\n nw,\n new Location(nw.lat, se.lng),\n se,\n new Location(se.lat, nw.lng)\n ];\n };\n\n Extent.prototype.overlaps = function overlaps (extent) {\n return this.containsAny(extent.toArray()) ||\n extent.containsAny(this.toArray());\n };\n\n Extent.create = function create (a, b) {\n if (a instanceof Extent) {\n return a;\n } else if (a && b) {\n return new Extent(a, b);\n } else if (a && a.length === 4 && !b) {\n return new Extent([\n a[0],\n a[1]\n ], [\n a[2],\n a[3]\n ]);\n }\n };\n\n staticAccessors.World.get = function () {\n return new Extent([ 90, -180 ], [ -90, 180 ]);\n };\n\n Object.defineProperties( Extent, staticAccessors );\n\n return Extent;\n}(Class));\n","export var SHOW_TOOLTIP = 'showTooltip';\nexport var HIDE_TOOLTIP = 'hideTooltip';\nexport var CENTER_CHANGE = 'centerChange';\nexport var ZOOM_CHANGE = 'zoomChange';\nexport var INIT = 'init';\n","import { Class, deepExtend, setDefaultOptions } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nexport var Tooltip = (function (Class) {\n function Tooltip(widgetService, options) {\n Class.call(this);\n\n this.widgetService = widgetService;\n this.options = deepExtend({}, this.options, options);\n this.offset = { x: 0, y: 0 };\n }\n\n if ( Class ) Tooltip.__proto__ = Class;\n Tooltip.prototype = Object.create( Class && Class.prototype );\n Tooltip.prototype.constructor = Tooltip;\n\n var prototypeAccessors = { anchor: { configurable: true } };\n\n Tooltip.prototype.show = function show (anchor, args) {\n if (this.location === args.location) {\n return;\n }\n\n this.anchor = anchor;\n this.location = args.location;\n\n this.widgetService.notify(SHOW_TOOLTIP,\n Object.assign({ anchor: this.anchor }, args)\n );\n\n this.visible = true;\n };\n\n Tooltip.prototype.hide = function hide () {\n if (this.widgetService) {\n this.widgetService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n this.location = null;\n };\n\n prototypeAccessors.anchor.get = function () {\n return this._anchor;\n };\n\n prototypeAccessors.anchor.set = function (anchor) {\n var documentPoint = this.widgetService.widget._toDocumentCoordinates({\n x: anchor.left - this.offset.x,\n y: anchor.top - this.offset.y\n });\n\n this._anchor = {\n left: documentPoint.left,\n top: documentPoint.top\n };\n };\n\n Tooltip.prototype.destroy = function destroy () {\n this.widgetService = null;\n };\n\n Object.defineProperties( Tooltip.prototype, prototypeAccessors );\n\n return Tooltip;\n}(Class));\n\nsetDefaultOptions(Tooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n","import {\n Class,\n addClass,\n deepExtend,\n defined\n} from '../../common';\n\nimport {\n Extent\n} from './../extent';\n\nimport {\n getSupportedFeatures\n} from '../utils';\n\nexport var Layer = (function (Class) {\n function Layer(map, options) {\n Class.call(this);\n\n this.support = getSupportedFeatures();\n\n this._initOptions(options);\n this.map = map;\n\n var element = document.createElement(\"div\");\n addClass(element, \"k-layer\");\n element.style.zIndex = this.options.zIndex;\n element.style.opacity = this.options.opacity;\n\n this.element = element;\n\n map.scrollElement.appendChild(this.element);\n\n this._beforeReset = this._beforeReset.bind(this);\n this._reset = this._reset.bind(this);\n this._resize = this._resize.bind(this);\n this._panEnd = this._panEnd.bind(this);\n\n this._activate();\n this._updateAttribution();\n }\n\n if ( Class ) Layer.__proto__ = Class;\n Layer.prototype = Object.create( Class && Class.prototype );\n Layer.prototype.constructor = Layer;\n\n Layer.prototype.destroy = function destroy () {\n this._deactivate();\n };\n\n Layer.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Layer.prototype.show = function show () {\n this.reset();\n this._activate();\n this._applyExtent(true);\n };\n\n Layer.prototype.hide = function hide () {\n this._deactivate();\n this._setVisibility(false);\n };\n\n Layer.prototype.reset = function reset () {\n this._beforeReset();\n this._reset();\n };\n\n Layer.prototype._reset = function _reset () {\n this._applyExtent();\n };\n\n Layer.prototype._beforeReset = function _beforeReset () {\n\n };\n\n Layer.prototype._resize = function _resize () {\n\n };\n\n Layer.prototype._panEnd = function _panEnd () {\n this._applyExtent();\n };\n\n Layer.prototype._applyExtent = function _applyExtent () {\n var options = this.options;\n var zoom = this.map.zoom();\n var matchMinZoom = !defined(options.minZoom) || zoom >= options.minZoom;\n var matchMaxZoom = !defined(options.maxZoom) || zoom <= options.maxZoom;\n var extent = Extent.create(options.extent);\n var inside = !extent || extent.overlaps(this.map.extent());\n\n this._setVisibility(matchMinZoom && matchMaxZoom && inside);\n };\n\n Layer.prototype._setVisibility = function _setVisibility (visible) {\n this.element.style.display = visible ? '' : 'none';\n };\n\n Layer.prototype._activate = function _activate () {\n var map = this.map;\n\n this._deactivate();\n\n map.bind('beforeReset', this._beforeReset);\n map.bind('reset', this._reset);\n map.bind('resize', this._resize);\n map.bind('panEnd', this._panEnd);\n };\n\n Layer.prototype._deactivate = function _deactivate () {\n var map = this.map;\n\n map.unbind('beforeReset', this._beforeReset);\n map.unbind('reset', this._reset);\n map.unbind('resize', this._resize);\n map.unbind('panEnd', this._panEnd);\n };\n\n Layer.prototype._updateAttribution = function _updateAttribution () {\n var attribution = this.map.attribution;\n\n if (attribution) {\n attribution.add(this.options.attribution);\n }\n };\n\n Layer.prototype._readData = function _readData () {\n var data = this.options.data || [];\n return data;\n };\n\n Layer.prototype._hasData = function _hasData () {\n return this._data && this._data.length > 0;\n };\n\n Layer.prototype._layerIndex = function _layerIndex () {\n var layers = this.map.layers || [];\n return layers.indexOf(this);\n };\n\n return Layer;\n}(Class));\n","import {\n geometry as g,\n throttle\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n deepExtend,\n round,\n limitValue,\n hashKey,\n setDefaultOptions,\n isFunction\n} from '../../common';\n\nimport { removeChildren } from '../utils';\n\nimport { Layer } from './layer';\n\nimport TemplateService from '../../services/template-service';\n\nvar math = Math,\n Point = g.Point;\n\nfunction compileTemplate(template) {\n if (isFunction(template)) {\n return template;\n }\n\n return TemplateService.compile(template);\n}\n\nfunction roundPoint(point) {\n return new Point(round(point.x), round(point.y));\n}\n\nfunction renderSize(size) {\n var newSize = size;\n\n if (typeof(size) !== \"string\") {\n newSize += \"px\";\n }\n\n return newSize;\n}\n\nexport var TileLayer = (function (Layer) {\n function TileLayer(map, options) {\n Layer.call(this, map, options);\n\n if (typeof this.options.subdomains === 'string') {\n this.options.subdomains = this.options.subdomains.split('');\n }\n\n var viewType = this._viewType();\n this._view = new viewType(this.element, this.options);\n }\n\n if ( Layer ) TileLayer.__proto__ = Layer;\n TileLayer.prototype = Object.create( Layer && Layer.prototype );\n TileLayer.prototype.constructor = TileLayer;\n\n TileLayer.prototype.destroy = function destroy () {\n Layer.prototype.destroy.call(this);\n this._view.destroy();\n this._view = null;\n };\n\n TileLayer.prototype._beforeReset = function _beforeReset () {\n var map = this.map;\n var origin = map.locationToLayer(map.extent().nw).round();\n this._view.viewOrigin(origin);\n };\n\n TileLayer.prototype._reset = function _reset () {\n Layer.prototype._reset.call(this);\n this._updateView();\n this._view.reset();\n };\n\n TileLayer.prototype._viewType = function _viewType () {\n return TileView;\n };\n\n TileLayer.prototype._activate = function _activate () {\n Layer.prototype._activate.call(this);\n\n if (!this.support.mobileOS) {\n if (!this._pan) {\n this._pan = throttle(this._render.bind(this), 100);\n }\n\n this.map.bind('pan', this._pan);\n }\n };\n\n TileLayer.prototype._deactivate = function _deactivate () {\n Layer.prototype._deactivate.call(this);\n\n if (this._pan) {\n this.map.unbind('pan', this._pan);\n }\n };\n\n TileLayer.prototype._updateView = function _updateView () {\n var view = this._view,\n map = this.map,\n extent = map.extent(),\n extentToPoint = {\n nw: map.locationToLayer(extent.nw).round(),\n se: map.locationToLayer(extent.se).round()\n };\n\n view.center(map.locationToLayer(map.center()));\n view.extent(extentToPoint);\n view.zoom(map.zoom());\n };\n\n TileLayer.prototype._resize = function _resize () {\n this._render();\n };\n\n TileLayer.prototype._panEnd = function _panEnd (e) {\n Layer.prototype._panEnd.call(this, e);\n this._render();\n };\n\n TileLayer.prototype._render = function _render () {\n this._updateView();\n this._view.render();\n };\n\n return TileLayer;\n}(Layer));\n\nsetDefaultOptions(TileLayer, {\n tileSize: 256,\n subdomains: ['a', 'b', 'c'],\n urlTemplate: '',\n zIndex: 1\n});\n\nexport var TileView = (function (Class) {\n function TileView(element, options) {\n Class.call(this);\n this.element = element;\n this._initOptions(options);\n this.pool = new TilePool();\n }\n\n if ( Class ) TileView.__proto__ = Class;\n TileView.prototype = Object.create( Class && Class.prototype );\n TileView.prototype.constructor = TileView;\n\n TileView.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n TileView.prototype.center = function center (center$1) {\n this._center = center$1;\n };\n\n TileView.prototype.extent = function extent (extent$1) {\n this._extent = extent$1;\n };\n\n TileView.prototype.viewOrigin = function viewOrigin (origin) {\n this._viewOrigin = origin;\n };\n\n TileView.prototype.zoom = function zoom (zoom$1) {\n this._zoom = zoom$1;\n };\n\n TileView.prototype.pointToTileIndex = function pointToTileIndex (point) {\n return new Point(math.floor(point.x / this.options.tileSize), math.floor(point.y / this.options.tileSize));\n };\n\n TileView.prototype.tileCount = function tileCount () {\n var size = this.size(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n nw = this._extent.nw,\n point = this.indexToPoint(firstTileIndex).translate(-nw.x, -nw.y);\n\n return {\n x: math.ceil((math.abs(point.x) + size.width) / this.options.tileSize),\n y: math.ceil((math.abs(point.y) + size.height) / this.options.tileSize)\n };\n };\n\n TileView.prototype.size = function size () {\n var nw = this._extent.nw,\n se = this._extent.se,\n diff = se.clone().translate(-nw.x, -nw.y);\n\n return {\n width: diff.x,\n height: diff.y\n };\n };\n\n TileView.prototype.indexToPoint = function indexToPoint (index) {\n var x = index.x,\n y = index.y;\n\n return new Point(x * this.options.tileSize, y * this.options.tileSize);\n };\n\n TileView.prototype.subdomainText = function subdomainText () {\n var subdomains = this.options.subdomains;\n return subdomains[this.subdomainIndex++ % subdomains.length];\n };\n\n TileView.prototype.destroy = function destroy () {\n removeChildren(this.element);\n this.pool.empty();\n };\n\n TileView.prototype.reset = function reset () {\n this.pool.reset();\n this.subdomainIndex = 0;\n this.render();\n };\n\n TileView.prototype.render = function render () {\n var this$1 = this;\n\n var size = this.tileCount(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n tile, x, y;\n\n for (x = 0; x < size.x; x++) {\n for (y = 0; y < size.y; y++) {\n tile = this$1.createTile({\n x: firstTileIndex.x + x,\n y: firstTileIndex.y + y\n });\n\n if (!tile.visible) {\n tile.show();\n }\n }\n }\n };\n\n TileView.prototype.createTile = function createTile (currentIndex) {\n var options = this.tileOptions(currentIndex);\n var tile = this.pool.get(this._center, options);\n\n if (!tile.element.parentNode) {\n this.element.append(tile.element);\n }\n\n return tile;\n };\n\n TileView.prototype.tileOptions = function tileOptions (currentIndex) {\n var index = this.wrapIndex(currentIndex),\n point = this.indexToPoint(currentIndex),\n origin = this._viewOrigin,\n offset = point.clone().translate(-origin.x, -origin.y);\n\n return {\n index: index,\n currentIndex: currentIndex,\n point: point,\n offset: roundPoint(offset),\n zoom: this._zoom,\n size: this.options.tileSize,\n subdomain: this.subdomainText(),\n urlTemplate: this.options.urlTemplate,\n errorUrlTemplate: this.options.errorUrlTemplate\n };\n };\n\n TileView.prototype.wrapIndex = function wrapIndex (index) {\n var boundary = math.pow(2, this._zoom);\n\n return {\n x: this.wrapValue(index.x, boundary),\n y: limitValue(index.y, 0, boundary - 1)\n };\n };\n\n TileView.prototype.wrapValue = function wrapValue (value, boundary) {\n var remainder = math.abs(value) % boundary;\n var wrappedValue = value;\n\n if (value >= 0) {\n wrappedValue = remainder;\n } else {\n wrappedValue = boundary - (remainder === 0 ? boundary : remainder);\n }\n\n return wrappedValue;\n };\n\n return TileView;\n}(Class));\n\nexport var ImageTile = (function (Class) {\n function ImageTile(id, options) {\n Class.call(this);\n this.id = id;\n this.visible = true;\n this._initOptions(options);\n this.createElement();\n this.show();\n }\n\n if ( Class ) ImageTile.__proto__ = Class;\n ImageTile.prototype = Object.create( Class && Class.prototype );\n ImageTile.prototype.constructor = ImageTile;\n\n ImageTile.prototype.destroy = function destroy () {\n var element = this.element;\n var parentNode = element ? element.parentNode : null;\n\n if (element) {\n if (parentNode) {\n parentNode.removeChild(element);\n }\n\n this.element = null;\n }\n };\n\n ImageTile.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n ImageTile.prototype.createElement = function createElement () {\n var el = document.createElement(\"img\");\n var size = this.options.size + \"px\";\n el.style.position = \"absolute\";\n el.style.display = \"block\";\n el.style.width = el.style.maxWidth = size;\n el.style.height = el.style.maxHeight = size;\n\n this.element = el;\n\n // todo\n // add on error handler\n\n // this.element =\n // $('<img style=\\'position: absolute; display: block;\\' alt=\\'\\' />')\n // .css({\n // width: this.options.size,\n // height: this.options.size\n // })\n // .on('error', proxy(function(e) {\n // if (this.errorUrl()) {\n // e.target.setAttribute('src', this.errorUrl());\n // } else {\n // e.target.removeAttribute('src');\n // }\n // }, this));\n };\n\n ImageTile.prototype.show = function show () {\n var element = this.element;\n element.style.top = renderSize(this.options.offset.y);\n element.style.left = renderSize(this.options.offset.x);\n\n var url = this.url();\n\n if (url) {\n element.setAttribute('src', url);\n }\n\n element.style.visibility = 'visible';\n this.visible = true;\n };\n\n ImageTile.prototype.hide = function hide () {\n this.element.style.visibility = 'hidden';\n this.visible = false;\n };\n\n ImageTile.prototype.url = function url () {\n var urlResult = compileTemplate(this.options.urlTemplate);\n return urlResult(this.urlOptions());\n };\n\n ImageTile.prototype.errorUrl = function errorUrl () {\n var urlResult = compileTemplate(this.options.errorUrlTemplate);\n return urlResult(this.urlOptions());\n };\n\n ImageTile.prototype.urlOptions = function urlOptions () {\n var options = this.options;\n\n return {\n zoom: options.zoom,\n subdomain: options.subdomain,\n z: options.zoom,\n x: options.index.x,\n y: options.index.y,\n s: options.subdomain,\n quadkey: options.quadkey,\n q: options.quadkey,\n culture: options.culture,\n c: options.culture\n };\n };\n\n return ImageTile;\n}(Class));\n\nsetDefaultOptions(ImageTile, {\n urlTemplate: '',\n errorUrlTemplate: ''\n});\n\nexport var TilePool = (function (Class) {\n function TilePool() {\n Class.call(this);\n this._items = [];\n }\n\n if ( Class ) TilePool.__proto__ = Class;\n TilePool.prototype = Object.create( Class && Class.prototype );\n TilePool.prototype.constructor = TilePool;\n\n TilePool.prototype.get = function get (center, options) {\n if (this._items.length >= this.options.maxSize) {\n this._remove(center);\n }\n\n return this._create(options);\n };\n\n TilePool.prototype.empty = function empty () {\n var items = this._items;\n\n for (var i = 0; i < items.length; i++) {\n items[i].destroy();\n }\n\n this._items = [];\n };\n\n TilePool.prototype.reset = function reset () {\n var items = this._items;\n\n for (var i = 0; i < items.length; i++) {\n items[i].hide();\n }\n };\n\n TilePool.prototype._create = function _create (options) {\n var items = this._items;\n var tile;\n var id = hashKey(options.point.toString() + options.offset.toString() + options.zoom + options.urlTemplate);\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === id) {\n tile = items[i];\n break;\n }\n }\n\n if (tile) {\n tile.show();\n } else {\n tile = new ImageTile(id, options);\n this._items.push(tile);\n }\n\n return tile;\n };\n\n TilePool.prototype._remove = function _remove (center) {\n var items = this._items;\n var maxDist = -1;\n var index = -1;\n\n for (var i = 0; i < items.length; i++) {\n var dist = items[i].options.point.distanceTo(center);\n\n if (dist > maxDist && !items[i].visible) {\n index = i;\n maxDist = dist;\n }\n }\n\n if (index !== -1) {\n items[index].destroy();\n items.splice(index, 1);\n }\n };\n\n return TilePool;\n}(Class));\n\nsetDefaultOptions(TilePool, {\n maxSize: 100\n});\n","import {\n Class,\n elementOffset\n} from '../../common';\n\nimport {\n Observable\n} from './observable';\n\nimport {\n getEventMap,\n proxy,\n getSupportedFeatures\n} from '../utils';\n\nvar extend = Object.assign;\n\nvar CHANGE = 'change';\n\nexport var TapCapture = (function (Observable) {\n function TapCapture(element, options) {\n Observable.call(this);\n var that = this,\n domElement = element[0] || element;\n\n that.capture = false;\n\n var eventMap = getEventMap(navigator.userAgent);\n\n if (domElement.addEventListener) {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._press, that), true);\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._release, that), true);\n });\n } else {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._press, that));\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._release, that));\n });\n }\n\n that.bind([\n 'press',\n 'release'\n ], options || {});\n }\n\n if ( Observable ) TapCapture.__proto__ = Observable;\n TapCapture.prototype = Object.create( Observable && Observable.prototype );\n TapCapture.prototype.constructor = TapCapture;\n\n TapCapture.prototype.captureNext = function captureNext () {\n this.capture = true;\n };\n\n TapCapture.prototype.cancelCapture = function cancelCapture () {\n this.capture = false;\n };\n\n TapCapture.prototype._press = function _press (e) {\n var that = this;\n\n that.trigger('press');\n\n if (that.capture) {\n e.preventDefault();\n }\n };\n\n TapCapture.prototype._release = function _release (e) {\n var that = this;\n\n that.trigger('release');\n\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n };\n\n return TapCapture;\n}(Observable));\n\nexport var PaneDimension = (function (Observable) {\n function PaneDimension(options) {\n Observable.call(this);\n var that = this;\n that.forcedEnabled = false;\n extend(that, options);\n that.scale = 1;\n\n if (that.horizontal) {\n that.measure = 'offsetWidth';\n that.scrollSize = 'scrollWidth';\n that.axis = 'x';\n } else {\n that.measure = 'offsetHeight';\n that.scrollSize = 'scrollHeight';\n that.axis = 'y';\n }\n }\n\n if ( Observable ) PaneDimension.__proto__ = Observable;\n PaneDimension.prototype = Object.create( Observable && Observable.prototype );\n PaneDimension.prototype.constructor = PaneDimension;\n\n PaneDimension.prototype.makeVirtual = function makeVirtual () {\n extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n };\n\n PaneDimension.prototype.virtualSize = function virtualSize (min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n };\n\n PaneDimension.prototype.outOfBounds = function outOfBounds (offset) {\n return offset > this.max || offset < this.min;\n };\n\n PaneDimension.prototype.forceEnabled = function forceEnabled () {\n this.forcedEnabled = true;\n };\n\n PaneDimension.prototype.getSize = function getSize () {\n return this.container[this.measure];\n };\n\n PaneDimension.prototype.getTotal = function getTotal () {\n return this.element[this.scrollSize];\n };\n\n PaneDimension.prototype.rescale = function rescale (scale) {\n this.scale = scale;\n };\n\n PaneDimension.prototype.update = function update (silent) {\n var that = this,\n total = that.virtual ? that._virtualMax : that.getTotal(),\n scaledTotal = total * that.scale,\n size = that.getSize();\n\n if (total === 0 && !that.forcedEnabled) {\n return;\n }\n\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n that.enabled = that.forcedEnabled || scaledTotal > size;\n\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n };\n\n return PaneDimension;\n}(Observable));\n\nexport var PaneDimensions = (function (Observable) {\n function PaneDimensions(options) {\n Observable.call(this);\n var that = this;\n\n that.x = new PaneDimension(extend({\n horizontal: true\n }, options));\n\n that.y = new PaneDimension(extend({\n horizontal: false\n }, options));\n\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n that.bind(CHANGE, options);\n }\n\n if ( Observable ) PaneDimensions.__proto__ = Observable;\n PaneDimensions.prototype = Object.create( Observable && Observable.prototype );\n PaneDimensions.prototype.constructor = PaneDimensions;\n\n PaneDimensions.prototype.rescale = function rescale (newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n };\n\n PaneDimensions.prototype.centerCoordinates = function centerCoordinates () {\n return {\n x: Math.min(0, -this.x.centerOffset),\n y: Math.min(0, -this.y.centerOffset)\n };\n };\n\n PaneDimensions.prototype.refresh = function refresh () {\n var that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n };\n\n return PaneDimensions;\n}(Observable));\n\nexport var PaneAxis = (function (Observable) {\n function PaneAxis(options) {\n Observable.call(this);\n extend(this, options);\n }\n\n if ( Observable ) PaneAxis.__proto__ = Observable;\n PaneAxis.prototype = Object.create( Observable && Observable.prototype );\n PaneAxis.prototype.constructor = PaneAxis;\n\n PaneAxis.prototype.outOfBounds = function outOfBounds () {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n };\n\n PaneAxis.prototype.dragMove = function dragMove (delta) {\n var that = this,\n dimension = that.dimension,\n axis = that.axis,\n movable = that.movable,\n position = movable[axis] + delta;\n\n if (!dimension.enabled) {\n return;\n }\n\n var dragDelta = delta;\n\n if (position < dimension.min && delta < 0 || position > dimension.max && delta > 0) {\n dragDelta *= that.resistance;\n }\n\n movable.translateAxis(axis, dragDelta);\n that.trigger(CHANGE, that);\n };\n\n return PaneAxis;\n}(Observable));\n\nexport var Pane = (function (Class) {\n function Pane(options) {\n Class.call(this);\n\n var that = this,\n x, y,\n resistance,\n movable;\n\n extend(that, {\n elastic: true\n }, options);\n\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n\n that.x = x = new PaneAxis({\n axis: 'x',\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n\n that.y = y = new PaneAxis({\n axis: 'y',\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n\n that.userEvents.bind([\n 'press',\n 'move',\n 'end',\n 'gesturestart',\n 'gesturechange'\n ], {\n gesturestart: function gesturestart(e) {\n that.gesture = e;\n\n that.offset = elementOffset(that.dimensions.container);\n },\n press: function press(e) {\n var closestAnchor = e.event.target.closest('a');\n\n if (closestAnchor && closestAnchor.matches('[data-navigate-on-press=true]')) {\n e.sender.cancel();\n }\n },\n gesturechange: function gesturechange(e) {\n var previousGesture = that.gesture,\n previousCenter = previousGesture.center,\n center = e.center,\n scaleDelta = e.distance / previousGesture.distance,\n minScale = that.dimensions.minScale,\n maxScale = that.dimensions.maxScale,\n coordinates;\n if (movable.scale <= minScale && scaleDelta < 1) {\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n\n var offsetX = movable.x + that.offset.left,\n offsetY = movable.y + that.offset.top;\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n\n movable.scaleWith(scaleDelta);\n\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n\n e.preventDefault();\n },\n move: function move(e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n end: function end(e) {\n e.preventDefault();\n }\n });\n }\n\n if ( Class ) Pane.__proto__ = Class;\n Pane.prototype = Object.create( Class && Class.prototype );\n Pane.prototype.constructor = Pane;\n\n return Pane;\n}(Class));\n\nvar translate = function(x, y, scale) {\n return 'translate3d(' + x + 'px,' + y + 'px,0) scale(' + scale + ')';\n};\n\nexport var Movable = (function (Observable) {\n function Movable(element) {\n Observable.call(this);\n\n var that = this;\n\n that.support = getSupportedFeatures();\n this.transformStyle = this.support.transitions.prefix + 'Transform';\n that.element = element;\n that.element.style.webkitTransformOrigin = 'left top';\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n\n var coordinates = translate(that.x, that.y, that.scale);\n that.element.style[this.transformStyle] = coordinates;\n\n that._saveCoordinates(coordinates);\n }\n\n if ( Observable ) Movable.__proto__ = Observable;\n Movable.prototype = Object.create( Observable && Observable.prototype );\n Movable.prototype.constructor = Movable;\n\n Movable.prototype.translateAxis = function translateAxis (axis, by) {\n this[axis] += by;\n this.refresh();\n };\n\n Movable.prototype.scaleTo = function scaleTo (scale) {\n this.scale = scale;\n this.refresh();\n };\n\n Movable.prototype.scaleWith = function scaleWith (scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n };\n\n Movable.prototype.translate = function translate (coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n };\n\n Movable.prototype.moveAxis = function moveAxis (axis, value) {\n this[axis] = value;\n this.refresh();\n };\n\n Movable.prototype.moveTo = function moveTo (coordinates) {\n extend(this, coordinates);\n this.refresh();\n };\n\n Movable.prototype.refresh = function refresh () {\n var that = this,\n x = that.x,\n y = that.y,\n newCoordinates;\n\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n\n newCoordinates = translate(x, y, that.scale);\n\n if (newCoordinates !== that.coordinates) {\n that.element.style[this.transformStyle] = newCoordinates;\n\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n };\n\n Movable.prototype._saveCoordinates = function _saveCoordinates (coordinates) {\n this.coordinates = coordinates;\n };\n\n return Movable;\n}(Observable));\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n last,\n setDefaultOptions\n} from '../../common';\n\nimport {\n proxy\n} from '../utils';\n\nimport {\n Layer\n} from './layer';\n\nimport {\n Movable\n} from '../scroller/draggable';\n\nimport {\n Location\n} from '../location';\n\nvar Group = d.Group;\n\nexport var ShapeLayer = (function (Layer) {\n function ShapeLayer(map, options) {\n Layer.call(this, map, options);\n\n this._pan = proxy(this._pan, this);\n\n this.surface = d.Surface.create(this.element, {\n width: map.scrollElement.clientWidth,\n height: map.scrollElement.clientHeight\n });\n\n this._initRoot();\n this.movable = new Movable(this.surface.element);\n this._markers = [];\n\n this._click = this._handler('shapeClick');\n this.surface.bind('click', this._click);\n this._mouseleave = this._handler('shapeMouseLeave');\n this.surface.bind('mouseleave', this._mouseleave);\n this.surface.bind('mouseenter', this._mouseenter.bind(this));\n }\n\n if ( Layer ) ShapeLayer.__proto__ = Layer;\n ShapeLayer.prototype = Object.create( Layer && Layer.prototype );\n ShapeLayer.prototype.constructor = ShapeLayer;\n\n ShapeLayer.prototype.destroy = function destroy () {\n Layer.prototype.destroy.call(this);\n\n this.surface.destroy();\n };\n\n ShapeLayer.prototype._reset = function _reset () {\n Layer.prototype._reset.call(this);\n\n this._translateSurface();\n\n this._data = this._readData();\n\n if (this._hasData()) {\n this._load(this._data);\n }\n };\n\n ShapeLayer.prototype._initRoot = function _initRoot () {\n this._root = new Group();\n this.surface.draw(this._root);\n };\n\n ShapeLayer.prototype._beforeReset = function _beforeReset () {\n this.surface.clear();\n this._initRoot();\n };\n\n ShapeLayer.prototype._resize = function _resize () {\n this.surface.size(this.map.size());\n };\n\n ShapeLayer.prototype._readData = function _readData () {\n var data = Layer.prototype._readData.call(this);\n\n if (data.type === \"FeatureCollection\") {\n return data.features;\n }\n\n if (data.type === \"GeometryCollection\") {\n return data.geometries;\n }\n\n return data;\n };\n\n ShapeLayer.prototype._load = function _load (data) {\n var this$1 = this;\n\n this._data = data;\n this._clearMarkers();\n\n if (!this._loader) {\n this._loader = new GeoJsonLoader(this.map, this.options.style, this);\n }\n\n var container = new Group();\n\n for (var i = 0; i < data.length; i++) {\n var shape = this$1._loader.parse(data[i]);\n\n if (shape) {\n container.append(shape);\n }\n }\n\n this._root.clear();\n this._root.append(container);\n };\n\n ShapeLayer.prototype.shapeCreated = function shapeCreated (shape) {\n var cancelled = false;\n\n // the GeoJSON loader builds \"Point\" type as a circle\n // use the circle shape type as and indicator for rendering a marker\n // keep the behavior under a setting as this is supported by kendo jQuery Map\n // but we opted out of this in blazor\n if (shape instanceof d.Circle && this.map.options.renderPointsAsMarkers) {\n cancelled = defined(this._createMarker(shape));\n }\n\n if (!cancelled) {\n var args = {\n layer: this,\n shape: shape\n };\n\n cancelled = this.map.trigger('shapeCreated', args);\n }\n\n return cancelled;\n };\n\n ShapeLayer.prototype.featureCreated = function featureCreated (e) {\n e.layer = this;\n this.map.trigger('shapeFeatureCreated', e);\n };\n\n ShapeLayer.prototype._createMarker = function _createMarker (shape) {\n var marker = this.map.markers.bind({\n location: shape.location\n }, shape.dataItem);\n\n if (marker) {\n this._markers.push(marker);\n }\n\n return marker;\n };\n\n ShapeLayer.prototype._clearMarkers = function _clearMarkers () {\n var this$1 = this;\n\n for (var i = 0; i < this._markers.length; i++) {\n this$1.map.markers.remove(this$1._markers[i]);\n }\n\n this._markers = [];\n };\n\n ShapeLayer.prototype._pan = function _pan () {\n if (!this._panning) {\n this._panning = true;\n this.surface.suspendTracking();\n }\n };\n\n ShapeLayer.prototype._panEnd = function _panEnd (e) {\n Layer.prototype._panEnd.call(this, e);\n this._translateSurface();\n this.surface.resumeTracking();\n this._panning = false;\n };\n\n ShapeLayer.prototype._translateSurface = function _translateSurface () {\n var map = this.map;\n var nw = map.locationToView(map.extent().nw);\n\n if (this.surface.translate) {\n this.surface.translate(nw);\n this.movable.moveTo({\n x: nw.x,\n y: nw.y\n });\n }\n };\n\n ShapeLayer.prototype._eventArgs = function _eventArgs (e) {\n return {\n layer: this,\n layerIndex: this._layerIndex(),\n shape: e.element,\n shapeIndex: (this._data || []).indexOf(e.element.dataItem),\n originalEvent: e.originalEvent\n };\n };\n\n ShapeLayer.prototype._handler = function _handler (eventName) {\n var this$1 = this;\n\n return function (e) {\n if (e.element) {\n this$1.map.trigger(eventName, this$1._eventArgs(e));\n }\n };\n };\n\n ShapeLayer.prototype._mouseenter = function _mouseenter (e) {\n if (!e.element) {\n return;\n }\n\n this.map.trigger('shapeMouseEnter', this._eventArgs(e));\n\n var shape = e.element;\n var anchor = this._tooltipAnchor(e);\n this.map._tooltip.show(anchor, this._tooltipContext(shape));\n };\n\n ShapeLayer.prototype._tooltipContext = function _tooltipContext (shape) {\n return {\n type: 'shape',\n layerIndex: this._layerIndex(),\n className: 'k-map-shape-tooltip',\n dataItem: shape.dataItem,\n location: shape.location\n };\n };\n\n ShapeLayer.prototype._tooltipAnchor = function _tooltipAnchor (e) {\n var cursor = this.map.eventOffset(e.originalEvent);\n return {\n top: cursor.y,\n left: cursor.x\n };\n };\n\n ShapeLayer.prototype._activate = function _activate () {\n Layer.prototype._activate.call(this);\n this._panHandler = proxy(this._pan, this);\n this.map.bind('pan', this.panHandler);\n };\n\n ShapeLayer.prototype._deactivate = function _deactivate () {\n Layer.prototype._deactivate.call(this);\n this.map.unbind('pan', this._panHandler);\n };\n\n return ShapeLayer;\n}(Layer));\n\nsetDefaultOptions(ShapeLayer, {\n autoBind: true,\n zIndex: 100\n});\n\nvar GeoJsonLoader = (function (Class) {\n function GeoJsonLoader(locator, defaultStyle, observer) {\n Class.call(this);\n this.observer = observer;\n this.locator = locator;\n this.style = defaultStyle;\n }\n\n if ( Class ) GeoJsonLoader.__proto__ = Class;\n GeoJsonLoader.prototype = Object.create( Class && Class.prototype );\n GeoJsonLoader.prototype.constructor = GeoJsonLoader;\n\n GeoJsonLoader.prototype.parse = function parse (item) {\n var root = new Group();\n var unwrap = true;\n\n if (item.type === 'Feature') {\n unwrap = false;\n this._loadGeometryTo(root, item.geometry, item);\n this._featureCreated(root, item);\n } else {\n this._loadGeometryTo(root, item, item);\n }\n\n if (unwrap && root.children.length < 2) {\n root = root.children[0];\n }\n\n return root;\n };\n\n GeoJsonLoader.prototype._shapeCreated = function _shapeCreated (shape) {\n var cancelled = false;\n\n if (this.observer && this.observer.shapeCreated) {\n cancelled = this.observer.shapeCreated(shape);\n }\n\n return cancelled;\n };\n\n GeoJsonLoader.prototype._featureCreated = function _featureCreated (group, dataItem) {\n if (this.observer && this.observer.featureCreated) {\n this.observer.featureCreated({\n group: group,\n dataItem: dataItem,\n properties: dataItem.properties\n });\n }\n };\n\n /* eslint-disable indent */\n GeoJsonLoader.prototype._loadGeometryTo = function _loadGeometryTo (container, geometry, dataItem) {\n var this$1 = this;\n\n var coords = geometry.coordinates;\n var i;\n var path;\n\n switch (geometry.type) {\n case 'LineString':\n path = this._loadPolygon(container, [coords], dataItem);\n this._setLineFill(path);\n break;\n case 'MultiLineString':\n for (i = 0; i < coords.length; i++) {\n path = this$1._loadPolygon(container, [coords[i]], dataItem);\n this$1._setLineFill(path);\n }\n break;\n case 'Polygon':\n this._loadPolygon(container, coords, dataItem);\n break;\n case 'MultiPolygon':\n for (i = 0; i < coords.length; i++) {\n this$1._loadPolygon(container, coords[i], dataItem);\n }\n break;\n case 'Point':\n this._loadPoint(container, coords, dataItem);\n break;\n case 'MultiPoint':\n for (i = 0; i < coords.length; i++) {\n this$1._loadPoint(container, coords[i], dataItem);\n }\n break;\n default:\n break;\n }\n };\n /* eslint-disable indent */\n\n GeoJsonLoader.prototype._setLineFill = function _setLineFill (path) {\n var segments = path.segments;\n\n if (segments.length < 4 || !segments[0].anchor().equals(last(segments).anchor())) {\n path.options.fill = null;\n }\n };\n\n GeoJsonLoader.prototype._loadShape = function _loadShape (container, shape) {\n if (!this._shapeCreated(shape)) {\n container.append(shape);\n }\n\n return shape;\n };\n\n GeoJsonLoader.prototype._loadPolygon = function _loadPolygon (container, rings, dataItem) {\n var shape = this._buildPolygon(rings);\n shape.dataItem = dataItem;\n shape.location = this.locator.viewToLocation(shape.bbox().center());\n return this._loadShape(container, shape);\n };\n\n GeoJsonLoader.prototype._buildPolygon = function _buildPolygon (rings) {\n var this$1 = this;\n\n var type = rings.length > 1 ? d.MultiPath : d.Path;\n var path = new type(this.style);\n\n for (var i = 0; i < rings.length; i++) {\n for (var j = 0; j < rings[i].length; j++) {\n var point = this$1.locator.locationToView(Location.fromLngLat(rings[i][j]));\n if (j === 0) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n }\n }\n\n return path;\n };\n\n GeoJsonLoader.prototype._loadPoint = function _loadPoint (container, coords, dataItem) {\n var location = Location.fromLngLat(coords);\n var point = this.locator.locationToView(location);\n var circle = new g.Circle(point, 10);\n var shape = new d.Circle(circle, this.style);\n\n shape.dataItem = dataItem;\n shape.location = location;\n\n return this._loadShape(container, shape);\n };\n\n return GeoJsonLoader;\n}(Class));\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n isFunction,\n getter,\n setDefaultOptions\n} from '../../common';\n\nimport {\n ShapeLayer\n} from './shape';\n\nimport {\n Location\n} from '../location';\n\nexport var BubbleLayer = (function (ShapeLayer) {\n function BubbleLayer () {\n ShapeLayer.apply(this, arguments);\n }\n\n if ( ShapeLayer ) BubbleLayer.__proto__ = ShapeLayer;\n BubbleLayer.prototype = Object.create( ShapeLayer && ShapeLayer.prototype );\n BubbleLayer.prototype.constructor = BubbleLayer;\n\n BubbleLayer.prototype._readData = function _readData () {\n var data = this.options.data || [];\n return data;\n };\n\n BubbleLayer.prototype._load = function _load (data) {\n var this$1 = this;\n\n this._data = data;\n this.surface.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var options = this.options;\n var getValue = getter(options.valueField);\n\n var newData = data.slice(0);\n newData.sort(function(a, b) {\n return getValue(b) - getValue(a);\n });\n\n var scaleType = this._scaleType();\n var scale;\n var getLocation = getter(this.options.locationField);\n\n for (var i = 0; i < newData.length; i++) {\n var dataItem = newData[i];\n var location = getLocation(dataItem);\n var value = getValue(dataItem);\n\n if (defined(location) && defined(value)) {\n if (!scale) {\n scale = new scaleType([\n 0,\n value\n ], [\n options.minSize,\n options.maxSize\n ]);\n }\n\n location = Location.create(location);\n\n var center = this$1.map.locationToView(location);\n var size = scale.map(value);\n var symbol = this$1._createSymbol({\n center: center,\n size: size,\n style: options.style,\n dataItem: dataItem,\n location: location\n });\n\n symbol.dataItem = dataItem;\n symbol.location = location;\n symbol.value = value;\n\n this$1._drawSymbol(symbol);\n }\n }\n };\n\n BubbleLayer.prototype._scaleType = function _scaleType () {\n var scale = this.options.scale;\n\n if (isFunction(scale)) {\n return scale;\n }\n\n return Scales[scale];\n };\n\n BubbleLayer.prototype._createSymbol = function _createSymbol (args) {\n var symbol = this.options.symbol;\n\n if (!isFunction(symbol)) {\n symbol = Symbols[symbol];\n }\n\n return symbol(args);\n };\n\n BubbleLayer.prototype._drawSymbol = function _drawSymbol (shape) {\n var args = {\n layer: this,\n shape: shape\n };\n\n var cancelled = this.map.trigger('shapeCreated', args);\n\n if (!cancelled) {\n this.surface.draw(shape);\n }\n };\n\n BubbleLayer.prototype._tooltipContext = function _tooltipContext (shape) {\n return {\n type: 'bubble',\n layerIndex: this._layerIndex(),\n className: 'k-map-bubble-tooltip',\n dataItem: shape.dataItem,\n location: shape.location,\n value: shape.value\n };\n };\n\n BubbleLayer.prototype._tooltipAnchor = function _tooltipAnchor (e) {\n var shape = e.element;\n var center = shape.bbox().center();\n\n return {\n top: center.y,\n left: center.x\n };\n };\n\n return BubbleLayer;\n}(ShapeLayer));\n\nsetDefaultOptions(BubbleLayer, {\n // autoBind: true,\n locationField: 'location',\n valueField: 'value',\n minSize: 0,\n maxSize: 100,\n scale: 'sqrt',\n symbol: 'circle',\n // ensure bubble layers are displayed over tile and shape layers\n zIndex: 200\n});\n\nvar SqrtScale = (function (Class) {\n function SqrtScale(domain, range) {\n Class.call(this);\n\n this._domain = domain;\n this._range = range;\n\n var domainRange = Math.sqrt(domain[1]) - Math.sqrt(domain[0]);\n var outputRange = range[1] - range[0];\n\n this._ratio = outputRange / domainRange;\n }\n\n if ( Class ) SqrtScale.__proto__ = Class;\n SqrtScale.prototype = Object.create( Class && Class.prototype );\n SqrtScale.prototype.constructor = SqrtScale;\n\n SqrtScale.prototype.map = function map (value) {\n var rel = (Math.sqrt(value) - Math.sqrt(this._domain[0])) * this._ratio;\n return this._range[0] + rel;\n };\n\n return SqrtScale;\n}(Class));\n\nvar Scales = {\n sqrt: SqrtScale\n};\n\nvar Symbols = {\n circle: function(args) {\n var geo = new g.Circle(args.center, args.size / 2);\n return new d.Circle(geo, args.style);\n },\n\n square: function(args) {\n var path = new d.Path(args.style);\n var halfSize = args.size / 2;\n var center = args.center;\n path.moveTo(center.x - halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y + halfSize).lineTo(center.x - halfSize, center.y + halfSize).close();\n return path;\n }\n};\n","import {\n Class,\n addClass,\n isArray,\n getter,\n deepExtend,\n setDefaultOptions,\n renderIcon\n} from '../../common';\n\nimport { Layer } from './layer';\nimport { Location } from '../location';\nimport {\n proxy,\n on,\n off,\n toHyphens,\n toPixels,\n convertToHtml\n} from '../utils';\nimport TemplateService from '../../services/template-service';\n\nvar CLICK = \"click\";\nvar MOUSE_ENTER = \"mouseenter\";\nvar MOUSE_LEAVE = \"mouseleave\";\n\nvar extend = Object.assign;\nvar MARKER_CLASS_NAME = \"k-marker\";\nvar MARKER_CLASS = \".\" + MARKER_CLASS_NAME;\n\nexport var MarkerLayer = (function (Layer) {\n function MarkerLayer(map, options) {\n Layer.call(this, map, options);\n\n this._markerClickHandler = proxy(this._markerClick, this);\n on(this.element, CLICK, MARKER_CLASS, this._markerClickHandler);\n\n this.items = [];\n\n this._load(this._readData());\n }\n\n if ( Layer ) MarkerLayer.__proto__ = Layer;\n MarkerLayer.prototype = Object.create( Layer && Layer.prototype );\n MarkerLayer.prototype.constructor = MarkerLayer;\n\n MarkerLayer.prototype.destroy = function destroy () {\n Layer.prototype.destroy.call(this);\n off(this.element, CLICK, this._markerClickHandler);\n this.clear();\n };\n\n MarkerLayer.prototype.add = function add (args) {\n var this$1 = this;\n\n if (isArray(args)) {\n for (var i = 0; i < args.length; i++) {\n this$1._addOne(args[i]);\n }\n } else {\n return this._addOne(args);\n }\n };\n\n MarkerLayer.prototype.remove = function remove (marker) {\n marker.destroy();\n var index = (this.items || []).indexOf(marker);\n\n if (index > -1) {\n this.items.splice(index, 1);\n }\n };\n\n MarkerLayer.prototype.clear = function clear () {\n var this$1 = this;\n\n for (var i = 0; i < this.items.length; i++) {\n this$1.items[i].destroy();\n }\n\n this.items = [];\n };\n\n MarkerLayer.prototype.update = function update (marker) {\n var location = marker.location();\n\n if (location) {\n marker.showAt(this.map.locationToView(location));\n\n var args = {\n marker: marker,\n layer: this\n };\n\n this.map.trigger('markerActivate', args);\n }\n };\n\n MarkerLayer.prototype._reset = function _reset () {\n var this$1 = this;\n\n Layer.prototype._reset.call(this);\n\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n this$1.update(items[i]);\n }\n };\n\n MarkerLayer.prototype.bind = function bind (options, dataItem) {\n var marker = Marker.create(options, this.options);\n marker.dataItem = dataItem;\n\n var args = {\n marker: marker,\n layer: this\n };\n\n var cancelled = this.map.trigger('markerCreated', args);\n\n if (!cancelled) {\n this.add(marker);\n return marker;\n }\n };\n\n MarkerLayer.prototype._addOne = function _addOne (arg) {\n var marker = Marker.create(arg, this.options);\n marker.addTo(this);\n return marker;\n };\n\n MarkerLayer.prototype._readData = function _readData () {\n var data = this.options.data || [];\n return data;\n };\n\n MarkerLayer.prototype._load = function _load (data) {\n var this$1 = this;\n\n this._data = data;\n this.clear();\n\n var getLocation = getter(this.options.locationField);\n var getTitle = getter(this.options.titleField);\n\n for (var i = 0; i < data.length; i++) {\n var dataItem = data[i];\n\n this$1.bind({\n location: getLocation(dataItem),\n title: getTitle(dataItem)\n }, dataItem);\n }\n };\n\n MarkerLayer.prototype._markerClick = function _markerClick (e) {\n var marker = e.currentTarget._kendoNode;\n\n var args = {\n layer: this,\n layerIndex: this._layerIndex(),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker),\n originalEvent: e\n };\n\n this.map.trigger('markerClick', args);\n };\n\n MarkerLayer.prototype._markerMouseEnter = function _markerMouseEnter (e) {\n var args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseEnter\", args);\n };\n\n MarkerLayer.prototype._markerMouseLeave = function _markerMouseLeave (e) {\n var args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseLeave\", args);\n };\n\n MarkerLayer.prototype._createMarkerEventArgs = function _createMarkerEventArgs (e) {\n var marker = e.marker;\n\n var args = extend({}, {\n layer: this,\n layerIndex: this._layerIndex(),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker)\n }, e);\n\n return args;\n };\n\n return MarkerLayer;\n}(Layer));\n\nsetDefaultOptions(MarkerLayer, {\n zIndex: 1000,\n autoBind: true,\n locationField: 'location',\n titleField: 'title',\n template: \"\"\n});\n\nexport var Marker = (function (Class) {\n function Marker(options) {\n Class.call(this);\n this.options = options || {};\n }\n\n if ( Class ) Marker.__proto__ = Class;\n Marker.prototype = Object.create( Class && Class.prototype );\n Marker.prototype.constructor = Marker;\n\n Marker.prototype.destroy = function destroy () {\n this.layer = null;\n this.unbindEvents();\n this.hide();\n };\n\n Marker.prototype.addTo = function addTo (parent) {\n this.layer = parent.markers || parent;\n this.layer.items.push(this);\n this.layer.update(this);\n };\n\n Marker.prototype.location = function location (value) {\n if (value) {\n this.options.location = Location.create(value).toArray();\n\n if (this.layer) {\n this.layer.update(this);\n }\n\n return this;\n }\n\n return Location.create(this.options.location);\n };\n\n Marker.prototype.showAt = function showAt (point) {\n this.render();\n\n this._anchor = { left: Math.round(point.x), top: Math.round(point.y) };\n this.element.style.left = toPixels(this._anchor.left);\n this.element.style.top = toPixels(this._anchor.top);\n };\n\n Marker.prototype.hide = function hide () {\n if (this.element) {\n this.element.remove();\n this.element = null;\n }\n };\n\n Marker.prototype.bindEvents = function bindEvents () {\n if (!this.element) {\n return;\n }\n\n this._mouseEnterHandler = proxy(this._mouseEnter, this);\n on(this.element, MOUSE_ENTER, MARKER_CLASS, this._mouseEnterHandler);\n this._mouseLeaveHandler = proxy(this._mouseLeave, this);\n on(this.element, MOUSE_LEAVE, MARKER_CLASS, this._mouseLeaveHandler);\n };\n\n Marker.prototype.unbindEvents = function unbindEvents () {\n if (!this.element) {\n return;\n }\n\n off(this.element, MOUSE_ENTER, this._mouseEnterHandler);\n off(this.element, MOUSE_LEAVE, this._mouseLeaveHandler);\n };\n\n Marker.prototype.render = function render () {\n if (!this.element) {\n var options = this.options;\n var layer = this.layer;\n var element = document.createElement('span');\n addClass(element, MARKER_CLASS_NAME);\n\n if (this.options.template) {\n var templateFn = this._compileTemplate(this.options.template);\n var templateHtml = templateFn(this.dataItem);\n var templateElement = convertToHtml(templateHtml);\n element.appendChild(templateElement);\n } else if (options.svgIcon) {\n renderIcon(element, { icon: options.svgIcon, iconClass: \"k-icon-xxl\", svgIcons: this.options.icons.svgIcons, type: \"svg\" });\n } else {\n var iconOptions = { icon: \"map-marker\", iconClass: \"k-icon-xxl\", svgIcons: this.options.icons.svgIcons, type: this.options.icons.type };\n\n if (options.shape) {\n if (options.shape === \"pinTarget\") {\n iconOptions.icon = \"map-marker-target\";\n renderIcon(element, iconOptions);\n } else if (options.shape === \"pin\") {\n renderIcon(element, iconOptions);\n } else {\n addClass(element, 'k-icon k-icon-xxl k-i-marker-' + toHyphens(options.shape || 'pin'));\n }\n } else {\n renderIcon(element, iconOptions);\n }\n }\n\n if (options.title) {\n element.setAttribute(\"title\", options.title);\n }\n\n var attributes = options.attributes || {};\n Object.keys(attributes).forEach(function(key) {\n element.setAttribute(key, attributes[key]);\n });\n\n element._kendoNode = this;\n element.style.zIndex = options.zIndex;\n\n this.element = element;\n\n if (layer) {\n layer.element.appendChild(this.element);\n }\n\n this.bindEvents();\n }\n };\n\n Marker.prototype._mouseEnter = function _mouseEnter (e) {\n var args = this._createEventArgs(e);\n this.layer._markerMouseEnter(args);\n\n this.layer.map._tooltip.show({\n top: this._anchor.top - this.element.offsetHeight,\n left: this._anchor.left\n }, this._tooltipContext());\n };\n\n Marker.prototype._tooltipContext = function _tooltipContext () {\n return {\n type: 'marker',\n layerIndex: this.layer._layerIndex(),\n className: 'k-map-marker-tooltip',\n dataItem: this.dataItem,\n title: this.options.title,\n location: this.location()\n };\n };\n\n Marker.prototype._mouseLeave = function _mouseLeave (e) {\n var args = this._createEventArgs(e);\n this.layer._markerMouseLeave(args);\n };\n\n Marker.prototype._createEventArgs = function _createEventArgs (e) {\n var args = {\n marker: this,\n originalEvent: e\n };\n\n return args;\n };\n\n Marker.prototype._compileTemplate = function _compileTemplate (template) {\n return TemplateService.compile(template, {\n paramName: \"dataItem\",\n useWithBlock: false\n });\n };\n\n Marker.create = function create (arg, defaults) {\n if (arg instanceof Marker) {\n return arg;\n }\n\n return new Marker(deepExtend({}, defaults, arg));\n };\n\n return Marker;\n}(Class));\n","import {\n Class\n} from '../../common';\n\nimport {\n proxy,\n now\n} from '../utils';\n\nvar extend = Object.assign;\n\nfunction animationFrame(callback) {\n window.requestAnimationFrame(callback);\n}\n\nexport var Animation = (function (Class) {\n function Animation() {\n Class.call(this);\n var that = this;\n\n that._tickProxy = proxy(that._tick, that);\n that._started = false;\n }\n\n if ( Class ) Animation.__proto__ = Class;\n Animation.prototype = Object.create( Class && Class.prototype );\n Animation.prototype.constructor = Animation;\n\n Animation.prototype.tick = function tick () { };\n Animation.prototype.done = function done () { };\n Animation.prototype.onEnd = function onEnd () { };\n Animation.prototype.onCancel = function onCancel () { };\n\n Animation.prototype.start = function start () {\n if (!this.enabled()) {\n return;\n }\n\n if (!this.done()) {\n this._started = true;\n animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n };\n\n Animation.prototype.enabled = function enabled () {\n return true;\n };\n\n Animation.prototype.cancel = function cancel () {\n this._started = false;\n this.onCancel();\n };\n\n Animation.prototype._tick = function _tick () {\n var that = this;\n\n if (!that._started) {\n return;\n }\n\n that.tick();\n\n if (!that.done()) {\n animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n };\n\n return Animation;\n}(Class));\n\nexport var Transition = (function (Animation) {\n function Transition(options) {\n Animation.call(this);\n extend(this, options);\n }\n\n if ( Animation ) Transition.__proto__ = Animation;\n Transition.prototype = Object.create( Animation && Animation.prototype );\n Transition.prototype.constructor = Transition;\n\n Transition.prototype.done = function done () {\n return this.timePassed() >= this.duration;\n };\n\n Transition.prototype.timePassed = function timePassed () {\n return Math.min(this.duration, now() - this.startDate);\n };\n\n Transition.prototype.moveTo = function moveTo (options) {\n var that = this,\n movable = that.movable;\n\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n that.duration = typeof options.duration === 'number' ? options.duration : 300;\n that.tick = that._easeProxy(options.ease);\n that.startDate = now();\n that.start();\n };\n\n Transition.prototype._easeProxy = function _easeProxy (ease) {\n var that = this;\n\n return function() {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n };\n\n Transition.easeOutExpo = function easeOutExpo (t, b, c, d) {\n return t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n };\n\n return Transition;\n}(Animation));\n","import {\n Class,\n grep\n} from '../../common';\n\nimport {\n proxy,\n noop,\n applyEventMap,\n getEventMap,\n on,\n off,\n now,\n getSupportedFeatures\n} from '../utils';\n\nimport {\n Observable\n} from './observable';\n\nvar extend = Object.assign;\n\nvar preventDefault = function (e) {\n e.preventDefault();\n};\n\nvar\n DEFAULT_MIN_HOLD = 800,\n CLICK_DELAY = 300,\n // DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0,\n DEFAULT_THRESHOLD = 0,\n PRESS = 'press',\n HOLD = 'hold',\n SELECT = 'select',\n START = 'start',\n MOVE = 'move',\n END = 'end',\n CANCEL = 'cancel',\n TAP = 'tap',\n DOUBLETAP = 'doubleTap',\n RELEASE = 'release',\n GESTURESTART = 'gesturestart',\n GESTURECHANGE = 'gesturechange',\n GESTUREEND = 'gestureend',\n GESTURETAP = 'gesturetap';\n\nvar THRESHOLD = {\n 'api': 0,\n 'touch': 0,\n 'mouse': 9,\n 'pointer': 9\n};\n\nfunction touchDelta(touch1, touch2) {\n var x1 = touch1.x.location,\n y1 = touch1.y.location,\n x2 = touch2.x.location,\n y2 = touch2.y.location,\n dx = x1 - x2,\n dy = y1 - y2;\n\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n}\n\nfunction getTouches(e) {\n var support = getSupportedFeatures();\n var touches = [],\n originalEvent = e.originalEvent || e,\n currentTarget = e.currentTarget,\n idx = 0,\n length, changedTouches, touch;\n\n if (e.api) {\n touches.push({\n id: 2,\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: 'api'\n });\n } else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\n\n for (length = changedTouches.length; idx < length; idx++) {\n touch = changedTouches[idx];\n touches.push({\n location: touch,\n event: e,\n target: touch.target,\n currentTarget: currentTarget,\n id: touch.identifier,\n type: 'touch'\n });\n }\n } else if (support.pointers || support.msPointers) {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: 'pointer'\n });\n } else {\n touches.push({\n id: 1,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: 'mouse'\n });\n }\n\n return touches;\n}\nexport var TouchAxis = (function (Class) {\n function TouchAxis(axis, location) {\n Class.call(this);\n var that = this;\n\n that.support = getSupportedFeatures();\n that.invalidZeroEvents = this.support.mobileOS && this.support.mobileOS.android;\n that.axis = axis;\n that._updateLocationData(location);\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n }\n\n if ( Class ) TouchAxis.__proto__ = Class;\n TouchAxis.prototype = Object.create( Class && Class.prototype );\n TouchAxis.prototype.constructor = TouchAxis;\n\n TouchAxis.prototype.move = function move (location) {\n var that = this,\n offset = location['page' + that.axis],\n timeStamp = now(),\n timeDelta = timeStamp - that.timeStamp || 1;\n\n if (!offset && this.invalidZeroEvents) {\n return;\n }\n\n that.delta = offset - that.location;\n that._updateLocationData(location);\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n };\n\n TouchAxis.prototype._updateLocationData = function _updateLocationData (location) {\n var that = this,\n axis = that.axis;\n\n that.location = location['page' + axis];\n that.client = location['client' + axis];\n that.screen = location['screen' + axis];\n };\n\n return TouchAxis;\n}(Class));\n\nexport var Touch = (function (Class) {\n function Touch(userEvents, target, touchInfo) {\n Class.call(this);\n\n extend(this, {\n x: new TouchAxis('X', touchInfo.location),\n y: new TouchAxis('Y', touchInfo.location),\n type: touchInfo.type,\n useClickAsTap: userEvents.useClickAsTap,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _clicks: userEvents._clicks,\n supportDoubleTap: userEvents.supportDoubleTap,\n _moved: false,\n _finished: false\n });\n }\n\n if ( Class ) Touch.__proto__ = Class;\n Touch.prototype = Object.create( Class && Class.prototype );\n Touch.prototype.constructor = Touch;\n\n Touch.prototype.press = function press () {\n // this._holdTimeout = setTimeout($.proxy(this, '_hold'), this.userEvents.minHold);\n this._holdTimeout = setTimeout(proxy(this._hold, this), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n };\n\n Touch.prototype._tap = function _tap (touchInfo) {\n var that = this;\n\n that.userEvents._clicks++;\n\n if (that.userEvents._clicks === 1) {\n that._clickTimeout = setTimeout(function() {\n if (that.userEvents._clicks === 1) {\n that._trigger(TAP, touchInfo);\n } else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n };\n\n Touch.prototype._hold = function _hold () {\n this._trigger(HOLD, this.pressEvent);\n };\n\n /* eslint-disable consistent-return */\n Touch.prototype.move = function move (touchInfo) {\n var that = this;\n var preventMove = touchInfo.type !== 'api' && that.userEvents._shouldNotMove;\n\n if (that._finished || preventMove) {\n return;\n }\n\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n };\n /* eslint-enable consistent-return */\n\n Touch.prototype.end = function end (touchInfo) {\n this.endTime = now();\n\n if (this._finished) {\n return;\n }\n\n this._finished = true;\n this._trigger(RELEASE, touchInfo);\n\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (!this.useClickAsTap) {\n if (this.supportDoubleTap) {\n this._tap(touchInfo);\n } else {\n this._trigger(TAP, touchInfo);\n }\n }\n }\n\n clearTimeout(this._holdTimeout);\n this.dispose();\n };\n\n Touch.prototype.dispose = function dispose () {\n var userEvents = this.userEvents,\n activeTouches = userEvents.touches || [];\n\n this._finished = true;\n this.pressEvent = null;\n\n clearTimeout(this._holdTimeout);\n // activeTouches.splice($.inArray(this, activeTouches), 1);\n var activeTouchIndex = activeTouches.indexOf(this);\n activeTouches.splice(activeTouchIndex, 1);\n };\n\n Touch.prototype.skip = function skip () {\n this.dispose();\n };\n\n Touch.prototype.cancel = function cancel () {\n this.dispose();\n };\n\n Touch.prototype.isMoved = function isMoved () {\n return this._moved;\n };\n\n Touch.prototype._start = function _start (touchInfo) {\n clearTimeout(this._holdTimeout);\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n };\n\n Touch.prototype._trigger = function _trigger (name, touchInfo) {\n var that = this,\n jQueryEvent = touchInfo.event,\n data = {\n touch: that,\n x: that.x,\n y: that.y,\n target: that.target,\n event: jQueryEvent\n };\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n };\n\n Touch.prototype._withinIgnoreThreshold = function _withinIgnoreThreshold () {\n var xDelta = this.x.initialDelta,\n yDelta = this.y.initialDelta;\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n };\n\n return Touch;\n}(Class));\n\nfunction withEachUpEvent(callback) {\n var eventMap = getEventMap(navigator.userAgent);\n var downEvents = eventMap.up.split(' '),\n idx = 0,\n length = downEvents.length;\n\n for (; idx < length; idx++) {\n callback(downEvents[idx]);\n }\n}\n\nexport var UserEvents = (function (Observable) {\n function UserEvents(element, options) {\n Observable.call(this);\n var that = this;\n var filter;\n\n var support = getSupportedFeatures();\n this.support = support;\n\n /* eslint-disable no-param-reassign */\n options = options || {};\n /* eslint-enable no-param-reassign */\n this.options = options;\n\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that.useClickAsTap = !options.fastTap && !support.delayedClick();\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n\n var enableGlobalSurface = !support.touch || support.mouseAndTouchPresent;\n\n extend(that, {\n element: element,\n surface: options.global && enableGlobalSurface ?\n element.ownerDocument.documentElement :\n options.surface || element,\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n this._surfaceMoveHandler = proxy(this._move, this);\n on(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n\n this._surfaceEndHandler = proxy(this._end, this);\n on(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n this._elementStartHandler = proxy(this._start, this);\n on(element, applyEventMap('down'), filter, this._elementStartHandler);\n\n if (that.useClickAsTap) {\n this._elementClickHandler = proxy(this._click, this);\n on(element, applyEventMap('click'), filter, this._elementClickHandler);\n }\n\n if (support.pointers || support.msPointers) {\n if (support.browser.version < 11) {\n var defaultAction = 'pinch-zoom double-tap-zoom';\n\n element.style['-ms-touch-action'] =\n options.touchAction && options.touchAction !== 'none' ?\n defaultAction + ' ' + options.touchAction :\n defaultAction;\n\n } else {\n element.style['touch-action'] = options.touchAction || 'none';\n }\n }\n if (options.preventDragEvent) {\n this._elementDragStartHandler = preventDefault;\n on(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n // element.on(kendo.applyEventMap('mousedown'), filter, {\n // root: element\n // } '_select');\n\n // todo: use root\n this._elementSelectHandler = proxy(this._select, this);\n on(element, applyEventMap('mousedown'), filter, this._elementSelectHandler);\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface,\n preventIfMovingProxy = proxy(that.preventIfMoving, that);\n\n withEachUpEvent(function(eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n\n that.bind([\n PRESS,\n HOLD,\n TAP,\n DOUBLETAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n }\n\n if ( Observable ) UserEvents.__proto__ = Observable;\n UserEvents.prototype = Object.create( Observable && Observable.prototype );\n UserEvents.prototype.constructor = UserEvents;\n\n UserEvents.prototype.preventIfMoving = function preventIfMoving (e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n };\n\n UserEvents.prototype.destroy = function destroy () {\n var that = this;\n var options = this.options;\n var element = this.element;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n if (that.captureUpIfMoved && this.support.eventCapture) {\n var surfaceElement = that.surface;\n withEachUpEvent(function(eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n\n off(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n off(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n off(element, applyEventMap('down'), this._elementStartHandler);\n\n if (that.useClickAsTap) {\n off(element, applyEventMap('click'), this._elementClickHandler);\n }\n\n if (options.preventDragEvent) {\n off(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n off(element, applyEventMap('mousedown'), this._elementSelectHandler);\n\n that._disposeAll();\n that.unbind();\n\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n };\n\n UserEvents.prototype.capture = function capture () {\n UserEvents.current = this;\n };\n\n UserEvents.prototype.cancel = function cancel () {\n this._disposeAll();\n this.trigger(CANCEL);\n };\n\n /* eslint-disable indent */\n UserEvents.prototype.notify = function notify (event, data) {\n var that = this,\n touches = that.touches;\n var eventName = event;\n\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n default:\n break;\n }\n\n extend(data, {\n touches: touches\n }, touchDelta(touches[0], touches[1]));\n }\n\n return this.trigger(eventName, extend(data, {\n type: eventName\n }));\n };\n /* eslint-enable indent */\n\n UserEvents.prototype.press = function press (x, y, target) {\n this._apiCall('_start', x, y, target);\n };\n\n UserEvents.prototype.move = function move (x, y) {\n this._apiCall('_move', x, y);\n };\n\n UserEvents.prototype.end = function end (x, y) {\n this._apiCall('_end', x, y);\n };\n\n UserEvents.prototype._isMultiTouch = function _isMultiTouch () {\n return this.touches.length > 1;\n };\n\n UserEvents.prototype._maxTouchesReached = function _maxTouchesReached () {\n return this.touches.length >= this._maxTouches;\n };\n\n UserEvents.prototype._disposeAll = function _disposeAll () {\n var touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n };\n\n UserEvents.prototype._isMoved = function _isMoved () {\n return grep(this.touches, function(touch) {\n return touch.isMoved();\n }).length;\n };\n\n UserEvents.prototype._select = function _select (e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n };\n\n UserEvents.prototype._start = function _start (e) {\n var that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if (which && which > 1 || that._maxTouchesReached()) {\n return;\n }\n\n UserEvents.current = null;\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = touch.currentTarget;\n } else {\n target = that.element;\n }\n\n if (target && target.length === 0) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n\n if (that._isMultiTouch()) {\n that.notify('gesturestart', {});\n }\n }\n };\n\n UserEvents.prototype._move = function _move (e) {\n this._eachTouch('move', e);\n };\n\n UserEvents.prototype._end = function _end (e) {\n this._eachTouch('end', e);\n };\n\n UserEvents.prototype._click = function _click (e) {\n var data = {\n touch: {\n initialTouch: e.target,\n target: e.currentTarget,\n endTime: now(),\n x: {\n location: e.pageX,\n client: e.clientX\n },\n y: {\n location: e.pageY,\n client: e.clientY\n }\n },\n x: e.pageX,\n y: e.pageY,\n target: e.currentTarget,\n event: e,\n type: 'tap'\n };\n\n if (this.trigger('tap', data)) {\n e.preventDefault();\n }\n };\n\n UserEvents.prototype._eachTouch = function _eachTouch (methodName, e) {\n var that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch[methodName](touchInfo);\n }\n }\n };\n\n UserEvents.prototype._apiCall = function _apiCall (type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: target || this.element,\n stopPropagation: noop,\n preventDefault: noop\n });\n };\n\n UserEvents.defaultThreshold = function defaultThreshold (value) {\n DEFAULT_THRESHOLD = value;\n };\n\n UserEvents.minHold = function minHold (value) {\n DEFAULT_MIN_HOLD = value;\n };\n\n return UserEvents;\n}(Observable));\n","// todo: extract to a separate place\n\nimport {\n Class,\n deepExtend,\n addClass,\n isFunction,\n setDefaultOptions\n} from '../../common';\n\nimport {\n convertToHtml,\n prepend,\n wrapInner,\n contains,\n hasNativeScrolling,\n on,\n off,\n proxy,\n wheelDeltaY,\n setDefaultEvents\n} from '../utils';\n\nimport {\n Transition,\n Animation\n} from './fx';\n\nimport {\n Pane,\n PaneDimensions,\n Movable,\n TapCapture\n} from './draggable';\n\nimport {\n UserEvents\n} from './user-events';\n\nimport {\n Observable\n} from './observable';\n\nvar\n extend = Object.assign,\n abs = Math.abs,\n SNAPBACK_DURATION = 500,\n SCROLLBAR_OPACITY = 0.7,\n FRICTION = 0.96,\n VELOCITY_MULTIPLIER = 10,\n MAX_VELOCITY = 55,\n OUT_OF_BOUNDS_FRICTION = 0.5,\n ANIMATED_SCROLLER_PRECISION = 5,\n // SCROLLER_RELEASE_CLASS = 'km-scroller-release',\n // SCROLLER_REFRESH_CLASS = 'km-scroller-refresh',\n PULL = 'pull',\n CHANGE = 'change',\n RESIZE = 'resize',\n SCROLL = 'scroll',\n MOUSE_WHEEL_ID = 2;\n\nvar ZoomSnapBack = (function (Animation) {\n function ZoomSnapBack(options) {\n Animation.call(this, options);\n var that = this;\n extend(that, options);\n that.userEvents.bind('gestureend', that.start.bind(this));\n that.tapCapture.bind('press', that.cancel.bind(this));\n }\n\n if ( Animation ) ZoomSnapBack.__proto__ = Animation;\n ZoomSnapBack.prototype = Object.create( Animation && Animation.prototype );\n ZoomSnapBack.prototype.constructor = ZoomSnapBack;\n\n ZoomSnapBack.prototype.enabled = function enabled () {\n return this.movable.scale < this.dimensions.minScale;\n };\n\n ZoomSnapBack.prototype.done = function done () {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n };\n\n ZoomSnapBack.prototype.tick = function tick () {\n var movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n };\n\n ZoomSnapBack.prototype.onEnd = function onEnd () {\n var movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n };\n\n return ZoomSnapBack;\n}(Animation));\n\nvar DragInertia = (function (Animation) {\n function DragInertia(options) {\n Animation.call(this);\n var that = this;\n\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd: function onEnd() {\n that._end();\n }\n })\n });\n\n that.tapCapture.bind('press', function() {\n that.cancel();\n });\n\n that.userEvents.bind('end', proxy(that.start, that));\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.userEvents.bind('tap', proxy(that.onEnd, that));\n }\n\n if ( Animation ) DragInertia.__proto__ = Animation;\n DragInertia.prototype = Object.create( Animation && Animation.prototype );\n DragInertia.prototype.constructor = DragInertia;\n\n DragInertia.prototype.onCancel = function onCancel () {\n this.transition.cancel();\n };\n\n DragInertia.prototype.freeze = function freeze (location) {\n var that = this;\n that.cancel();\n that._moveTo(location);\n };\n\n DragInertia.prototype.onEnd = function onEnd () {\n var that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n };\n\n DragInertia.prototype.done = function done () {\n return abs(this.velocity) < 1;\n };\n\n DragInertia.prototype.start = function start (e) {\n var that = this,\n velocity;\n if (!that.dimension.enabled) {\n return;\n }\n if (that.paneAxis.outOfBounds()) {\n if (that.transition._started) {\n that.transition.cancel();\n that.velocity = Math.min(e.touch[that.axis].velocity * that.velocityMultiplier, MAX_VELOCITY);\n Animation.prototype.start.call(this);\n } else {\n that._snapBack();\n }\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n that.tapCapture.captureNext();\n Animation.prototype.start.call(this);\n }\n };\n\n DragInertia.prototype.tick = function tick () {\n var that = this,\n dimension = that.dimension,\n friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction,\n delta = that.velocity *= friction,\n location = that.movable[that.axis] + delta;\n\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n\n that.movable.moveAxis(that.axis, location);\n };\n\n DragInertia.prototype._end = function _end () {\n this.tapCapture.cancelCapture();\n this.end();\n };\n\n DragInertia.prototype._snapBack = function _snapBack () {\n var that = this,\n dimension = that.dimension,\n snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n\n that._moveTo(snapBack);\n };\n\n DragInertia.prototype._moveTo = function _moveTo (location) {\n this.transition.moveTo({\n location: location,\n duration: SNAPBACK_DURATION,\n ease: Transition.easeOutExpo\n });\n };\n\n return DragInertia;\n}(Animation));\n\nvar AnimatedScroller = (function (Animation) {\n function AnimatedScroller(options) {\n Animation.call(this, options);\n var that = this;\n\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n }\n\n if ( Animation ) AnimatedScroller.__proto__ = Animation;\n AnimatedScroller.prototype = Object.create( Animation && Animation.prototype );\n AnimatedScroller.prototype.constructor = AnimatedScroller;\n\n AnimatedScroller.prototype.tick = function tick () {\n this._updateCoordinates();\n this.moveTo(this.origin);\n };\n\n AnimatedScroller.prototype.done = function done () {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n };\n\n AnimatedScroller.prototype.onEnd = function onEnd () {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n };\n\n AnimatedScroller.prototype.setCoordinates = function setCoordinates (from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n };\n\n /* eslint-disable no-param-reassign */\n AnimatedScroller.prototype.setCallback = function setCallback (callback) {\n if (callback && isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined;\n }\n };\n /* eslint-enable no-param-reassign */\n\n AnimatedScroller.prototype._updateCoordinates = function _updateCoordinates () {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n };\n\n return AnimatedScroller;\n}(Animation));\n\nvar ScrollBar = (function (Class) {\n function ScrollBar(options) {\n Class.call(this);\n var that = this,\n horizontal = options.axis === 'x';\n\n var orientation = (horizontal ? 'horizontal' : 'vertical');\n var element = convertToHtml('<div class=\"km-touch-scrollbar km-' + orientation + '-scrollbar\" />');\n\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? 'width' : 'height'\n });\n\n that.scrollMovable.bind(CHANGE, that.refresh.bind(that));\n\n that.container.appendChild(element);\n\n if (options.alwaysVisible) {\n that.show();\n }\n }\n\n if ( Class ) ScrollBar.__proto__ = Class;\n ScrollBar.prototype = Object.create( Class && Class.prototype );\n ScrollBar.prototype.constructor = ScrollBar;\n\n ScrollBar.prototype.refresh = function refresh () {\n var that = this,\n axis = that.axis,\n dimension = that.dimension,\n paneSize = dimension.size,\n scrollMovable = that.scrollMovable,\n sizeRatio = paneSize / dimension.total,\n position = Math.round(-scrollMovable[axis] * sizeRatio),\n size = Math.round(paneSize * sizeRatio);\n if (sizeRatio >= 1) {\n this.element.style.display = \"none\";\n } else {\n this.element.style.display = \"\";\n }\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n if (that.elementSize !== size) {\n that.element.style[that.size] = size + 'px';\n that.elementSize = size;\n }\n that.movable.moveAxis(axis, position);\n };\n\n ScrollBar.prototype.show = function show () {\n this.element.style.opacity = SCROLLBAR_OPACITY;\n this.element.style.visibility = \"visible\";\n };\n\n ScrollBar.prototype.hide = function hide () {\n if (!this.alwaysVisible) {\n this.element.style.opacity = 0;\n }\n };\n\n return ScrollBar;\n}(Class));\n\n// export class Scroller extends Class {\nexport var Scroller = (function (Observable) {\n function Scroller(element, options) {\n Observable.call(this);\n var that = this;\n this.element = element;\n\n this._initOptions(options);\n\n var hasScrolling = hasNativeScrolling(navigator.userAgent);\n that._native = that.options.useNative && hasScrolling;\n var scrollHeader = convertToHtml('<div class=\"km-scroll-header\"/>');\n\n if (that._native) {\n addClass(element, 'km-native-scroller');\n prepend(scrollHeader, element);\n\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children[0]\n });\n\n return;\n }\n\n element.style.overflow = \"hidden\";\n addClass(element, 'km-scroll-wrapper');\n\n var scrollContainer = convertToHtml('<div class=\"km-scroll-container\"/>');\n wrapInner(element, scrollContainer);\n prepend(scrollHeader, element);\n\n var inner = element.children[1],\n tapCapture = new TapCapture(element),\n movable = new Movable(inner),\n\n dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }),\n avoidScrolling = this.options.avoidScrolling,\n\n userEvents = new UserEvents(element, {\n touchAction: 'pan-y',\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n supportDoubleTap: that.options.supportDoubleTap,\n start: function start(e) {\n dimensions.refresh();\n var velocityX = abs(e.x.velocity),\n velocityY = abs(e.y.velocity),\n horizontalSwipe = velocityX * 2 >= velocityY,\n originatedFromFixedContainer = contains(that.fixedContainer, e.event.target),\n verticalSwipe = velocityY * 2 >= velocityX;\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }),\n\n pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }),\n\n zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }),\n\n animatedScroller = new AnimatedScroller({\n moveTo: function moveTo(coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n\n movable.bind(CHANGE, function() {\n that.scrollTop = -movable.y;\n that.scrollLeft = -movable.x;\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n\n if (that.options.mousewheelScrolling) {\n this._wheelScrollHandler = this._wheelScroll.bind(this);\n on(element, 'wheel', this._wheelScrollHandler);\n }\n\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children[0]\n });\n\n that._initAxis('x');\n that._initAxis('y');\n\n that._wheelEnd = function() {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n\n dimensions.refresh();\n\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n }\n\n if ( Observable ) Scroller.__proto__ = Observable;\n Scroller.prototype = Object.create( Observable && Observable.prototype );\n Scroller.prototype.constructor = Scroller;\n\n Scroller.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Scroller.prototype._wheelScroll = function _wheelScroll (e) {\n if (e.ctrlKey) {\n return;\n }\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n var delta = wheelDeltaY(e);\n\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n\n e.preventDefault();\n };\n\n Scroller.prototype.makeVirtual = function makeVirtual () {\n this.dimensions.y.makeVirtual();\n };\n\n Scroller.prototype.virtualSize = function virtualSize (min, max) {\n this.dimensions.y.virtualSize(min, max);\n };\n\n Scroller.prototype.height = function height () {\n return this.dimensions.y.size;\n };\n\n Scroller.prototype.scrollHeight = function scrollHeight () {\n return this.scrollElement.scrollHeight;\n };\n\n Scroller.prototype.scrollWidth = function scrollWidth () {\n return this.scrollElement.scrollWidth;\n };\n\n Scroller.prototype._resize = function _resize () {\n if (!this._native) {\n this.contentResized();\n }\n };\n\n Scroller.prototype.setOptions = function setOptions (options) {\n var that = this;\n\n this._initOptions(options);\n\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n };\n\n Scroller.prototype.reset = function reset () {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({\n x: 0,\n y: 0\n });\n this._scale(1);\n }\n };\n\n Scroller.prototype.contentResized = function contentResized () {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis('x', this.dimensions.x.min);\n }\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis('y', this.dimensions.y.min);\n }\n };\n\n Scroller.prototype.zoomOut = function zoomOut () {\n var dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n };\n\n Scroller.prototype.enable = function enable () {\n this.enabled = true;\n };\n\n Scroller.prototype.disable = function disable () {\n this.enabled = false;\n };\n\n Scroller.prototype.scrollTo = function scrollTo (x, y) {\n if (this._native) {\n this.scrollElement.scrollLeft(abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({\n x: x,\n y: y\n });\n }\n };\n\n Scroller.prototype.animatedScrollTo = function animatedScrollTo (x, y, callback) {\n var from, to;\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = {\n x: this.movable.x,\n y: this.movable.y\n };\n to = {\n x: x,\n y: y\n };\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n };\n\n // kept for API compatibility, not used\n Scroller.prototype.pullHandled = function pullHandled () {\n // let that = this;\n\n // removeClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n // that.hintContainer.innerHTML = that.pullTemplate({}));\n\n // that.yinertia.onEnd();\n // that.xinertia.onEnd();\n // that.userEvents.cancel();\n };\n\n Scroller.prototype.destroy = function destroy () {\n var element = this.element;\n\n off(element, 'wheel', this._wheelScrollHandler);\n\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n };\n\n Scroller.prototype._scale = function _scale (scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n };\n\n Scroller.prototype._initPullToRefresh = function _initPullToRefresh () {\n };\n\n // kept for API compatibility, not used\n Scroller.prototype._dragEnd = function _dragEnd () {\n // let that = this;\n\n // if (!that.pulled) {\n // return;\n // }\n\n // that.pulled = false;\n\n // removeClass(that.refreshHint, SCROLLER_RELEASE_CLASS);\n // addClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n\n // that.hintContainer.innerHTML = that.refreshTemplate({});\n\n // that.yinertia.freeze(that.options.pullOffset / 2);\n // that.trigger('pull');\n };\n\n // kept for API compatibility, not used\n Scroller.prototype._paneChange = function _paneChange () {\n // let that = this;\n // if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n // if (!that.pulled) {\n // that.pulled = true;\n // that.refreshHint.removeClass(SCROLLER_REFRESH_CLASS).addClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.releaseTemplate({}));\n // that.hintContainer.html(that.releaseTemplate({}));\n // }\n // } else if (that.pulled) {\n // that.pulled = false;\n // that.refreshHint.removeClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.pullTemplate({}));\n // }\n };\n\n Scroller.prototype._initAxis = function _initAxis (axis) {\n var that = this,\n movable = that.movable,\n dimension = that.dimensions[axis],\n tapCapture = that.tapCapture,\n paneAxis = that.pane[axis],\n scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints\n });\n\n dimension.bind(CHANGE, function() {\n scrollBar.refresh();\n });\n\n paneAxis.bind(CHANGE, function() {\n scrollBar.show();\n });\n\n that[axis + 'inertia'] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end: function end() {\n scrollBar.hide();\n that.trigger('scrollEnd', {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n };\n\n return Scroller;\n}(Observable));\n\nsetDefaultOptions(Scroller, {\n name: 'Scroller',\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling: function avoidScrolling() {\n return false;\n },\n pullToRefresh: false,\n messages: {\n pullTemplate: 'Pull to refresh',\n releaseTemplate: 'Release to refresh',\n refreshTemplate: 'Refreshing'\n }\n});\n\nsetDefaultEvents(Scroller, [\n PULL,\n SCROLL,\n RESIZE\n]);\n\n","var MapService = function MapService(widget, context) {\n if ( context === void 0 ) context = {};\n\n this.sender = context.sender || widget;\n this.widget = widget;\n this.rtl = Boolean(context.rtl);\n};\n\nMapService.prototype.notify = function notify (name, args) {\n if (this.widget) {\n this.widget.trigger(name, args);\n }\n};\n\nexport default MapService;\n","import {\n geometry as g,\n throttle\n} from '@progress/kendo-drawing';\n\nimport {\n addClass,\n setDefaultOptions,\n valueOrDefault,\n defined,\n mousewheelDelta,\n limitValue,\n deepExtend,\n elementOffset,\n isArray,\n round\n} from '../common';\n\nimport {\n EPSG3857\n} from './crs';\n\nimport {\n Attribution\n} from './attribution';\n\nimport {\n Navigator\n} from './navigator';\n\nimport {\n ZoomControl\n} from './zoom';\n\nimport {\n Location\n} from './location';\n\nimport {\n Extent\n} from './extent';\n\nimport { Tooltip } from './tooltip/tooltip';\n\nimport {\n TileLayer\n} from './layers/tile';\n\nimport {\n BubbleLayer\n} from './layers/bubble';\n\nimport {\n ShapeLayer\n} from './layers/shape';\n\nimport {\n MarkerLayer\n} from './layers/marker';\n\nimport {\n removeChildren,\n setDefaultEvents,\n proxy,\n now,\n on,\n off,\n getSupportedFeatures,\n convertToHtml,\n renderPos\n} from './utils';\n\nimport {\n Scroller\n} from './scroller/scroller';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport MapService from './../services/map-service';\n\nimport { CENTER_CHANGE, INIT, ZOOM_CHANGE } from './constants';\n\nvar math = Math,\n min = math.min,\n pow = math.pow,\n Point = g.Point,\n MARKER = \"marker\",\n LOCATION = \"location\",\n FRICTION = 0.9,\n FRICTION_MOBILE = 0.93,\n MOUSEWHEEL = 'wheel',\n MOUSEWHEEL_THROTTLE = 50,\n VELOCITY_MULTIPLIER = 5,\n DEFAULT_ZOOM_RATE = 1;\n\nvar layersMap = {\n bubble: BubbleLayer,\n shape: ShapeLayer,\n tile: TileLayer\n};\nlayersMap[MARKER] = MarkerLayer;\n\nvar Map = (function (Observable) {\n function Map(element, options, themeOptions, context) {\n if ( options === void 0 ) options = {};\n if ( themeOptions === void 0 ) themeOptions = {};\n if ( context === void 0 ) context = {};\n\n Observable.call(this);\n\n this._init(element, options, themeOptions, context);\n }\n\n if ( Observable ) Map.__proto__ = Observable;\n Map.prototype = Object.create( Observable && Observable.prototype );\n Map.prototype.constructor = Map;\n\n Map.prototype.destroy = function destroy () {\n var this$1 = this;\n\n this.scroller.destroy();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this.navigator) {\n this.navigator.destroy();\n }\n if (this.attribution) {\n this.attribution.destroy();\n }\n if (this.zoomControl) {\n this.zoomControl.destroy();\n }\n\n if (isArray(this.markers)) {\n this.markers.forEach(function (markerLayer) {\n markerLayer.destroy();\n });\n } else {\n this.markers.destroy();\n }\n\n for (var i = 0; i < this.layers.length; i++) {\n this$1.layers[i].destroy();\n }\n\n off(this.element, MOUSEWHEEL, this._mousewheelHandler);\n\n Observable.prototype.destroy.call(this);\n };\n\n Map.prototype._init = function _init (element, options, themeOptions, context) {\n if ( options === void 0 ) options = {};\n if ( themeOptions === void 0 ) themeOptions = {};\n if ( context === void 0 ) context = {};\n\n this.support = getSupportedFeatures();\n this.context = context;\n\n this.initObserver(context);\n this.initServices(context);\n this._notifyObserver(INIT);\n\n this._initOptions(options);\n this._setEvents(options);\n this.crs = new EPSG3857();\n\n this._initElement(element);\n\n this._viewOrigin = this._getOrigin();\n\n this._tooltip = this._createTooltip();\n this._initScroller();\n this._initMarkers();\n this._initControls();\n this._initLayers();\n this._reset();\n\n var mousewheelThrottled = throttle(this._mousewheel.bind(this), MOUSEWHEEL_THROTTLE);\n this._mousewheelHandler = function (e) {\n e.preventDefault();\n mousewheelThrottled(e);\n };\n on(this.element, MOUSEWHEEL, this._mousewheelHandler);\n };\n\n Map.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Map.prototype._initElement = function _initElement (element) {\n this.element = element;\n\n addClass(element, \"k-map\");\n element.style.position = \"relative\";\n element.setAttribute(\"data-role\", \"map\");\n removeChildren(element);\n\n var div = convertToHtml(\"<div />\");\n this.element.appendChild(div);\n };\n\n Map.prototype.initServices = function initServices (context) {\n if ( context === void 0 ) context = {};\n\n this.widgetService = new MapService(this, context);\n };\n\n Map.prototype.initObserver = function initObserver (context) {\n if ( context === void 0 ) context = {};\n\n this.observers = [];\n this.addObserver(context.observer);\n };\n\n Map.prototype.addObserver = function addObserver (observer) {\n if (observer) {\n this.observers.push(observer);\n }\n };\n\n Map.prototype.removeObserver = function removeObserver (observer) {\n var index = this.observers.indexOf(observer);\n\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n };\n\n Map.prototype.requiresHandlers = function requiresHandlers (eventNames) {\n var observers = this.observers;\n\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n };\n\n Map.prototype.trigger = function trigger (name, args) {\n if ( args === void 0 ) args = {};\n\n args.sender = this;\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n if (!isDefaultPrevented) {\n Observable.prototype.trigger.call(this, name, args);\n }\n\n return isDefaultPrevented;\n };\n\n Map.prototype._notifyObserver = function _notifyObserver (name, args) {\n if ( args === void 0 ) args = {};\n\n args.sender = this;\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n };\n\n Map.prototype.zoom = function zoom (level) {\n var options = this.options;\n var result;\n\n if (defined(level)) {\n var zoomLevel = math.round(limitValue(level, options.minZoom, options.maxZoom));\n\n if (options.zoom !== zoomLevel) {\n options.zoom = zoomLevel;\n this.widgetService.notify(ZOOM_CHANGE, { zoom: options.zoom });\n\n this._reset();\n }\n result = this;\n } else {\n result = options.zoom;\n }\n\n return result;\n };\n\n Map.prototype.center = function center (center$1) {\n var result;\n\n if (center$1) {\n var current = Location.create(center$1);\n var previous = Location.create(this.options.center);\n if (!current.equals(previous)) {\n this.options.center = current.toArray();\n this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n this._reset();\n }\n\n result = this;\n } else {\n result = Location.create(this.options.center);\n }\n\n return result;\n };\n\n Map.prototype.extent = function extent (extent$1) {\n var result;\n\n if (extent$1) {\n this._setExtent(extent$1);\n result = this;\n } else {\n result = this._getExtent();\n }\n\n return result;\n };\n\n Map.prototype.setOptions = function setOptions (options) {\n if ( options === void 0 ) options = {};\n\n var element = this.element;\n\n this.destroy();\n removeChildren(element);\n this._init(element, options, {}, this.context);\n\n this._reset();\n };\n\n Map.prototype.locationToLayer = function locationToLayer (location, zoom) {\n var clamp = !this.options.wraparound;\n var locationObject = Location.create(location);\n\n return this.crs.toPoint(locationObject, this._layerSize(zoom), clamp);\n };\n\n Map.prototype.layerToLocation = function layerToLocation (point, zoom) {\n var clamp = !this.options.wraparound;\n var pointObject = Point.create(point);\n\n return this.crs.toLocation(pointObject, this._layerSize(zoom), clamp);\n };\n\n Map.prototype.locationToView = function locationToView (location) {\n var locationObject = Location.create(location);\n var origin = this.locationToLayer(this._viewOrigin);\n var point = this.locationToLayer(locationObject);\n\n return point.translateWith(origin.scale(-1));\n };\n\n Map.prototype.viewToLocation = function viewToLocation (point, zoom) {\n var origin = this.locationToLayer(this._getOrigin(), zoom);\n var pointObject = Point.create(point);\n var pointResult = pointObject.clone().translateWith(origin);\n\n return this.layerToLocation(pointResult, zoom);\n };\n\n Map.prototype.eventOffset = function eventOffset (e) {\n var x;\n var y;\n var offset = elementOffset(this.element);\n\n if ((e.x && e.x[LOCATION]) || (e.y && e.y[LOCATION])) {\n x = e.x[LOCATION] - offset.left;\n y = e.y[LOCATION] - offset.top;\n } else {\n var event = e.originalEvent || e;\n x = valueOrDefault(event.pageX, event.clientX) - offset.left;\n y = valueOrDefault(event.pageY, event.clientY) - offset.top;\n }\n\n var point = new g.Point(x, y);\n\n return point;\n };\n\n Map.prototype.eventToView = function eventToView (e) {\n var cursor = this.eventOffset(e);\n return this.locationToView(this.viewToLocation(cursor));\n };\n\n Map.prototype.eventToLayer = function eventToLayer (e) {\n return this.locationToLayer(this.eventToLocation(e));\n };\n\n Map.prototype.eventToLocation = function eventToLocation (e) {\n var cursor = this.eventOffset(e);\n return this.viewToLocation(cursor);\n };\n\n Map.prototype.viewSize = function viewSize () {\n var element = this.element;\n var scale = this._layerSize();\n var width = element.clientWidth;\n\n if (!this.options.wraparound) {\n width = min(scale, width);\n }\n\n return {\n width: width,\n height: min(scale, element.clientHeight)\n };\n };\n\n Map.prototype.exportVisual = function exportVisual () {\n this._reset();\n return false;\n };\n\n Map.prototype.hideTooltip = function hideTooltip () {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n };\n\n Map.prototype._setOrigin = function _setOrigin (origin, zoom) {\n var size = this.viewSize(),\n topLeft;\n\n var originLocation = this._origin = Location.create(origin);\n topLeft = this.locationToLayer(originLocation, zoom);\n topLeft.x += size.width / 2;\n topLeft.y += size.height / 2;\n this.options.center = this.layerToLocation(topLeft, zoom).toArray();\n this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n\n return this;\n };\n\n Map.prototype._getOrigin = function _getOrigin (invalidate) {\n var size = this.viewSize(),\n topLeft;\n\n if (invalidate || !this._origin) {\n topLeft = this.locationToLayer(this.center());\n topLeft.x -= size.width / 2;\n topLeft.y -= size.height / 2;\n this._origin = this.layerToLocation(topLeft);\n }\n\n return this._origin;\n };\n\n Map.prototype._setExtent = function _setExtent (newExtent) {\n var this$1 = this;\n\n var raw = Extent.create(newExtent);\n var se = raw.se.clone();\n\n if (this.options.wraparound && se.lng < 0 && newExtent.nw.lng > 0) {\n se.lng = 180 + (180 + se.lng);\n }\n\n var extent = new Extent(raw.nw, se);\n this.center(extent.center());\n var width = this.element.clientWidth;\n var height = this.element.clientHeight;\n var zoom;\n\n for (zoom = this.options.maxZoom; zoom >= this.options.minZoom; zoom--) {\n var topLeft = this$1.locationToLayer(extent.nw, zoom);\n var bottomRight = this$1.locationToLayer(extent.se, zoom);\n var layerWidth = math.abs(bottomRight.x - topLeft.x);\n var layerHeight = math.abs(bottomRight.y - topLeft.y);\n\n if (layerWidth <= width && layerHeight <= height) {\n break;\n }\n }\n\n this.zoom(zoom);\n };\n\n Map.prototype._getExtent = function _getExtent () {\n var nw = this._getOrigin();\n var bottomRight = this.locationToLayer(nw);\n var size = this.viewSize();\n\n bottomRight.x += size.width;\n bottomRight.y += size.height;\n\n var se = this.layerToLocation(bottomRight);\n\n return new Extent(nw, se);\n };\n\n Map.prototype._zoomAround = function _zoomAround (pivot, level) {\n this._setOrigin(this.layerToLocation(pivot, level), level);\n this.zoom(level);\n };\n\n Map.prototype._initControls = function _initControls () {\n var controls = this.options.controls;\n if (controls.attribution) {\n this._createAttribution(controls.attribution);\n }\n\n if (!this.support.mobileOS) {\n if (controls.navigator) {\n this._createNavigator(controls.navigator);\n }\n\n if (controls.zoom) {\n this._createZoomControl(controls.zoom);\n }\n }\n };\n\n Map.prototype._createControlElement = function _createControlElement (options, defaultPosition) {\n var pos = options.position || defaultPosition;\n var posSelector = '.' + renderPos(pos).replace(' ', '.');\n var wrap = this.element.querySelector('.k-map-controls' + posSelector) || [];\n\n if (wrap.length === 0) {\n var div$1 = document.createElement(\"div\");\n addClass(div$1, 'k-map-controls ' + renderPos(pos));\n wrap = div$1;\n this.element.appendChild(wrap);\n }\n\n var div = document.createElement(\"div\");\n\n wrap.appendChild(div);\n\n return div;\n };\n\n Map.prototype._createAttribution = function _createAttribution (options) {\n var element = this._createControlElement(options, 'bottomRight');\n this.attribution = new Attribution(element, options);\n };\n\n Map.prototype._createNavigator = function _createNavigator (options) {\n var element = this._createControlElement(options, 'topLeft');\n var navigator = this.navigator = new Navigator(element, deepExtend({}, options, { icons: this.options.icons }));\n\n this._navigatorPan = this._navigatorPan.bind(this);\n navigator.bind('pan', this._navigatorPan);\n\n this._navigatorCenter = this._navigatorCenter.bind(this);\n navigator.bind('center', this._navigatorCenter);\n };\n\n Map.prototype._navigatorPan = function _navigatorPan (e) {\n var scroller = this.scroller;\n var x = scroller.scrollLeft + e.x;\n var y = scroller.scrollTop - e.y;\n var bounds = this._virtualSize;\n var width = this.element.clientWidth;\n var height = this.element.clientHeight;\n\n // TODO: Move limits to scroller\n x = limitValue(x, bounds.x.min, bounds.x.max - width);\n y = limitValue(y, bounds.y.min, bounds.y.max - height);\n\n this.scroller.one('scroll', proxy(this._scrollEnd, this));\n\n this.scroller.scrollTo(-x, -y);\n };\n\n Map.prototype._navigatorCenter = function _navigatorCenter () {\n this.center(this.options.center);\n };\n\n Map.prototype._createZoomControl = function _createZoomControl (options) {\n var element = this._createControlElement(options, 'topLeft');\n var zoomControl = this.zoomControl = new ZoomControl(element, options, this.options.icons);\n\n this._zoomControlChange = this._zoomControlChange.bind(this);\n zoomControl.bind('change', this._zoomControlChange);\n };\n\n Map.prototype._zoomControlChange = function _zoomControlChange (e) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n this.zoom(this.zoom() + e.delta);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n };\n\n Map.prototype._initScroller = function _initScroller () {\n var friction = this.support.mobileOS ? FRICTION_MOBILE : FRICTION;\n var zoomable = this.options.zoomable !== false;\n var scroller = this.scroller = new Scroller(this.element.children[0], {\n friction: friction,\n velocityMultiplier: VELOCITY_MULTIPLIER,\n zoom: zoomable,\n mousewheelScrolling: false,\n supportDoubleTap: true\n });\n\n scroller.bind('scroll', proxy(this._scroll, this));\n scroller.bind('scrollEnd', proxy(this._scrollEnd, this));\n\n scroller.userEvents.bind('gesturestart', proxy(this._scaleStart, this));\n scroller.userEvents.bind('gestureend', proxy(this._scale, this));\n scroller.userEvents.bind('doubleTap', proxy(this._doubleTap, this));\n scroller.userEvents.bind('tap', proxy(this._tap, this));\n\n this.scrollElement = scroller.scrollElement;\n };\n\n Map.prototype._initLayers = function _initLayers () {\n var this$1 = this;\n\n var defs = this.options.layers,\n layers = this.layers = [];\n\n for (var i = 0; i < defs.length; i++) {\n var options = defs[i];\n\n var layer = this$1._createLayer(options);\n layers.push(layer);\n }\n };\n\n Map.prototype._createLayer = function _createLayer (options) {\n var type = options.type || 'shape';\n var layerDefaults = this.options.layerDefaults[type];\n var layerOptions = type === MARKER ?\n deepExtend({}, this.options.markerDefaults, options, { icons: this.options.icons }) :\n deepExtend({}, layerDefaults, options);\n\n var layerConstructor = layersMap[type];\n var layer = new layerConstructor(this, layerOptions);\n\n if (type === MARKER) {\n this.markers = layer;\n }\n\n return layer;\n };\n\n Map.prototype._createTooltip = function _createTooltip () {\n return new Tooltip(this.widgetService, this.options.tooltip);\n };\n\n /* eslint-disable arrow-body-style */\n Map.prototype._initMarkers = function _initMarkers () {\n var markerLayers = (this.options.layers || []).filter(function (x) {\n return x && x.type === MARKER;\n });\n\n if (markerLayers.length > 0) {\n // render the markers from options.layers\n // instead of options.markers\n return;\n }\n\n this.markers = new MarkerLayer(this, deepExtend({}, this.options.markerDefaults, { icons: this.options.icons }));\n this.markers.add(this.options.markers);\n };\n /* eslint-enable arrow-body-style */\n\n Map.prototype._scroll = function _scroll (e) {\n var origin = this.locationToLayer(this._viewOrigin).round();\n var movable = e.sender.movable;\n var offset = new g.Point(movable.x, movable.y).scale(-1).scale(1 / movable.scale);\n\n origin.x += offset.x;\n origin.y += offset.y;\n this._scrollOffset = offset;\n\n this._tooltip.offset = offset;\n this.hideTooltip();\n\n this._setOrigin(this.layerToLocation(origin));\n\n this.trigger('pan', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n };\n\n Map.prototype._scrollEnd = function _scrollEnd (e) {\n if (!this._scrollOffset || !this._panComplete()) {\n return;\n }\n\n this._scrollOffset = null;\n this._panEndTimestamp = now();\n\n this.trigger('panEnd', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n };\n\n Map.prototype._panComplete = function _panComplete () {\n return now() - (this._panEndTimestamp || 0) > 50;\n };\n\n Map.prototype._scaleStart = function _scaleStart (e) {\n if (this.trigger('zoomStart', { originalEvent: e })) {\n var touch = e.touches[1];\n\n if (touch) {\n touch.cancel();\n }\n }\n };\n\n Map.prototype._scale = function _scale (e) {\n var scale = this.scroller.movable.scale;\n var zoom = this._scaleToZoom(scale);\n var gestureCenter = new g.Point(e.center.x, e.center.y);\n var centerLocation = this.viewToLocation(gestureCenter, zoom);\n var centerPoint = this.locationToLayer(centerLocation, zoom);\n var originPoint = centerPoint.translate(-gestureCenter.x, -gestureCenter.y);\n\n this._zoomAround(originPoint, zoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n };\n\n Map.prototype._scaleToZoom = function _scaleToZoom (scaleDelta) {\n var scale = this._layerSize() * scaleDelta;\n var tiles = scale / this.options.minSize;\n var zoom = math.log(tiles) / math.log(2);\n\n return math.round(zoom);\n };\n\n Map.prototype._reset = function _reset () {\n if (this.attribution) {\n this.attribution.filter(this.center(), this.zoom());\n }\n\n this._viewOrigin = this._getOrigin(true);\n\n this._resetScroller();\n this.hideTooltip();\n\n this.trigger('beforeReset');\n this.trigger('reset');\n };\n\n Map.prototype._resetScroller = function _resetScroller () {\n var scroller = this.scroller;\n var x = scroller.dimensions.x;\n var y = scroller.dimensions.y;\n var scale = this._layerSize();\n var nw = this.extent().nw;\n var topLeft = this.locationToLayer(nw).round();\n\n scroller.movable.round = true;\n scroller.reset();\n scroller.userEvents.cancel();\n\n var zoom = this.zoom();\n\n scroller.dimensions.forcedMinScale = pow(2, this.options.minZoom - zoom);\n scroller.dimensions.maxScale = pow(2, this.options.maxZoom - zoom);\n\n var xBounds = {\n min: -topLeft.x,\n max: scale - topLeft.x\n };\n\n var yBounds = {\n min: -topLeft.y,\n max: scale - topLeft.y\n };\n\n if (this.options.wraparound) {\n xBounds.max = 20 * scale;\n xBounds.min = -xBounds.max;\n }\n\n if (this.options.pannable === false) {\n var viewSize = this.viewSize();\n xBounds.min = yBounds.min = 0;\n xBounds.max = viewSize.width;\n yBounds.max = viewSize.height;\n }\n\n x.makeVirtual();\n y.makeVirtual();\n\n x.virtualSize(xBounds.min, xBounds.max);\n y.virtualSize(yBounds.min, yBounds.max);\n\n this._virtualSize = {\n x: xBounds,\n y: yBounds\n };\n };\n\n // kept for API compatibility, not used\n Map.prototype._renderLayers = function _renderLayers () {\n };\n\n Map.prototype._layerSize = function _layerSize (zoom) {\n var newZoom = valueOrDefault(zoom, this.options.zoom);\n return this.options.minSize * pow(2, newZoom);\n };\n\n Map.prototype._tap = function _tap (e) {\n if (!this._panComplete()) {\n return;\n }\n\n var cursor = this.eventOffset(e);\n this.hideTooltip();\n\n this.trigger('click', {\n originalEvent: e,\n location: this.viewToLocation(cursor)\n });\n };\n\n Map.prototype._doubleTap = function _doubleTap (e) {\n var options = this.options;\n\n if (options.zoomable !== false) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n var toZoom = this.zoom() + DEFAULT_ZOOM_RATE;\n var cursor = this.eventOffset(e);\n var location = this.viewToLocation(cursor);\n var postZoom = this.locationToLayer(location, toZoom);\n var origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n };\n\n Map.prototype._mousewheel = function _mousewheel (e) {\n var delta = mousewheelDelta(e) > 0 ? -1 : 1;\n var options = this.options;\n var fromZoom = this.zoom();\n var toZoom = limitValue(fromZoom + delta, options.minZoom, options.maxZoom);\n\n if (options.zoomable !== false && toZoom !== fromZoom) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n var cursor = this.eventOffset(e);\n var location = this.viewToLocation(cursor);\n var postZoom = this.locationToLayer(location, toZoom);\n var origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n };\n\n Map.prototype._toDocumentCoordinates = function _toDocumentCoordinates (point) {\n var offset = elementOffset(this.element);\n\n return {\n left: round(point.x + offset.left),\n top: round(point.y + offset.top)\n };\n };\n\n return Map;\n}(Observable));\n\nsetDefaultOptions(Map, {\n name: 'Map',\n controls: {\n attribution: true,\n navigator: {\n panStep: 100\n },\n zoom: true\n },\n layers: [],\n layerDefaults: {\n shape: {\n style: {\n fill: {\n color: '#fff'\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n bubble: {\n style: {\n fill: {\n color: '#fff',\n opacity: 0.5\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n marker: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n }\n },\n center: [\n 0,\n 0\n ],\n icons: {\n type: \"font\",\n svgIcons: {}\n },\n zoom: 3,\n minSize: 256,\n minZoom: 1,\n maxZoom: 19,\n markers: [],\n markerDefaults: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n },\n wraparound: true,\n // If set to true, GeoJSON layer \"Point\" features will be rendered as markers.\n // Otherwise, the points will be rendered as circles.\n // Defaults to `true` for KUI/jQuery, `false` everywhere else.\n renderPointsAsMarkers: false\n});\n\nsetDefaultEvents(Map, [\n 'beforeReset',\n 'click',\n 'markerActivate',\n 'markerClick',\n 'markerCreated',\n\n // Events for implementing custom tooltips.\n 'markerMouseEnter',\n 'markerMouseLeave',\n\n 'pan',\n 'panEnd',\n 'reset',\n 'shapeClick',\n 'shapeCreated',\n 'shapeFeatureCreated',\n 'shapeMouseEnter',\n 'shapeMouseLeave',\n 'zoomEnd',\n 'zoomStart'\n]);\n\nexport default Map;\n","import { TRENDLINE_SERIES } from './constants';\nimport { INHERIT } from '../common/constants';\n\nvar BAR_GAP = 1.5;\nvar BAR_SPACING = 0.4;\nvar BLACK = '#000';\nvar SANS = 'Arial, Helvetica, sans-serif';\nvar SANS11 = \"11px \" + SANS;\nvar SANS12 = '12px ' + SANS;\nvar SANS16 = '16px ' + SANS;\nvar TRANSPARENT = 'transparent';\nvar WHITE = '#fff';\n\nvar notes = function () { return ({\n icon: {\n border: {\n width: 1\n }\n },\n label: {\n font: SANS12,\n padding: 3\n },\n line: {\n length: 10,\n width: 2\n },\n visible: true\n}); };\n\nvar axisDefaults = function () { return ({\n labels: {\n font: SANS12\n },\n notes: notes(),\n title: {\n font: SANS16,\n margin: 5\n }\n}); };\n\nvar areaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n}); };\n\nvar rangeAreaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n}); };\n\nvar barSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n}); };\n\nvar boxPlotSeries = function () { return ({\n outliersField: \"\",\n meanField: \"\",\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n whiskers: {\n width: 3\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n }\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n },\n spacing: 0.3,\n whiskers: {\n width: 2\n }\n}); };\n\nvar bubbleSeries = function () { return ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\n opacity: 0.6\n}); };\n\nvar bulletSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n target: {\n color: \"#ff0000\"\n }\n}); };\n\nvar candlestickSeries = function () { return ({\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n line: {\n width: 2\n }\n },\n line: {\n color: BLACK,\n width: 1\n },\n spacing: 0.3\n}); };\n\nvar columnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n}); };\n\nvar donutSeries = function () { return ({\n margin: 1\n}); };\n\nvar lineSeries = function () { return ({\n width: 2\n}); };\n\nvar ohlcSeries = function () { return ({\n gap: 1,\n highlight: {\n line: {\n opacity: 1,\n width: 3\n }\n },\n line: {\n width: 1\n },\n spacing: 0.3\n}); };\n\nvar radarAreaSeries = function () { return ({\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.5\n}); };\n\nvar radarLineSeries = function () { return ({\n markers: {\n visible: false\n },\n width: 2\n}); };\n\nvar rangeBarSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n}); };\n\nvar rangeColumnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n}); };\n\nvar scatterLineSeries = function () { return ({\n width: 1\n}); };\n\nvar waterfallSeries = function () { return ({\n gap: 0.5,\n line: {\n color: BLACK,\n width: 1\n },\n spacing: BAR_SPACING\n}); };\n\nvar pieSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n}); };\n\nvar funnelSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n}); };\n\nvar pyramidSeries = funnelSeries;\n\nvar heatmapSeries = function () { return ({\n labels: {\n color: '',\n background: TRANSPARENT,\n visible: true\n },\n highlight: {\n border: {\n width: 0\n }\n }\n}); };\n\nvar trendlineSeriesDefaults = function () { return TRENDLINE_SERIES.reduce(\n function (options, type) {\n options[type] = {\n color: INHERIT,\n trendline: {},\n markers: {\n visible: false\n },\n width: 1,\n dashType: 'longDash'\n };\n\n return options;\n }, {}); };\n\nvar seriesDefaults = function (options) { return (Object.assign({\n visible: true,\n labels: {\n font: SANS11\n },\n overlay: options.gradients ? {} : {\n gradient: \"none\"\n },\n area: areaSeries(),\n rangeArea: rangeAreaSeries(),\n verticalRangeArea: rangeAreaSeries(),\n bar: barSeries(),\n boxPlot: boxPlotSeries(),\n bubble: bubbleSeries(),\n bullet: bulletSeries(),\n candlestick: candlestickSeries(),\n column: columnSeries(),\n heatmap: heatmapSeries(),\n pie: pieSeries(),\n donut: donutSeries(),\n funnel: funnelSeries(),\n pyramid: pyramidSeries(),\n horizontalWaterfall: waterfallSeries(),\n line: lineSeries(),\n notes: notes(),\n ohlc: ohlcSeries(),\n radarArea: radarAreaSeries(),\n radarLine: radarLineSeries(),\n polarArea: radarAreaSeries(),\n polarLine: radarLineSeries(),\n rangeBar: rangeBarSeries(),\n rangeColumn: rangeColumnSeries(),\n scatterLine: scatterLineSeries(),\n verticalArea: areaSeries(),\n verticalBoxPlot: boxPlotSeries(),\n verticalBullet: bulletSeries(),\n verticalLine: lineSeries(),\n waterfall: waterfallSeries()\n},\n trendlineSeriesDefaults()\n)); };\n\nvar title = function () { return ({\n font: SANS16\n}); };\n\nvar subtitle = function () { return ({\n font: SANS12\n}); };\n\nvar legend = function () { return ({\n labels: {\n font: SANS12\n }\n}); };\n\nexport var baseTheme = function (options) {\n if ( options === void 0 ) options = {};\n\n return ({\n axisDefaults: axisDefaults(),\n categoryAxis: {\n majorGridLines: {\n visible: true\n }\n },\n navigator: {\n pane: {\n height: 90,\n margin: {\n top: 10\n }\n }\n },\n seriesDefaults: seriesDefaults(options),\n title: title(),\n subtitle: subtitle(),\n legend: legend()\n});\n};\n\n","/**\n * @hidden\n */\nfunction hasParent(element, parent) {\n var current = element;\n while (current && current !== parent) {\n current = current.parentNode;\n }\n return current ? true : false;\n}\n/**\n * @hidden\n */\nfunction validateChildren(props, propName, componentName, childType) {\n var prop = props[propName];\n if (prop) {\n if (Array.isArray(prop)) {\n for (var _i = 0, prop_1 = prop; _i < prop_1.length; _i++) {\n var value = prop_1[_i];\n if (!value.type || value.type !== childType) {\n return new Error(componentName + \" children should be Array of type \" + childType.displayName + \".\");\n }\n }\n }\n }\n return null;\n}\n/**\n * @hidden\n */\nvar toggle = function (flag) { return flag === undefined ? false : !flag; };\nexport { hasParent, validateChildren, toggle };\n","var getTouch = function (domEvent) {\n return {\n x: {\n location: domEvent.pageX\n },\n y: {\n location: domEvent.pageY\n }\n };\n};\nvar eventArgs = function (e, previousArgs) {\n var pointers = e.pointers;\n var pointer = pointers[0];\n var xLocation = pointer.pageX;\n var yLocation = pointer.pageY;\n var distance = 0;\n if (pointers.length > 1) {\n var pointer1 = pointers[0];\n var pointer2 = pointers[1];\n distance = Math.sqrt(Math.pow(pointer1.pageX - pointer2.pageX, 2) +\n Math.pow(pointer1.pageY - pointer2.pageY, 2));\n }\n return {\n distance: distance,\n event: e.srcEvent,\n preventDefault: function () {\n e.preventDefault();\n },\n target: e.target,\n touches: pointers.map(getTouch),\n type: e.type,\n x: {\n delta: previousArgs ? xLocation - previousArgs.x.location : 0,\n initialDelta: e.deltaX,\n location: xLocation,\n startLocation: xLocation - e.deltaX\n },\n y: {\n delta: previousArgs ? yLocation - previousArgs.y.location : 0,\n initialDelta: e.deltaY,\n location: yLocation,\n startLocation: yLocation - e.deltaY\n }\n };\n};\nfunction shouldBindGroup(groupNames, events) {\n for (var idx = 0; idx < groupNames.length; idx++) {\n if (events[groupNames[idx]]) {\n return true;\n }\n }\n return false;\n}\nvar eventGroups = [{\n end: 'panend',\n move: 'panmove',\n start: 'panstart'\n }, {\n gesturechange: 'pinchmove',\n gestureend: 'pinchend',\n gesturestart: 'pinchstart'\n }, {\n press: 'press'\n }, {\n tap: 'tap'\n }];\n/**\n * @hidden\n */\nvar DomEvents = /** @class */ (function () {\n function DomEvents(hammerInstance, events) {\n this.hammerInstance = hammerInstance;\n this.eventHandlers = {};\n this.tap = this.tap.bind(this);\n this.press = this.press.bind(this);\n this.panstart = this.panstart.bind(this);\n this.panmove = this.panmove.bind(this);\n this.panend = this.panend.bind(this);\n this.pinchstart = this.pinchstart.bind(this);\n this.pinchmove = this.pinchmove.bind(this);\n this.pinchend = this.pinchend.bind(this);\n if (events) {\n this.bind(events);\n }\n }\n DomEvents.prototype.tap = function (e) {\n this.trigger('tap', e);\n };\n DomEvents.prototype.press = function (e) {\n this.trigger('press', e);\n };\n DomEvents.prototype.panstart = function (e) {\n delete this.previous;\n this.previous = this.trigger('start', e);\n };\n DomEvents.prototype.panmove = function (e) {\n this.previous = this.trigger('move', e);\n };\n DomEvents.prototype.panend = function (e) {\n this.trigger('end', e);\n delete this.previous;\n };\n DomEvents.prototype.pinchstart = function (e) {\n this.trigger('gesturestart', e);\n };\n DomEvents.prototype.pinchmove = function (e) {\n this.trigger('gesturechange', e);\n };\n DomEvents.prototype.pinchend = function (e) {\n this.trigger('gestureend', e);\n };\n DomEvents.prototype.trigger = function (name, e) {\n var args = eventArgs(e, this.previous);\n if (this.eventHandlers[name]) {\n this.eventHandlers[name](args);\n }\n return args;\n };\n DomEvents.prototype.bind = function (events) {\n if (events === void 0) { events = {}; }\n this.unbind();\n this.eventHandlers = events;\n for (var idx = 0; idx < eventGroups.length; idx++) {\n var eventGroup = eventGroups[idx];\n var groupNames = Object.keys(eventGroup);\n if (shouldBindGroup(groupNames, events)) {\n for (var nameIdx = 0; nameIdx < groupNames.length; nameIdx++) {\n var name_1 = eventGroup[groupNames[nameIdx]];\n this.hammerInstance.on(name_1, this[name_1]);\n }\n }\n }\n };\n DomEvents.prototype.unbind = function () {\n if (this.hammerInstance) {\n this.hammerInstance.off();\n }\n this.eventHandlers = {};\n };\n DomEvents.prototype.destroy = function () {\n if (this.hammerInstance) {\n this.hammerInstance.destroy();\n delete this.hammerInstance;\n }\n delete this.eventHandlers;\n };\n DomEvents.prototype.toggleDrag = function (enable) {\n this.toggle('pan', enable);\n };\n DomEvents.prototype.toggleZoom = function (enable) {\n this.toggle('pinch', enable);\n };\n DomEvents.prototype.toggle = function (recognizer, enable) {\n if (this.hammerInstance) {\n var instanceRecognizer = this.hammerInstance.get(recognizer);\n instanceRecognizer.set({\n enable: enable\n });\n }\n };\n return DomEvents;\n}());\nexport { DomEvents };\n","import { DomEvents } from './dom-events';\nvar MISSING_HAMMER_MESSAGE = 'Hammerjs is not loaded.' +\n 'Solution: http://www.telerik.com/kendo-react-ui/components/charts/troubleshooting/#toc-installation';\n/**\n * @hidden\n */\nvar DomEventsBuilder = /** @class */ (function () {\n function DomEventsBuilder() {\n }\n DomEventsBuilder.create = function (element, events) {\n if (typeof window !== 'undefined') {\n var HAMMER = window.Hammer;\n if (!HAMMER) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(MISSING_HAMMER_MESSAGE);\n }\n return;\n }\n var hammerInstance = new HAMMER(element, {\n recognizers: [\n [HAMMER.Tap],\n [HAMMER.Pan],\n [HAMMER.Pinch],\n [HAMMER.Press, { time: 0 }]\n ]\n });\n return new DomEvents(hammerInstance, events);\n }\n };\n return DomEventsBuilder;\n}());\nexport { DomEventsBuilder };\n","/**\n * @hidden\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @hidden\n */\n function BaseEvent(target) {\n this.target = target;\n }\n return BaseEvent;\n}());\nexport { BaseEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `axisLabelClick` event.\n */\nvar AxisLabelClickEvent = /** @class */ (function (_super) {\n __extends(AxisLabelClickEvent, _super);\n /**\n * @hidden\n */\n function AxisLabelClickEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axis = e.axis;\n _this.dataItem = e.dataItem;\n _this.index = e.index;\n _this.text = e.text;\n _this.value = e.value;\n return _this;\n }\n return AxisLabelClickEvent;\n}(BaseEvent));\nexport { AxisLabelClickEvent };\n// tslint:enable:max-line-length\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * @hidden\n */\nvar PreventableEvent = /** @class */ (function (_super) {\n __extends(PreventableEvent, _super);\n function PreventableEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.prevented = false;\n return _this;\n }\n /* eslint-disable max-len */\n /**\n * Prevents the default action for a specified event. In this way, the source component suppresses the built-in behavior that follows the event.\n */\n PreventableEvent.prototype.preventDefault = function () {\n this.prevented = true;\n };\n /**\n * Returns `true` if the event was prevented by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n PreventableEvent.prototype.isDefaultPrevented = function () {\n return this.prevented;\n };\n return PreventableEvent;\n}(BaseEvent));\nexport { PreventableEvent };\n// tslint:enable:max-line-length\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `drag` event.\n */\nvar DragEvent = /** @class */ (function (_super) {\n __extends(DragEvent, _super);\n /**\n * @hidden\n */\n function DragEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return DragEvent;\n}(PreventableEvent));\nexport { DragEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `dragEnd` event.\n */\nvar DragEndEvent = /** @class */ (function (_super) {\n __extends(DragEndEvent, _super);\n /**\n * @hidden\n */\n function DragEndEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return DragEndEvent;\n}(BaseEvent));\nexport { DragEndEvent };\n// tslint:enable:max-line-length\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `dragStart` event.\n */\nvar DragStartEvent = /** @class */ (function (_super) {\n __extends(DragStartEvent, _super);\n /**\n * @hidden\n */\n function DragStartEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return DragStartEvent;\n}(PreventableEvent));\nexport { DragStartEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemHover` event.\n */\nvar LegendItemHoverEvent = /** @class */ (function (_super) {\n __extends(LegendItemHoverEvent, _super);\n /**\n * @hidden\n */\n function LegendItemHoverEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.series = e.series;\n _this.seriesIndex = e.seriesIndex;\n _this.pointIndex = e.pointIndex;\n _this.text = e.text;\n return _this;\n }\n /**\n * If called, the series highlight is not shown as a result of hovering over the legend item.\n */\n LegendItemHoverEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n };\n return LegendItemHoverEvent;\n}(PreventableEvent));\nexport { LegendItemHoverEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemClick` event.\n */\nvar LegendItemClickEvent = /** @class */ (function (_super) {\n __extends(LegendItemClickEvent, _super);\n /**\n * @hidden\n */\n function LegendItemClickEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.series = e.series;\n _this.seriesIndex = e.seriesIndex;\n _this.pointIndex = e.pointIndex;\n _this.text = e.text;\n return _this;\n }\n /**\n * If called, the series visibility is not toggled as a result of clicking the legend item.\n */\n LegendItemClickEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n };\n return LegendItemClickEvent;\n}(PreventableEvent));\nexport { LegendItemClickEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemLeave` event.\n */\nvar LegendItemLeaveEvent = /** @class */ (function (_super) {\n __extends(LegendItemLeaveEvent, _super);\n /**\n * @hidden\n */\n function LegendItemLeaveEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.series = e.series;\n _this.seriesIndex = e.seriesIndex;\n _this.pointIndex = e.pointIndex;\n _this.text = e.text;\n return _this;\n }\n /**\n * @hidden\n */\n LegendItemLeaveEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n };\n return LegendItemLeaveEvent;\n}(PreventableEvent));\nexport { LegendItemLeaveEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * The arguments for the `navigatorFilter` event.\n */\nvar NavigatorFilterEvent = /** @class */ (function (_super) {\n __extends(NavigatorFilterEvent, _super);\n /**\n * Constructs the event arguments from a raw object.\n */\n function NavigatorFilterEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.from = e.from;\n _this.to = e.to;\n return _this;\n }\n return NavigatorFilterEvent;\n}(BaseEvent));\nexport { NavigatorFilterEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `noteClick` event.\n */\nvar NoteClickEvent = /** @class */ (function (_super) {\n __extends(NoteClickEvent, _super);\n /**\n * @hidden\n */\n function NoteClickEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.dataItem = e.dataItem;\n _this.series = e.series;\n _this.value = e.value;\n _this.visual = e.visual;\n return _this;\n }\n return NoteClickEvent;\n}(BaseEvent));\nexport { NoteClickEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `noteHover` event.\n */\nvar NoteHoverEvent = /** @class */ (function (_super) {\n __extends(NoteHoverEvent, _super);\n /**\n * @hidden\n */\n function NoteHoverEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.dataItem = e.dataItem;\n _this.series = e.series;\n _this.value = e.value;\n _this.visual = e.visual;\n return _this;\n }\n return NoteHoverEvent;\n}(BaseEvent));\nexport { NoteHoverEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `plotAreaClick` event.\n */\nvar PlotAreaClickEvent = /** @class */ (function (_super) {\n __extends(PlotAreaClickEvent, _super);\n /**\n * @hidden\n */\n function PlotAreaClickEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.nativeEvent = e.originalEvent;\n _this.value = e.value;\n _this.x = e.x;\n _this.y = e.y;\n return _this;\n }\n return PlotAreaClickEvent;\n}(BaseEvent));\nexport { PlotAreaClickEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `plotAreaHover` event.\n */\nvar PlotAreaHoverEvent = /** @class */ (function (_super) {\n __extends(PlotAreaHoverEvent, _super);\n /**\n * @hidden\n */\n function PlotAreaHoverEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.nativeEvent = e.originalEvent;\n _this.value = e.value;\n _this.x = e.x;\n _this.y = e.y;\n return _this;\n }\n return PlotAreaHoverEvent;\n}(BaseEvent));\nexport { PlotAreaHoverEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `render` event.\n */\nvar RenderEvent = /** @class */ (function (_super) {\n __extends(RenderEvent, _super);\n /**\n * @hidden\n */\n function RenderEvent(_e, sender) {\n return _super.call(this, sender) || this;\n }\n return RenderEvent;\n}(BaseEvent));\nexport { RenderEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `select` event.\n */\nvar SelectEvent = /** @class */ (function (_super) {\n __extends(SelectEvent, _super);\n /**\n * @hidden\n */\n function SelectEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axis = e.axis;\n _this.from = e.from;\n _this.to = e.to;\n return _this;\n }\n return SelectEvent;\n}(PreventableEvent));\nexport { SelectEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `selectEnd` event.\n */\nvar SelectEndEvent = /** @class */ (function (_super) {\n __extends(SelectEndEvent, _super);\n /**\n * @hidden\n */\n function SelectEndEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axis = e.axis;\n _this.from = e.from;\n _this.to = e.to;\n return _this;\n }\n return SelectEndEvent;\n}(BaseEvent));\nexport { SelectEndEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `selectStart` event.\n */\nvar SelectStartEvent = /** @class */ (function (_super) {\n __extends(SelectStartEvent, _super);\n /**\n * @hidden\n */\n function SelectStartEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axis = e.axis;\n _this.from = e.from;\n _this.to = e.to;\n return _this;\n }\n return SelectStartEvent;\n}(PreventableEvent));\nexport { SelectStartEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `seriesClick` event.\n */\nvar SeriesClickEvent = /** @class */ (function (_super) {\n __extends(SeriesClickEvent, _super);\n // tslint:enable:max-line-length\n /**\n * @hidden\n */\n function SeriesClickEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.dataItem = e.dataItem;\n _this.nativeEvent = e.originalEvent;\n _this.percentage = e.percentage;\n _this.point = e.point;\n _this.series = e.series;\n _this.stackValue = e.stackValue;\n _this.value = e.value;\n return _this;\n }\n return SeriesClickEvent;\n}(BaseEvent));\nexport { SeriesClickEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `seriesHover` event.\n */\nvar SeriesHoverEvent = /** @class */ (function (_super) {\n __extends(SeriesHoverEvent, _super);\n /**\n * @hidden\n */\n function SeriesHoverEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.categoryPoints = e.categoryPoints;\n _this.dataItem = e.dataItem;\n _this.nativeEvent = e.originalEvent;\n _this.percentage = e.percentage;\n _this.point = e.point;\n _this.series = e.series;\n _this.stackValue = e.stackValue;\n _this.value = e.value;\n return _this;\n }\n return SeriesHoverEvent;\n}(PreventableEvent));\nexport { SeriesHoverEvent };\n// tslint:enable:max-line-length\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `zoom` event.\n */\nvar ZoomEvent = /** @class */ (function (_super) {\n __extends(ZoomEvent, _super);\n // tslint:enable:max-line-length\n /**\n * @hidden\n */\n function ZoomEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.delta = e.delta;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return ZoomEvent;\n}(PreventableEvent));\nexport { ZoomEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `zoomEnd` event.\n */\nvar ZoomEndEvent = /** @class */ (function (_super) {\n __extends(ZoomEndEvent, _super);\n // tslint:enable:max-line-length\n /**\n * @hidden\n */\n function ZoomEndEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return ZoomEndEvent;\n}(BaseEvent));\nexport { ZoomEndEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `zoomStart` event.\n */\nvar ZoomStartEvent = /** @class */ (function (_super) {\n __extends(ZoomStartEvent, _super);\n // tslint:enable:max-line-length\n /**\n * @hidden\n */\n function ZoomStartEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return ZoomStartEvent;\n}(PreventableEvent));\nexport { ZoomStartEvent };\n","import { AxisLabelClickEvent } from './axis-label-click-event';\nimport { DragEvent } from './drag-event';\nimport { DragEndEvent } from './drag-end-event';\nimport { DragStartEvent } from './drag-start-event';\nimport { LegendItemHoverEvent } from './legend-item-hover-event';\nimport { LegendItemClickEvent } from './legend-item-click-event';\nimport { LegendItemLeaveEvent } from './legend-item-leave-event';\nimport { NavigatorFilterEvent } from './navigator-filter-event';\nimport { NoteClickEvent } from './note-click-event';\nimport { NoteHoverEvent } from './note-hover-event';\nimport { PlotAreaClickEvent } from './plot-area-click-event';\nimport { PlotAreaHoverEvent } from './plot-area-hover-event';\nimport { RenderEvent } from './render-event';\nimport { SelectEvent } from './select-event';\nimport { SelectEndEvent } from './select-end-event';\nimport { SelectStartEvent } from './select-start-event';\nimport { SeriesClickEvent } from './series-click-event';\nimport { SeriesHoverEvent } from './series-hover-event';\nimport { ZoomEvent } from './zoom-event';\nimport { ZoomEndEvent } from './zoom-end-event';\nimport { ZoomStartEvent } from './zoom-start-event';\nvar EVENT_MAP = {\n axisLabelClick: AxisLabelClickEvent,\n drag: DragEvent,\n dragEnd: DragEndEvent,\n dragStart: DragStartEvent,\n legendItemHover: LegendItemHoverEvent,\n legendItemClick: LegendItemClickEvent,\n legendItemLeave: LegendItemLeaveEvent,\n navigatorFilter: NavigatorFilterEvent,\n noteClick: NoteClickEvent,\n noteHover: NoteHoverEvent,\n plotAreaClick: PlotAreaClickEvent,\n plotAreaHover: PlotAreaHoverEvent,\n render: RenderEvent,\n select: SelectEvent,\n selectEnd: SelectEndEvent,\n selectStart: SelectStartEvent,\n seriesClick: SeriesClickEvent,\n seriesHover: SeriesHoverEvent,\n zoom: ZoomEvent,\n zoomEnd: ZoomEndEvent,\n zoomStart: ZoomStartEvent\n};\n/**\n * @hidden\n */\nfunction create(name, args, sender) {\n if (EVENT_MAP[name]) {\n return new EVENT_MAP[name](args, sender);\n }\n}\nexport { create };\n","/**\n * @hidden\n */\nvar DomEvent = /** @class */ (function () {\n /**\n * @hidden\n */\n function DomEvent(sender, e) {\n this.sender = sender;\n this.syntheticEvent = e;\n }\n return DomEvent;\n}());\nexport { DomEvent };\nfunction toDomEvent(sender, e) {\n return new DomEvent(sender, e);\n}\nexport { toDomEvent };\n","import { chartBaseTheme } from '@progress/kendo-charts';\nvar font = function (style) { return style.fontWeight + \" \" + style.fontSize + \" \" + style.fontFamily; };\nvar computedBackgroundColor = function (element) { return window.getComputedStyle(element).backgroundColor; };\nvar letterPos = function (letter) { return letter.toLowerCase().charCodeAt(0) - 'a'.charCodeAt(0); };\nvar seriesPos = function (name) {\n var alpha = name.match(/series-([a-z])$/);\n if (alpha !== null) {\n return letterPos(alpha[1]);\n }\n var num = name.split('--series-')[1];\n return parseInt(num, 10) - 1;\n};\nvar SERIES_COLORS = 30;\nvar seriesTemplate = function () {\n var result = \"\\n <div class=\\\"k-var--series-a\\\"></div>\\n <div class=\\\"k-var--series-b\\\"></div>\\n <div class=\\\"k-var--series-c\\\"></div>\\n <div class=\\\"k-var--series-d\\\"></div>\\n <div class=\\\"k-var--series-e\\\"></div>\\n <div class=\\\"k-var--series-f\\\"></div>\\n\";\n for (var i = 0; i < SERIES_COLORS; i++) {\n result += \"\\n <div class=\\\"k-var--series-\" + (i + 1) + \"\\\"></div>\";\n }\n return result;\n};\nvar template = \"\\n <div class=\\\"k-var--accent\\\"></div>\\n <div class=\\\"k-var--base\\\"></div>\\n <div class=\\\"k-var--background\\\"></div>\\n\\n <div class=\\\"k-var--normal-background\\\"></div>\\n <div class=\\\"k-var--normal-text-color\\\"></div>\\n <div class=\\\"k-var--hover-background\\\"></div>\\n <div class=\\\"k-var--hover-text-color\\\"></div>\\n <div class=\\\"k-var--selected-background\\\"></div>\\n <div class=\\\"k-var--selected-text-color\\\"></div>\\n <div class=\\\"k-var--chart-error-bars-background\\\"></div>\\n <div class=\\\"k-var--chart-notes-background\\\"></div>\\n <div class=\\\"k-var--chart-notes-border\\\"></div>\\n <div class=\\\"k-var--chart-notes-lines\\\"></div>\\n <div class=\\\"k-var--chart-crosshair-background\\\"></div>\\n\\n <div class=\\\"k-var--chart-inactive\\\"></div>\\n <div class=\\\"k-var--chart-major-lines\\\"></div>\\n <div class=\\\"k-var--chart-minor-lines\\\"></div>\\n <div class=\\\"k-var--chart-area-opacity\\\"></div>\\n <div class=\\\"k-var--chart-area-inactive-opacity\\\"></div>\\n <div class=\\\"k-var--chart-line-inactive-opacity\\\"></div>\\n\\n <div class=\\\"k-widget k-chart\\\">\\n <div class=\\\"k-var--chart-font\\\"></div>\\n <div class=\\\"k-var--chart-title-font\\\"></div>\\n <div class=\\\"k-var--chart-pane-title-font\\\"></div>\\n <div class=\\\"k-var--chart-label-font\\\"></div>\\n </div>\\n\\n <div class=\\\"k-var--series-unset\\\"></div>\\n <div class=\\\"k-var--series\\\">\\n \" + seriesTemplate() + \"\\n </div>\\n\";\n/**\n * @hidden\n */\nvar ThemeService = /** @class */ (function () {\n function ThemeService(store) {\n this.store = store;\n }\n ThemeService.prototype.setStyle = function (field, value) {\n this.store.dispatch({ type: 'set', payload: { field: field, value: value } });\n };\n ThemeService.prototype.setColors = function () {\n this.mapColor('axisDefaults.crosshair.color', 'chart-crosshair-background');\n this.mapColor('axisDefaults.labels.color', 'normal-text-color');\n this.mapColor('axisDefaults.line.color', 'chart-major-lines');\n this.mapColor('axisDefaults.majorGridLines.color', 'chart-major-lines');\n this.mapColor('axisDefaults.minorGridLines.color', 'chart-minor-lines');\n this.mapColor('axisDefaults.notes.icon.background', 'chart-notes-background');\n this.mapColor('axisDefaults.notes.icon.border.color', 'chart-notes-border');\n this.mapColor('axisDefaults.notes.line.color', 'chart-notes-lines');\n this.mapColor('axisDefaults.title.color', 'normal-text-color');\n this.mapColor('chartArea.background', 'background');\n this.mapColor('legend.inactiveItems.labels.color', 'chart-inactive');\n this.mapColor('legend.inactiveItems.markers.color', 'chart-inactive');\n this.mapColor('legend.labels.color', 'normal-text-color');\n this.mapColor('seriesDefaults.boxPlot.downColor', 'chart-major-lines');\n this.mapColor('seriesDefaults.boxPlot.mean.color', 'base');\n this.mapColor('seriesDefaults.boxPlot.median.color', 'base');\n this.mapColor('seriesDefaults.boxPlot.whiskers.color', 'accent');\n this.mapColor('seriesDefaults.bullet.target.color', 'normal-text-color');\n this.mapColor('seriesDefaults.candlestick.downColor', 'normal-text-color');\n this.mapColor('seriesDefaults.candlestick.line.color', 'normal-text-color');\n this.mapColor('seriesDefaults.errorBars.color', 'chart-error-bars-background');\n this.mapColor('seriesDefaults.horizontalWaterfall.line.color', 'chart-major-lines');\n this.mapColor('seriesDefaults.icon.border.color', 'chart-major-lines');\n this.mapColor('seriesDefaults.labels.background', 'background');\n this.mapColor('seriesDefaults.labels.color', 'normal-text-color');\n this.mapColor('seriesDefaults.notes.icon.background', 'chart-notes-background');\n this.mapColor('seriesDefaults.notes.icon.border.color', 'chart-notes-border');\n this.mapColor('seriesDefaults.notes.line.color', 'chart-notes-lines');\n this.mapColor('seriesDefaults.verticalBoxPlot.downColor', 'chart-major-lines');\n this.mapColor('seriesDefaults.verticalBoxPlot.mean.color', 'base');\n this.mapColor('seriesDefaults.verticalBoxPlot.median.color', 'base');\n this.mapColor('seriesDefaults.verticalBoxPlot.whiskers.color', 'accent');\n this.mapColor('seriesDefaults.verticalBullet.target.color', 'normal-text-color');\n this.mapColor('seriesDefaults.waterfall.line.color', 'chart-major-lines');\n this.mapColor('title.color', 'normal-text-color');\n var opacity = parseFloat(this.queryStyle('chart-area-opacity').opacity);\n if (!isNaN(opacity)) {\n this.setStyle('seriesDefaults.area.opacity', opacity);\n this.setStyle('seriesDefaults.radarArea.opacity', opacity);\n this.setStyle('seriesDefaults.verticalArea.opacity', opacity);\n this.setStyle('seriesDefaults.labels.opacity', opacity);\n }\n this.setInactiveOpacity(['area', 'verticalArea'], 'chart-area-inactive-opacity');\n this.setInactiveOpacity(['line', 'verticalLine'], 'chart-line-inactive-opacity');\n };\n ThemeService.prototype.setFonts = function () {\n var defaultFont = font(this.queryStyle('chart-font'));\n var titleFont = font(this.queryStyle('chart-title-font'));\n var paneTitleFont = font(this.queryStyle('chart-pane-title-font'));\n var labelFont = font(this.queryStyle('chart-label-font'));\n this.setStyle('axisDefaults.labels.font', labelFont);\n this.setStyle('axisDefaults.notes.label.font', defaultFont);\n this.setStyle('axisDefaults.title.font', defaultFont);\n this.setStyle('legend.labels.font', defaultFont);\n this.setStyle('seriesDefaults.labels.font', labelFont);\n this.setStyle('seriesDefaults.notes.label.font', defaultFont);\n this.setStyle('title.font', titleFont);\n this.setStyle('paneDefaults.title.font', paneTitleFont);\n };\n ThemeService.prototype.setSeriesColors = function () {\n var element = this.element;\n var series = [].slice.call(element.querySelectorAll('.k-var--series div'));\n var unsetColor = computedBackgroundColor(element.querySelector('.k-var--series-unset'));\n var seriesColors = series.reduce(function (arr, el) {\n var pos = seriesPos(el.className);\n var color = computedBackgroundColor(el);\n if (color !== unsetColor) {\n arr[pos] = color;\n }\n return arr;\n }, [] // Will populate the series colors in this array\n );\n this.setStyle('seriesColors', seriesColors);\n };\n ThemeService.prototype.mapColor = function (key, varName) {\n this.setStyle(key, this.queryStyle(varName).backgroundColor);\n };\n ThemeService.prototype.queryStyle = function (varName) {\n var element = this.element;\n return window.getComputedStyle(element.querySelector(\".k-var--\" + varName));\n };\n ThemeService.prototype.setInactiveOpacity = function (seriesTypes, selector) {\n var _this = this;\n var inactiveOpacity = parseFloat(this.queryStyle(selector).opacity);\n if (!isNaN(inactiveOpacity) && inactiveOpacity < 1) {\n seriesTypes.forEach(function (type) {\n return _this.setStyle(\"seriesDefaults.\" + type + \".highlight.inactiveOpacity\", inactiveOpacity);\n });\n }\n };\n return ThemeService;\n}());\nvar loadTheme = function (store, done) {\n var service = new ThemeService(store);\n if (typeof document === 'undefined') {\n store.dispatch({ type: 'push', payload: chartBaseTheme() });\n return;\n }\n var container = service.element = document.createElement('div');\n container.style.display = 'none';\n container.innerHTML = template;\n document.body.appendChild(container);\n try {\n store.dispatch({ type: 'push', payload: chartBaseTheme() });\n service.setColors();\n service.setFonts();\n service.setSeriesColors();\n }\n finally {\n document.body.removeChild(service.element);\n delete service.element;\n done();\n }\n};\nexport { loadTheme };\n","import { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var THROTTLE_MS = 1000 / 60;\n/**\n * @hidden\n */\nvar createStore = function (reducer) {\n var state;\n var timerId;\n var listeners = [];\n var getState = function () { return state; };\n var dispatch = function (action) {\n state = reducer(state, action);\n if (canUseDOM) {\n window.clearTimeout(timerId);\n timerId = window.setTimeout(function () { return listeners.forEach(function (l) { return l(); }); }, THROTTLE_MS);\n }\n };\n var subscribe = function (listener) {\n listeners.push(listener);\n return function () { return listeners = listeners.filter(function (l) { return l !== listener; }); };\n };\n dispatch({});\n return { getState: getState, dispatch: dispatch, subscribe: subscribe };\n};\nexport default createStore;\n","/**\n * @hidden\n */\nvar optionsReducer = function (currentState, action) {\n if (action.chartCollectionIdxKey) {\n return reducers.collectionConfigurationItem(currentState, action);\n }\n else if (action.chartKey) {\n return reducers.configurationItem(currentState, action);\n }\n else {\n return {};\n }\n};\n/**\n * @hidden\n */\nvar themeReducer = function (currentState, action) {\n if (action.type) {\n switch (action.type) {\n case 'set':\n return reducers.themeItem(currentState, action);\n case 'push':\n return Object.assign(currentState, action.payload);\n default:\n return currentState;\n }\n }\n else {\n return {};\n }\n};\n/**\n * @hidden\n */\nvar observersReducer = function (currentState, action) {\n if (action.type) {\n switch (action.type) {\n case 'add':\n return currentState.concat([action.payload]);\n case 'remove':\n return currentState.filter(function (element) { return element !== action.payload; });\n default:\n return currentState;\n }\n }\n else {\n return [];\n }\n};\n/**\n * @hidden\n */\nvar reducers = {\n configurationItem: function (currentState, action) {\n var _a;\n return Object.assign(currentState, (_a = {},\n _a[action.chartKey] = action.payload,\n _a));\n },\n collectionConfigurationItem: function (currentState, action) {\n var _a;\n var inCollection = false;\n var _b = action.chartCollectionIdxKey.split('_'), collectionName = _b[0], collectionIdx = _b[1];\n var collection = currentState[collectionName].map(function (item, index) {\n if (parseInt(collectionIdx, 10) === index) {\n inCollection = true;\n return action.payload;\n }\n return item;\n });\n if (inCollection === false) {\n collection.splice(parseInt(collectionIdx, 10), 0, action.payload);\n }\n return Object.assign(currentState, (_a = {},\n _a[collectionName] = collection,\n _a));\n },\n themeItem: function (currentState, action) {\n var store = {};\n var nextStore = Object.assign(store, currentState);\n var _a = action.payload, field = _a.field, value = _a.value;\n var parts = field.split('.');\n var key = parts.shift();\n while (parts.length > 0) {\n store = store[key] = store[key] || {};\n key = parts.shift();\n }\n store[key] = value;\n return nextStore;\n }\n};\nexport { optionsReducer, themeReducer, observersReducer };\n","/**\n * The point that is passed to the tooltip component.\n */\nvar TooltipPoint = /** @class */ (function () {\n /**\n * @hidden\n */\n function TooltipPoint(point, format) {\n this.value = point.value;\n this.category = point.category;\n this.categoryIndex = point.categoryIx;\n this.series = point.series;\n this.dataItem = point.dataItem;\n this.percentage = point.percentage;\n this.runningTotal = point.runningTotal;\n this.total = point.total;\n this.low = point.low;\n this.high = point.high;\n this.xLow = point.xLow;\n this.xHigh = point.xHigh;\n this.yLow = point.yLow;\n this.yHigh = point.yHigh;\n this.point = point;\n this.format = ((point.options || {}).tooltip || {}).format || format;\n }\n Object.defineProperty(TooltipPoint.prototype, \"formattedValue\", {\n get: function () {\n return this.format ? this.point.formatValue(this.format) : String(this.value);\n },\n enumerable: true,\n configurable: true\n });\n return TooltipPoint;\n}());\nexport { TooltipPoint };\n","import * as React from 'react';\nvar TOOLTIP_MARKER_CLASS = 'k-chart-shared-tooltip-marker';\n/**\n * @hidden\n */\nvar SharedTooltipContent = function (props) {\n var categoryText = props.categoryText, colorMarker = props.colorMarker, colspan = props.colspan, nameColumn = props.nameColumn, points = props.points;\n var pointsMap = function (point, idx) {\n return (React.createElement(\"tr\", { key: idx },\n colorMarker && (React.createElement(\"td\", null,\n React.createElement(\"span\", { className: TOOLTIP_MARKER_CLASS, style: { backgroundColor: point.series.color } }))),\n nameColumn && (React.createElement(\"td\", null, point.series.name)),\n React.createElement(\"td\", { dangerouslySetInnerHTML: { __html: point.formattedValue } })));\n };\n return (React.createElement(\"table\", null,\n React.createElement(\"thead\", null,\n React.createElement(\"tr\", null,\n React.createElement(\"th\", { colSpan: colspan }, categoryText))),\n React.createElement(\"tbody\", null, points.map(pointsMap))));\n};\nexport { SharedTooltipContent };\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var ChartContext = React.createContext(null);\nChartContext.displayName = 'ChartContext';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { toDomEvent } from './../events/dom-event';\nimport { hasParent } from '../utils/main';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { ChartContext } from '../ChartContext';\nvar COLLISION = { horizontal: 'fit', vertical: 'fit' };\nvar TOOLTIP_CLASS = 'k-chart-tooltip';\nvar POPUP_WRAPPER_CLASS = 'k-chart-tooltip-wrapper';\n/**\n * @hidden\n */\nvar TooltipPopup = /** @class */ (function (_super) {\n __extends(TooltipPopup, _super);\n function TooltipPopup(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.onChartMouseLeave = function (e) {\n var syntheticEvent = e.syntheticEvent;\n if (hasParent(syntheticEvent.relatedTarget, _this.element)) {\n /* prevent default behavior so that the tooltip won't be hidden */\n return true;\n }\n return false;\n };\n _this.onMouseLeave = function (e) {\n var domEvent = toDomEvent(_this, e);\n var isDefaultPrevented = _this.context.childrenObserver.trigger('onMouseLeave', domEvent);\n if (isDefaultPrevented) {\n e.preventDefault();\n }\n };\n _this.chartObserver = new InstanceObserver(_this, {\n onMouseLeave: 'onChartMouseLeave'\n });\n context.observersStore.dispatch({\n type: 'add',\n payload: _this.chartObserver\n });\n return _this;\n }\n TooltipPopup.prototype.render = function () {\n var _this = this;\n var _a = this.props, popupShown = _a.popupShown, popupAlign = _a.popupAlign, popupOffset = _a.popupOffset, popupStyles = _a.popupStyles, popupContent = _a.popupContent, className = _a.className;\n var wrapperClass = [TOOLTIP_CLASS, className].join(' ').trim();\n var popupComponent = (React.createElement(Popup, { animate: false, popupAlign: popupAlign, offset: popupOffset, show: popupShown, collision: COLLISION, className: POPUP_WRAPPER_CLASS },\n React.createElement(\"div\", { className: wrapperClass, style: popupStyles, onMouseLeave: this.onMouseLeave, ref: function (el) { return _this.element = el; } }, popupContent())));\n return popupComponent;\n };\n TooltipPopup.prototype.componentWillUnmount = function () {\n this.context.observersStore.dispatch({\n type: 'remove',\n payload: this.chartObserver\n });\n };\n TooltipPopup.contextType = ChartContext;\n return TooltipPopup;\n}(React.Component));\nexport { TooltipPopup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { TooltipPoint } from './Point';\nimport { SharedTooltipContent } from './SharedTooltipContent';\nimport { TooltipPopup } from './Popup';\nimport { ChartContext } from '../ChartContext';\nvar SHARED_TOOLTIP_CLASS = 'k-chart-shared-tooltip';\nvar INVERSE_TOOLTIP_CLASS = 'k-chart-tooltip-inverse';\n/**\n * @hidden\n */\nvar SeriesTooltip = /** @class */ (function (_super) {\n __extends(SeriesTooltip, _super);\n function SeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n popupShown: false\n };\n return _this;\n }\n SeriesTooltip.prototype.componentDidMount = function () {\n // This is moved here as calls to the listed methods contains setState which is restricted before component mount\n this.chartObserver = new InstanceObserver(this, {\n showTooltip: 'onShowTooltip',\n hideTooltip: 'onHideTooltip'\n });\n this.context.observersStore.dispatch({\n type: 'add',\n payload: this.chartObserver\n });\n };\n SeriesTooltip.prototype.render = function () {\n var _this = this;\n var _a;\n var _b = this.state, popupContext = _b.popupContext, shared = _b.shared, className = _b.className, tooltipProps = __rest(_b, [\"popupContext\", \"shared\", \"className\"]);\n var tooltipContent = this.state.popupShown ? function () {\n var render = _this.findRenderFunction();\n if (shared) {\n return render !== null ? render(popupContext) :\n (React.createElement(SharedTooltipContent, __assign({}, popupContext)));\n }\n else {\n var point = popupContext.point;\n var seriesRenderer = _this.findRenderFunctionByIndex(point.series.index);\n if (seriesRenderer !== null) {\n return seriesRenderer(popupContext);\n }\n else if (render !== null) {\n return render(popupContext);\n }\n else {\n return (React.createElement(\"span\", { dangerouslySetInnerHTML: { __html: popupContext.point.formattedValue } }));\n }\n }\n } : Function.prototype;\n var popupContainerClassName = classNames((_a = {},\n _a[SHARED_TOOLTIP_CLASS] = shared,\n _a[INVERSE_TOOLTIP_CLASS] = !!className,\n _a));\n return (React.createElement(TooltipPopup, __assign({}, tooltipProps, { popupContent: tooltipContent, className: popupContainerClassName })));\n };\n SeriesTooltip.prototype.componentWillUnmount = function () {\n this.context.observersStore.dispatch({\n type: 'remove',\n payload: this.chartObserver\n });\n };\n SeriesTooltip.prototype.onShowTooltip = function (e) {\n var anchor = e.anchor, style = e.style, shared = e.shared, className = e.className, crosshair = e.crosshair;\n var context;\n if (crosshair) {\n return;\n }\n if (shared) {\n context = this.createSharedTooltipContext(e);\n }\n else {\n context = this.createTooltipContext(e);\n }\n this.setState({\n popupShown: true,\n popupAlign: anchor.align,\n popupOffset: anchor.point,\n popupContext: context,\n popupStyles: style,\n className: className,\n shared: shared\n });\n };\n SeriesTooltip.prototype.onHideTooltip = function () {\n this.setState({\n popupShown: false,\n popupStyles: {},\n className: undefined\n });\n };\n SeriesTooltip.prototype.createSharedTooltipContext = function (e) {\n var points = e.points, categoryText = e.categoryText;\n var nameColumn = points.filter(function (point) { return typeof point.series.name !== 'undefined'; }).length > 0;\n var colorMarker = e.series.length > 1;\n var colspan = 1;\n if (nameColumn) {\n colspan++;\n }\n if (colorMarker) {\n colspan++;\n }\n return {\n categoryText: categoryText,\n colorMarker: colorMarker,\n colspan: colspan,\n nameColumn: nameColumn,\n points: e.points.map(function (point) { return new TooltipPoint(point, e.format); })\n };\n };\n SeriesTooltip.prototype.createTooltipContext = function (e) {\n var point = e.point, format = e.format;\n return { point: new TooltipPoint(point, format) };\n };\n SeriesTooltip.prototype.findRenderFunctionByIndex = function (seriesIdx) {\n var series = this.context.optionsStore.getState().series;\n if (series !== undefined\n && Array.isArray(series)\n && series[seriesIdx] !== undefined\n && series[seriesIdx].hasOwnProperty('tooltip')\n && series[seriesIdx].tooltip.hasOwnProperty('render')) {\n return series[seriesIdx].tooltip.render;\n }\n return null;\n };\n SeriesTooltip.prototype.findRenderFunction = function () {\n var tooltip = this.context.optionsStore.getState().tooltip;\n if (tooltip !== undefined\n && tooltip.hasOwnProperty('render')) {\n return tooltip.render;\n }\n return null;\n };\n SeriesTooltip.contextType = ChartContext;\n return SeriesTooltip;\n}(React.Component));\nexport { SeriesTooltip };\n","/**\n * @hidden\n */\nvar Container = function (props) { return (props.children); };\nContainer.displayName = 'Container';\n/* eslint-disable max-len */\n/**\n * To provide support for React versions which do not support `React.Fragment`, the following component acts as its replacement. Returning an array is not an option as it blocks unit testing until [https://github.com/airbnb/enzyme/pull/1498#issuecomment-378413134](https://github.com/airbnb/enzyme/pull/1498#issuecomment-378413134) is released.\n */\nexport { Container };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { TooltipPopup } from './Popup';\nimport { ChartContext } from '../ChartContext';\nvar CROSSHAIR_TOOLTIP_CLASS = 'k-chart-crosshair-tooltip';\nvar INVERSE_TOOLTIP_CLASS = 'k-chart-tooltip-inverse';\n/**\n * @hidden\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n __extends(CrosshairTooltip, _super);\n function CrosshairTooltip(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.state = {\n popupShown: false\n };\n _this.chartObserver = new InstanceObserver(_this, {\n showTooltip: 'onShowTooltip',\n hideTooltip: 'onHideTooltip'\n });\n context.observersStore.dispatch({\n type: 'add',\n payload: _this.chartObserver\n });\n return _this;\n }\n CrosshairTooltip.prototype.render = function () {\n var _a;\n var _b = this.state, popupContend = _b.popupContend, className = _b.className, tooltipProps = __rest(_b, [\"popupContend\", \"className\"]);\n var tooltipContent = this.state.popupShown ? function () { return popupContend; } : Function.prototype;\n var popupContainerClassName = classNames((_a = {},\n _a[CROSSHAIR_TOOLTIP_CLASS] = true,\n _a[INVERSE_TOOLTIP_CLASS] = !!className,\n _a));\n return (React.createElement(TooltipPopup, __assign({}, tooltipProps, { popupContent: tooltipContent, className: popupContainerClassName })));\n };\n CrosshairTooltip.prototype.componentWillUnmount = function () {\n this.context.observersStore.dispatch({\n type: 'remove',\n payload: this.chartObserver\n });\n };\n CrosshairTooltip.prototype.onShowTooltip = function (e) {\n var anchor = e.anchor, style = e.style, className = e.className, crosshair = e.crosshair, axisName = e.axisName, axisIndex = e.axisIndex, value = e.value;\n var _a = this.props, name = _a.name, index = _a.index;\n if (!crosshair) {\n return;\n }\n if (axisName === name && axisIndex === index) {\n this.setState({\n popupShown: true,\n popupAlign: anchor.align,\n popupOffset: anchor.point,\n popupContend: value,\n popupStyles: style,\n className: className\n });\n }\n };\n CrosshairTooltip.prototype.onHideTooltip = function () {\n this.setState({\n popupShown: false,\n popupStyles: {},\n className: undefined\n });\n };\n CrosshairTooltip.contextType = ChartContext;\n return CrosshairTooltip;\n}(React.Component));\nexport { CrosshairTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Container } from './../Container';\nimport { CrosshairTooltip } from './Crosshair';\nimport { ChartContext } from '../ChartContext';\nvar AXES = ['categoryAxis', 'valueAxis', 'xAxis', 'yAxis'];\nfunction mapTooltips(options) {\n var map = {};\n for (var idx = 0; idx < AXES.length; idx++) {\n var tooltips = axesCrosshairTooltipOptions(options, AXES[idx]);\n for (var tooltipIdx = 0; tooltipIdx < tooltips.length; tooltipIdx++) {\n var tooltip = tooltips[tooltipIdx];\n map[tooltip.name + tooltip.index] = tooltip;\n }\n }\n return map;\n}\nfunction axesCrosshairTooltipOptions(options, name) {\n var result = [];\n if (options[name]) {\n var axes = [].concat(options[name]);\n for (var idx = 0; idx < axes.length; idx++) {\n var tooltip = (axes[idx].crosshair || {}).tooltip;\n if (tooltip && tooltip.visible) {\n result.push({\n index: idx,\n name: name\n });\n }\n }\n }\n return result;\n}\n/**\n * @hidden\n */\nvar CrosshairTooltipContainer = /** @class */ (function (_super) {\n __extends(CrosshairTooltipContainer, _super);\n function CrosshairTooltipContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n tooltips: {}\n };\n _this.storeUnsubscriber = Function.prototype;\n _this.subscriber = function () {\n _this.setState({\n tooltips: mapTooltips(_this.context.optionsStore.getState())\n });\n };\n return _this;\n }\n CrosshairTooltipContainer.prototype.componentDidMount = function () {\n // This is moved here as calls to the listed methods contains setState which is restricted before component mount\n this.storeUnsubscriber = this.context.optionsStore.subscribe(this.subscriber);\n };\n CrosshairTooltipContainer.prototype.render = function () {\n var tooltips = this.state.tooltips;\n var childrenMap = Object.keys(tooltips).map(function (key) { return (React.createElement(CrosshairTooltip, __assign({}, tooltips[key], { key: key }))); });\n return React.createElement(Container, null, childrenMap);\n };\n CrosshairTooltipContainer.prototype.componentWillUnmount = function () {\n this.storeUnsubscriber();\n };\n CrosshairTooltipContainer.contextType = ChartContext;\n return CrosshairTooltipContainer;\n}(React.Component));\nexport { CrosshairTooltipContainer };\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-charts',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642516099,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { DomEventsBuilder as ChartDomEventsBuilder, InstanceObserver } from '@progress/kendo-charts';\nimport { canUseDOM } from '@progress/kendo-react-common';\nimport { hasParent } from './utils/main';\nimport { DomEventsBuilder } from './events/dom-events-builder';\nimport { create as createEvent } from './events/chart-event-builder';\nimport { toDomEvent } from './events/dom-event';\nimport { loadTheme } from './theming/theme-service';\nimport createStore from './store/store';\nimport { optionsReducer, themeReducer, observersReducer } from './store/reducer';\nimport { toggle } from './utils/main';\nimport './defaults';\nimport { SeriesTooltip } from './tooltip/Series';\nimport { CrosshairTooltipContainer } from './tooltip/CrosshairContainer';\nimport { ChartContext } from './ChartContext';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\n/**\n * @hidden\n */\nvar BaseChart = /** @class */ (function (_super) {\n __extends(BaseChart, _super);\n function BaseChart(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.chartInstance = null;\n _this._element = null;\n _this.optionsStore = {};\n _this.optionsUnsubscriber = Function.prototype;\n _this.themeStore = {};\n _this.themeUnsubscriber = Function.prototype;\n _this.observersStore = {};\n _this.suppressTransitions = false;\n /* Chart handlers */\n /**\n * @hidden\n */\n _this.onRender = function (e) {\n if (_this.chartInstance !== null) {\n _this.surface = e.sender.surface;\n _this.trigger('render', e);\n }\n };\n /**\n * @hidden\n */\n _this.onLegendItemClick = function (e) {\n if (_this.chartInstance !== null) {\n /**\n * In \"controlled\" state the user should toggle the series data visibility\n */\n if (_this.props.onLegendItemClick) {\n _this.trigger('legendItemClick', e);\n }\n else {\n var series = _this.optionsStore.getState().series;\n if (!series) {\n return;\n }\n var payload = {};\n var seriesIndex = e.seriesIndex, pointIndex = e.pointIndex;\n var seriesByIndex = series[seriesIndex];\n if (pointIndex === undefined) {\n payload = Object.assign({}, seriesByIndex, { visible: toggle(seriesByIndex.visible) });\n }\n else {\n var pv = seriesByIndex.pointVisibility = seriesByIndex.pointVisibility || [];\n pv[pointIndex] = toggle(pv[pointIndex]);\n payload = Object.assign({}, seriesByIndex);\n }\n _this.optionsStore.dispatch({\n chartCollectionIdxKey: \"series_\" + seriesIndex,\n payload: payload\n });\n _this.suppressTransitions = true;\n }\n }\n };\n /* Dom event handlers */\n /**\n * @hidden\n */\n _this.onWindowResize = function () {\n if (_this.chartInstance !== null) {\n _this.chartInstance.resize();\n }\n };\n /**\n * @hidden\n */\n _this.onChartMouseLeave = function (e) {\n var domEvent = toDomEvent(_this, e);\n var isDefaultPrevented = _this.triggerDomEvent('onMouseLeave', domEvent);\n if (isDefaultPrevented) {\n e.preventDefault();\n }\n else if (_this.chartInstance !== null) {\n _this.chartInstance.hideElements();\n }\n };\n /**\n * @hidden\n */\n _this.onChildMouseLeave = function (e) {\n var syntheticEvent = e.syntheticEvent;\n if (_this.chartInstance && !hasParent(syntheticEvent.relatedTarget, _this.element)) {\n _this.chartInstance.hideElements();\n }\n return false;\n };\n validatePackage(packageMetadata);\n _this.optionsStore = createStore(optionsReducer);\n _this.observersStore = createStore(observersReducer);\n _this.childrenObserver = new InstanceObserver(_this, { onMouseLeave: 'onChildMouseLeave' });\n _this.contextValue = {\n optionsStore: _this.optionsStore,\n observersStore: _this.observersStore,\n childrenObserver: _this.childrenObserver\n };\n _this.themeStore = createStore(themeReducer);\n _this.chartObserver = new InstanceObserver(_this, { render: 'onRender', legendItemClick: 'onLegendItemClick' });\n return _this;\n }\n Object.defineProperty(BaseChart.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n BaseChart.prototype.componentDidMount = function () {\n loadTheme(this.themeStore, this.instantiateCoreChart.bind(this));\n this.optionsUnsubscriber = this.optionsStore.subscribe(this.refresh.bind(this));\n this.themeUnsubscriber = this.themeStore.subscribe(this.refresh.bind(this));\n window.addEventListener('resize', this.onWindowResize);\n };\n /**\n * @hidden\n */\n BaseChart.prototype.componentWillUnmount = function () {\n this.optionsUnsubscriber();\n this.themeUnsubscriber();\n if (this.chartInstance !== null) {\n this.chartInstance.destroy();\n this.chartInstance = null;\n }\n window.removeEventListener('resize', this.onWindowResize);\n };\n /**\n * @hidden\n */\n BaseChart.prototype.componentDidUpdate = function (prevProps) {\n var _a = this.props, dir = _a.dir, children = _a.children, spreadProps = __rest(_a, [\"dir\", \"children\"]);\n if (this.chartInstance !== null) {\n var currentIntlService = provideIntlService(this);\n var chartService = this.chartInstance.chartService;\n var localeChanged = currentIntlService.locale !== chartService._intlService.locale;\n var shouldUpdate = Object.entries(prevProps)\n .filter(function (keyValue) { return (keyValue[0] !== 'dir' && keyValue[0] !== 'children'); })\n .some(function (keyValue) {\n var key = keyValue[0], value = keyValue[1];\n return !(spreadProps.hasOwnProperty(key) && spreadProps[key] === value);\n });\n if (localeChanged) {\n this.chartInstance.chartService._intlService = currentIntlService;\n this.chartInstance.chartService.format._intlService = currentIntlService;\n if (!shouldUpdate) {\n this.chartInstance.noTransitionsRedraw();\n }\n }\n if (shouldUpdate) {\n this.refresh();\n }\n if (prevProps.dir !== dir) {\n this.chartInstance.setDirection(this.getDirection(dir));\n }\n }\n };\n /**\n * @hidden\n */\n BaseChart.prototype.render = function () {\n var _this = this;\n var _a = this.props, _b = _a.style, style = _b === void 0 ? {} : _b, className = _a.className, wrapper = _a.wrapper, children = _a.children;\n var chartStyles = Object.assign({}, style, { position: 'relative' });\n var content = React.createElement(wrapper, {\n className: className,\n style: chartStyles,\n key: 'chartElement'\n }, (React.createElement(\"div\", { onMouseLeave: this.onChartMouseLeave, ref: function (el) { return _this._element = el; }, className: \"k-chart-surface\" }, children)));\n return (React.createElement(ChartContext.Provider, { value: this.contextValue },\n React.createElement(SeriesTooltip, { key: \"seriesTooltip\" }),\n React.createElement(CrosshairTooltipContainer, { key: \"crosshairTooltips\" }),\n content));\n };\n /**\n * @hidden\n */\n BaseChart.prototype.getDirection = function (dir) {\n var _this = this;\n var directionFromWindow = function () { return canUseDOM && window.getComputedStyle(_this.element).direction; };\n var direction = dir !== undefined ? dir : (directionFromWindow() || 'ltr');\n return direction === 'rtl';\n };\n /**\n * @hidden\n */\n BaseChart.prototype.getChartOptions = function () {\n var _a = this.props, renderAs = _a.renderAs, pannable = _a.pannable, zoomable = _a.zoomable, paneDefaults = _a.paneDefaults, panes = _a.panes, transitions = _a.transitions, seriesColors = _a.seriesColors, seriesDefaults = _a.seriesDefaults, axisDefaults = _a.axisDefaults, deriveOptionsFromParent = _a.deriveOptionsFromParent;\n var chartOptions = {};\n // undefined clears chart defaults which leads to several issues\n if (renderAs !== undefined) {\n chartOptions.renderAs = renderAs;\n }\n if (pannable !== undefined) {\n chartOptions.pannable = pannable;\n }\n if (zoomable !== undefined) {\n chartOptions.zoomable = zoomable;\n }\n if (paneDefaults !== undefined) {\n chartOptions.paneDefaults = paneDefaults;\n }\n if (panes !== undefined) {\n chartOptions.panes = panes;\n }\n if (transitions !== undefined) {\n chartOptions.transitions = transitions;\n }\n if (seriesColors !== undefined) {\n chartOptions.seriesColors = seriesColors;\n }\n if (seriesDefaults !== undefined) {\n chartOptions.seriesDefaults = seriesDefaults;\n }\n if (axisDefaults !== undefined) {\n chartOptions.axisDefaults = axisDefaults;\n }\n chartOptions = Object.assign(chartOptions, this.optionsStore.getState());\n if (deriveOptionsFromParent) {\n chartOptions = deriveOptionsFromParent(chartOptions);\n }\n return chartOptions;\n };\n /**\n * @hidden\n */\n BaseChart.prototype.refresh = function () {\n if (this.chartInstance !== null) {\n var themeOptions = this.themeStore.getState();\n var chartOptions = this.getChartOptions();\n var transitions = chartOptions.transitions;\n if (this.suppressTransitions) {\n chartOptions.transitions = false;\n }\n if (this.props.onRefresh) {\n this.props.onRefresh.call(undefined, chartOptions, themeOptions, this.chartInstance);\n }\n else {\n this.chartInstance.setOptions(chartOptions, themeOptions);\n }\n if (this.suppressTransitions) {\n chartOptions.transitions = transitions;\n this.suppressTransitions = false;\n }\n }\n };\n /**\n * @hidden\n */\n BaseChart.prototype.instantiateCoreChart = function () {\n var _a = this.props, dir = _a.dir, chartConstructor = _a.chartConstructor;\n var chartOptions = this.getChartOptions();\n this.chartInstance = new chartConstructor(this.element, chartOptions, this.themeStore.getState(), {\n rtl: this.getDirection(dir),\n intlService: provideIntlService(this),\n observer: this.chartObserver,\n sender: this\n });\n };\n /* Triggers public dom event handlers */\n /**\n * @hidden\n */\n BaseChart.prototype.trigger = function (name, e) {\n var target = this.props.getTarget();\n var eventObject = createEvent(name, e, target);\n var handler = 'on' + name.charAt(0).toUpperCase() + name.slice(1);\n var observers = this.observersStore.getState();\n var isDefaultPrevented = false;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, e)) {\n isDefaultPrevented = true;\n }\n }\n /* We have not prevented the event internally, now pass it to the user */\n if (isDefaultPrevented === false\n && eventObject\n && this.props.hasOwnProperty(handler)) {\n this.props[handler].call(undefined, eventObject);\n return eventObject.isDefaultPrevented && eventObject.isDefaultPrevented();\n }\n return isDefaultPrevented;\n };\n /* Used by (event)InstanceObserver to check the wrapper for supported events */\n /**\n * @hidden\n */\n BaseChart.prototype.requiresHandlers = function (names) {\n for (var idx = 0; idx < names.length; idx++) {\n var name_1 = names[idx];\n var handler = 'on' + name_1.charAt(0).toUpperCase() + name_1.slice(1);\n if (this.props.hasOwnProperty(handler)) {\n return true;\n }\n }\n return false;\n };\n /* Triggers private dom event handlers */\n /**\n * @hidden\n */\n BaseChart.prototype.triggerDomEvent = function (name, e) {\n var observers = this.observersStore.getState();\n var isDefaultPrevented = false;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, e)) {\n isDefaultPrevented = true;\n }\n }\n return isDefaultPrevented;\n };\n /**\n * @hidden\n */\n BaseChart.propTypes = {\n dir: PropTypes.string,\n renderAs: PropTypes.oneOf(['svg', 'canvas'])\n };\n /**\n * @hidden\n */\n BaseChart.defaultProps = {\n renderAs: 'svg'\n };\n return BaseChart;\n}(React.Component));\nexport { BaseChart };\nregisterForIntl(BaseChart);\nChartDomEventsBuilder.register(DomEventsBuilder);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { ChartContext } from './ChartContext';\n/**\n * @hidden\n */\nvar DonutCenter = /** @class */ (function (_super) {\n __extends(DonutCenter, _super);\n function DonutCenter(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.state = {\n donutCenterStyles: null\n };\n _this.chartObserver = new InstanceObserver(_this, {\n render: 'onRender'\n });\n context.observersStore.dispatch({\n type: 'add',\n payload: _this.chartObserver\n });\n return _this;\n }\n DonutCenter.prototype.render = function () {\n var render = this.props.render;\n var donutCenterStyles = this.state.donutCenterStyles;\n var renderer = null;\n if (render && donutCenterStyles) {\n renderer = (React.createElement(\"div\", { className: \"k-chart-donut-center\", style: donutCenterStyles }, render()));\n }\n return renderer;\n };\n DonutCenter.prototype.onRender = function (event) {\n var series = this.context.optionsStore.getState().series;\n var firstSeries = Array.isArray(series) ? series[0] : null;\n var charts = event.sender._plotArea.charts;\n if (!firstSeries || firstSeries.type !== 'donut' || charts[0].points.length === 0) {\n return;\n }\n var sector = charts[0].points[0].sector;\n var radius = sector.innerRadius;\n var top = sector.center.y - radius;\n var left = sector.center.x - radius;\n var size = radius * 2;\n this.setState({\n donutCenterStyles: {\n height: size,\n left: left,\n top: top,\n width: size\n }\n });\n };\n DonutCenter.contextType = ChartContext;\n return DonutCenter;\n}(React.Component));\nexport { DonutCenter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { BaseChart } from './BaseChart';\nimport { DonutCenter } from './DonutCenter';\nimport { Chart as KendoChart } from '@progress/kendo-charts';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the [KendoReact Chart component]({% slug overview_chart_charts %}).\n *\n * @example\n * ```jsx\n * import {\n * Chart,\n * ChartSeries,\n * ChartSeriesItem,\n * ChartCategoryAxis,\n * ChartCategoryAxisItem,\n * ChartTitle,\n * ChartLegend\n * } from '@progress/kendo-react-charts';\n *\n * const categories = [ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 ];\n * const series = [ {\n * name: 'India',\n * data: [ 3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855 ]\n * }, {\n * name: 'Russian Federation',\n * data: [ 4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3 ]\n * }, {\n * name: 'Germany',\n * data: [ 0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995 ]\n * }, {\n * name: 'World',\n * data: [ 1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727 ]\n * } ];\n *\n * const ChartContainer = () => (\n * <Chart>\n * <ChartTitle text=\"Gross domestic product growth GDP annual\" />\n * <ChartLegend position=\"top\" orientation=\"horizontal\" />\n * <ChartCategoryAxis>\n * <ChartCategoryAxisItem categories={categories} startAngle={45} />\n * </ChartCategoryAxis>\n * <ChartSeries>\n * {series.map((item, idx) => (\n * <ChartSeriesItem\n * key={idx}\n * type=\"column\"\n * data={item.data}\n * name={item.name}\n * />))}\n * </ChartSeries>\n * </Chart>\n * );\n *\n * ReactDOM.render(\n * <ChartContainer />,\n * document.querySelector('my-app')\n * );\n * ```\n */\nvar Chart = /** @class */ (function (_super) {\n __extends(Chart, _super);\n function Chart() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.getTarget = function () {\n return _this;\n };\n return _this;\n }\n Object.defineProperty(Chart.prototype, \"chartInstance\", {\n /**\n * @hidden\n */\n get: function () {\n if (this._baseChart !== null) {\n return this._baseChart.chartInstance;\n }\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"surface\", {\n /**\n * The Drawing `Surface` of the Chart.\n */\n get: function () {\n if (this._baseChart !== null) {\n return this._baseChart.surface;\n }\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"element\", {\n /**\n * The DOM element of the Chart.\n */\n get: function () {\n if (this._baseChart !== null) {\n return this._baseChart.element;\n }\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Chart.prototype.render = function () {\n var _this = this;\n var _a = this.props, donutCenterRender = _a.donutCenterRender, children = _a.children, className = _a.className, baseChartProps = __rest(_a, [\"donutCenterRender\", \"children\", \"className\"]);\n return (React.createElement(BaseChart, __assign({}, baseChartProps, { ref: function (baseChart) { return _this._baseChart = baseChart; }, chartConstructor: KendoChart, getTarget: this.getTarget, wrapper: \"div\", className: classNames('k-chart k-widget', className) }),\n children,\n React.createElement(DonutCenter, { render: donutCenterRender })));\n };\n return Chart;\n}(React.Component));\nexport { Chart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ChartContext } from '../../ChartContext';\n/**\n * @hidden\n */\nvar CollectionConfigurationComponent = /** @class */ (function (_super) {\n __extends(CollectionConfigurationComponent, _super);\n function CollectionConfigurationComponent(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.optionsStore = context.optionsStore;\n return _this;\n }\n CollectionConfigurationComponent.prototype.renderChildren = function (child, index) {\n var children = child.props.children;\n var _a = this.props, _chartKey = _a._chartKey, _parentStore = _a._parentStore;\n var collectionItemProps = __assign({}, child.props, { _chartCollectionIdxKey: _chartKey + \"_\" + index, _parentStore: _parentStore });\n return React.cloneElement(child, collectionItemProps, children);\n };\n CollectionConfigurationComponent.prototype.render = function () {\n var _this = this;\n var _a = this.props, _chartKey = _a._chartKey, _parentStore = _a._parentStore, children = _a.children;\n var store = _parentStore || this.optionsStore;\n store.dispatch({\n chartKey: _chartKey,\n payload: []\n });\n return React.Children.map(children, function (child, index) {\n if (React.isValidElement(child)) {\n return _this.renderChildren(child, index);\n }\n return child;\n });\n };\n CollectionConfigurationComponent.contextType = ChartContext;\n return CollectionConfigurationComponent;\n}(React.Component));\nexport default CollectionConfigurationComponent;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport createStore from './../../store/store';\nimport { optionsReducer } from './../../store/reducer';\nimport { ChartContext } from '../../ChartContext';\n/**\n * @hidden\n */\nvar ConfigurationComponent = /** @class */ (function (_super) {\n __extends(ConfigurationComponent, _super);\n function ConfigurationComponent(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.optionsStore = context.optionsStore;\n _this.childStore = createStore(optionsReducer);\n return _this;\n }\n ConfigurationComponent.prototype.render = function () {\n var _this = this;\n var children = this.props.children;\n return children !== undefined ? React.Children.map(children, function (child) {\n if (React.isValidElement(child)) {\n return _this.renderChildren(child);\n }\n return child;\n }) : null;\n };\n ConfigurationComponent.prototype.componentDidMount = function () {\n this.dispatch();\n };\n ConfigurationComponent.prototype.componentDidUpdate = function () {\n this.dispatch();\n };\n ConfigurationComponent.prototype.dispatch = function () {\n var _a = this.props, _chartKey = _a._chartKey, _chartCollectionIdxKey = _a._chartCollectionIdxKey, _parentStore = _a._parentStore, children = _a.children, options = __rest(_a, [\"_chartKey\", \"_chartCollectionIdxKey\", \"_parentStore\", \"children\"]);\n var store = _parentStore || this.optionsStore;\n store.dispatch({\n chartKey: _chartKey,\n chartCollectionIdxKey: _chartCollectionIdxKey,\n payload: Object.assign({}, options, this.childStore.getState())\n });\n };\n ConfigurationComponent.prototype.renderChildren = function (child) {\n var children = child.props.children;\n var configurationItemProps = __assign({}, child.props, { _parentStore: this.childStore });\n return React.cloneElement(child, configurationItemProps, children);\n };\n ConfigurationComponent.contextType = ChartContext;\n return ConfigurationComponent;\n}(React.Component));\nexport default ConfigurationComponent;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartSeriesItem = function (props) {\n return (React.createElement(ConfigurationComponent, __assign({}, props)));\n};\nChartSeriesItem.displayName = 'ChartSeriesItem';\nexport default ChartSeriesItem;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport CollectionConfigurationComponent from './base/CollectionConfigurationComponent';\nimport ChartSeriesItem from './SeriesItem';\nimport { validateChildren } from '../utils/main';\nvar ChartSeries = function (props) {\n return (React.createElement(CollectionConfigurationComponent, __assign({}, props, { _chartKey: \"series\" })));\n};\nChartSeries.propTypes = {\n children: function (props, propName, componentName) {\n return validateChildren(props, propName, componentName, ChartSeriesItem);\n }\n};\nexport default ChartSeries;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport ConfigurationComponent from './base/ConfigurationComponent';\nvar ChartLegend = function (props) {\n return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"legend\" })));\n};\nChartLegend.defaultProps = {\n visible: true\n};\nexport default ChartLegend;\n","export const CheckIfNYCDOELicense = (licenseModel: string) => {\r\n if (licenseModel && licenseModel === \"Unlimited use of catalog for unlimited users\") {\r\n return true\r\n } else {\r\n return false\r\n }\r\n\r\n}","\r\n\r\nimport {\r\n Chart,\r\n ChartLegend,\r\n ChartSeries,\r\n ChartSeriesItem,\r\n} from '@progress/kendo-react-charts';\r\n\r\nimport 'hammerjs';\r\nimport { CheckIfNYCDOELicense } from '../../helpers/helper';\r\n\r\n\r\ninterface Data {\r\n kind: string,\r\n share: number,\r\n color: string\r\n}\r\n\r\ninterface SchoolLicenseUsage {\r\n id: number,\r\n quantityAllocated: number,\r\n quantityAssigned: number,\r\n vendorId: number,\r\n vendorName: string,\r\n vendorModel: string\r\n}\r\n\r\n\r\n\r\nfunction ChartContainer(data: any) {\r\n let schoolLicenseUsage: SchoolLicenseUsage[] = [];\r\n let isDOELicense = data.data && CheckIfNYCDOELicense(data.data.vendorModel);\r\n\r\n schoolLicenseUsage.push(data.data);\r\n let schoolLicenseUsageChartData: Data[] = [];\r\n schoolLicenseUsageChartData.push(\r\n { kind: \"Used\", share: schoolLicenseUsage[0].quantityAssigned, color: \"#E87511\" },\r\n { kind: \"Unused\", share: isDOELicense ? Number.MAX_SAFE_INTEGER : (schoolLicenseUsage[0].quantityAllocated - schoolLicenseUsage[0].quantityAssigned), color: \"#d4dae3\" }\r\n );\r\n\r\n const donutCenterRender = () => (<span style={{ fontSize: \"15px\" }}>{schoolLicenseUsage[0].quantityAssigned}/ {isDOELicense ? 'Unlimited' : schoolLicenseUsage[0].quantityAllocated}</span>);\r\n\r\n if (schoolLicenseUsageChartData.length > 0) {\r\n return (\r\n <Chart renderAs='svg' style={{ width: \"120px\", height: \"120px\" }} donutCenterRender={donutCenterRender}>\r\n <ChartSeries>\r\n <ChartSeriesItem type=\"donut\" data={schoolLicenseUsageChartData} outliers={{ rotation: 5 }} categoryField=\"kind\" field=\"share\" color=\"color\" holeSize={45} size={8} />\r\n </ChartSeries>\r\n <ChartLegend visible={false} />\r\n </Chart>\r\n );\r\n } else {\r\n return (\r\n <div>No Assigned Licenses</div>\r\n );\r\n }\r\n}\r\n\r\nexport default ChartContainer\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport courseService from '../../services/CoursesService'\r\nimport {\r\n Chart,\r\n ChartArea,\r\n ChartLegend,\r\n ChartSeries,\r\n ChartSeriesItem,\r\n ChartSeriesLabels\r\n} from '@progress/kendo-react-charts';\r\nimport 'hammerjs';\r\n\r\n\r\ninterface CourseStatusList {\r\n courseStatus: string,\r\n courseCount: string\r\n}\r\n\r\nconst labelContent = (e: any) => (e.text + \" - \" + e.value);\r\n\r\nfunction CourseChartContainer(data: any) {\r\n let Tdata: CourseStatusList[] = []\r\n if (data.data.length > 0) {\r\n Tdata = data.data\r\n } \r\n \r\n if (Tdata.length > 0) {\r\n return (\r\n <Chart renderAs='svg' style={{fontSize:\"20px\",height:\"210px\"}}>\r\n <ChartSeries >\r\n <ChartSeriesItem type=\"donut\" data={Tdata} categoryField=\"courseStatus\" field=\"courseCount\" holeSize={80} size={20}>\r\n </ChartSeriesItem>\r\n </ChartSeries>\r\n <ChartLegend visible={true} position=\"right\" labels={\r\n { margin: 5 ,content:labelContent}\r\n } />\r\n </Chart>\r\n )\r\n } else {\r\n return (\r\n <div>No Courses</div>\r\n ) \r\n }\r\n};\r\n\r\nexport default CourseChartContainer\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { AxiosInstances as AxiosInstance } from './BaseService'\r\nimport ICourseVendorContent from '../model/ICourseVendorContent';\r\nimport ICourses from '../model/ICourses';\r\nimport ICourseDetail from '../model/ICourseDetail';\r\nimport IMergeCourses from '../model/IMergeCourses';\r\nimport IMultipleCoursesVendorContent from '../model/IMultipleCoursesVendorContent';\r\nimport internal from 'stream';\r\nimport IAddMultipleCoursesVendorContent from '../model/IAddMultipleCoursesVendorContent';\r\nexport default {\r\n getCourses: (schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number, orderBy: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${schoolDBN}/${schoolYear}/Courses?pageNumber=${pageNumber}&pageSize=${pageSize}&orderBy=${orderBy}`,\r\n }),\r\n getStarsCourses: (sharedCourseUniqueId: string, schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Courses/${schoolYear}/Stars/${sharedCourseUniqueId}/${schoolDBN}/${pageNumber}/${pageSize}`,\r\n }),\r\n\r\n searchStarsCourseByName: (sharedCourseUniqueId: string, schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number, searchCourseName: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Courses/${schoolYear}/Stars/${sharedCourseUniqueId}/${schoolDBN}/${pageNumber}/${pageSize}/${searchCourseName}`,\r\n }),\r\n\r\n filterCourses: (schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number, orderBy: string, searchCourseName: string , searchCourseStatus: string , searchCourseType: string,searchUnpublishedStudents:string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${schoolDBN}/${schoolYear}/Courses?pageNumber=${pageNumber}&pageSize=${pageSize}&orderBy=${orderBy}&searchCourseName=${searchCourseName}&searchCourseStatus=${searchCourseStatus}&searchCourseType=${searchCourseType}&searchUnpublishedStudents=${searchUnpublishedStudents}`,\r\n }),\r\n filterCoursesByNameAndStatus: (schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number, orderBy: string, searchCourseStatus: string, searchCourseName: string,) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${schoolDBN}/${schoolYear}/Courses/${pageNumber}/${pageSize}/${orderBy}/${searchCourseStatus}/${searchCourseName}`,\r\n }),\r\n filterCoursesByStatus: (schoolDBN: string, schoolYear: number, pageNumber: number, pageSize: number, orderBy: string, searchCourseStatus: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${schoolDBN}/${schoolYear}/Courses/${pageNumber}/${pageSize}/${orderBy}/${searchCourseStatus}`,\r\n }),\r\n getCourseDetail: (courseId: number, schoolDBN: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${schoolDBN}/Courses/${courseId}`,\r\n }),\r\n\r\n getCourseStatus: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Courses/CourseStatus`,\r\n }),\r\n getUnassignedVendorContentData: (courseId: number, schoolDBN: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${schoolDBN}/Courses/${courseId}/UnassignedVendorContent`,\r\n }),\r\n getVendorContentUnassignedCourses: (schoolDBN: string,vendorContentId:number,vendorId:number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${schoolDBN}/${vendorContentId}/${vendorId}/UnassignedCourses`,\r\n }), \r\n getIndividualCoursesBySharedCourseId: (courseId: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/IndividualCourses/${courseId}`,\r\n }),\r\n getVendorContentData: (courseId: number, schoolDBN: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${schoolDBN}/Courses/${courseId}/VendorContent`,\r\n }),\r\n post: (requestdata: ICourseVendorContent) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/Courses/VendorContent',\r\n 'data': requestdata\r\n }),\r\n postMultipleCoursesVendorContent: (requestdata: IAddMultipleCoursesVendorContent) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/Courses/VendorContent/Add',\r\n 'data': requestdata\r\n }),\r\n postVendorContentMultipleCourses: (requestdata: IMultipleCoursesVendorContent) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/MultipleCourses/VendorContent',\r\n 'data': requestdata\r\n }),\r\n delete: (requestdata: ICourseVendorContent) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/Courses/VendorContent/Delete',\r\n 'data': requestdata\r\n }),\r\n edit: (requestdata: ICourses) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/Courses/CourseName',\r\n 'data': requestdata\r\n }),\r\n merge: (requestdata: IMergeCourses) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/Courses/Merge',\r\n 'data': requestdata\r\n }),\r\n postCourse: (requestdata: ICourseDetail) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/Courses/Course',\r\n 'data': requestdata\r\n }),\r\n\r\n editCourse: (requestdata: ICourseDetail) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/Courses/Course',\r\n 'data': requestdata\r\n }),\r\n\r\n addIndividualCourses: (requestdata: any) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/Courses/AddIndividualCourses',\r\n 'data': requestdata\r\n }),\r\n deleteIndividualCourses: (requestdata: any) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/Courses/DeleteIndividualCourses',\r\n 'data': requestdata\r\n }),\r\n\r\n GetCourseStatusChart: (schoolDBN: string, schoolYear: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/Chart/${schoolDBN}/Courses/${schoolYear}`,\r\n }),\r\n\r\n publishCourse: (requestdata: ICourseDetail) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/Courses/publish',\r\n 'data': requestdata\r\n }),\r\n\r\n deleteCourse: (requestdata: ICourseDetail) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/Courses/delete',\r\n 'data': requestdata\r\n }),\r\n\r\n closeCourse: (requestdata: ICourseDetail) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/Courses/close',\r\n 'data': requestdata\r\n }),\r\n\r\n reOpenCourse: (requestdata: ICourseDetail) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/Courses/reopen',\r\n 'data': requestdata\r\n }),\r\n\r\n getLicenseSummary: (courseId: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Courses/${courseId}/LicenseSummary`,\r\n }),\r\n\r\n}","\r\nimport ILicenseAllocation from '../model/ILicenseAllocation'\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n \r\n getAllocatedVendorsDetail: (locationCode: string , schoolYear : number ) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/AllocatedVendorsDetail/${schoolYear}`\r\n }),\r\n getAllocatedVendorDetailById: (locationCode: string, vendorId: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/AllocatedVendors/${vendorId}/VendorContents`\r\n }),\r\n //get School License chart data- hossni 14/6\r\n GetSchoolLicenseUsageChart: (locationCode: string, year: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/AllocatedVendors/${year}/SchoolLicenseUsageChart`\r\n }),\r\n\r\n GetSchoolLicenseUsageReport: (locationCode: string, year: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/AllocatedVendors/${year}/SchoolLicenseUsageReport`\r\n }),\r\n getNonAllocatedVendors: (locationCode: string , schoolYear : number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/NonAllocatedVendors/${schoolYear}`\r\n }),\r\n getAllocatedVendors: (locationCode: string , schoolYear : number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/AllocatedVendors/${schoolYear}`\r\n }),\r\n post: (requestdata: ILicenseAllocation) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/LicenseAllocation',\r\n 'data': requestdata\r\n }),\r\n put: (requestdata: ILicenseAllocation) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/LicenseAllocation',\r\n 'data': requestdata\r\n }),\r\n postTransfer: (requestdata: ILicenseAllocation) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/LicenseAllocation/Transfer',\r\n 'data': requestdata\r\n })\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport AnnouncementDisplay from '../components/announcement/AnnouncementDisplay';\r\nimport ChartContainer from './charts/licenseChart';\r\nimport CourseChartContainer from './charts/CourseChart'\r\nimport courseService from '../services/CoursesService'\r\nimport licenseAllocationService from '../services/LicenseAllocation'\r\nimport { LocationContext, Year } from '../services/AppContext'\r\n\r\ninterface ILocationCode {\r\n id: string,\r\n}\r\n\r\n\r\ninterface CourseStatusList {\r\n courseStatus: string,\r\n courseCount: string\r\n}\r\n\r\ninterface SchoolLicenseUsage {\r\n id: number,\r\n quantityAllocated: number,\r\n quantityAssigned: number, \r\n vendorId: number,\r\n vendorName: string\r\n}\r\nexport default function Dashboard(location: ILocationCode) {\r\n\r\n // get locationCode and schoolYear from dropDown - hossni 14/6\r\n const { locationCode } = useContext(LocationContext);\r\n const { orginalSchoolYear } = useContext(Year);\r\n \r\n const [courseStatusList, setcourseStatusList] = useState<CourseStatusList[]>([]);\r\n const [schoolLicenseUsageList, setSchoolLicenseUsage] = useState<SchoolLicenseUsage[]>([]);\r\n useEffect(() => {\r\n if(locationCode != \"\" && orginalSchoolYear.id != \"\"){\r\n courseService.GetCourseStatusChart(locationCode, +orginalSchoolYear.id).then(response => {\r\n setcourseStatusList(response.data);\r\n })\r\n licenseAllocationService.GetSchoolLicenseUsageChart(locationCode, orginalSchoolYear.id).then(response => {\r\n setSchoolLicenseUsage(response.data)\r\n }) \r\n }\r\n \r\n }, [locationCode, orginalSchoolYear.id]);\r\n\r\n return (\r\n <div>\r\n <AnnouncementDisplay />\r\n <div className=\"row mb-4\" >\r\n <div className=\"col-md-6\">\r\n <div className=\"card\">\r\n <div className=\"card-header bg-blue-gray d-flex justify-content-between align-items-center\">\r\n <div className=\"h3 mb-0 font-weight-normal\">\r\n Courses ({courseStatusList.reduce((accumulator, currentValue) => accumulator + +currentValue.courseCount,0)})\r\n </div>\r\n </div>\r\n <div className=\"card-body text-center\">\r\n {/* // get locationCode and schoolYear from dropDown - hossni 14/6 */} \r\n <CourseChartContainer data={courseStatusList} />\r\n </div>\r\n </div> \r\n </div>\r\n <div className=\"col-md-6 mt-4 mt-md-0\">\r\n <div className=\"card\">\r\n <div className=\"card-header bg-blue-gray d-flex justify-content-between align-items-center\">\r\n <div className=\"h3 mb-0 font-weight-normal\">\r\n Assigned Licenses\r\n </div>\r\n </div>\r\n <div className=\"card-body text-center\">\r\n <div className=\"row\">\r\n {\r\n schoolLicenseUsageList.length > 0 ? schoolLicenseUsageList.map(vendor => <div className=\"col-lg-4 col-sm-6 d-flex flex-column justify-content-between align-items-center\" key={vendor.id} ><div> <ChartContainer data={vendor} /> </div> <div className=\"small\">{vendor.vendorName}</div> </div>) : <div className=\"col-sm-12\"> <div>No Assigned Licenses</div> </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n )\r\n}\r\n\r\n","import axios from 'axios'\r\nimport { AxiosInstances as AxiosInstance } from './BaseService'\r\n\r\nexport default {\r\n getData: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/SetupSchool',\r\n }),\r\n\r\n getSchoolsFromDaap: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/SetupSchool/Daap',\r\n }),\r\n\r\n getSchoolOrgFromEndPoint: (req:any) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/AddSchool',\r\n 'data':req\r\n }),\r\n\r\n addNewSchool: (req:any) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/AddSchool',\r\n 'data':req\r\n }),\r\n updatePrincipal: (req:any) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/School/UpdatePrincipal',\r\n 'data':req\r\n }),\r\n getPrincipalInfoBySchoolDBN: (locationCode: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/PrincipalInfo`\r\n })\r\n\r\n\r\n\r\n}","import React, { useState, useEffect } from 'react';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport schoolService from '../services/SchoolService';\r\nimport { LocationContext, UserProfileType ,AuthContextDefault} from '../services/AppContext'\r\nimport { useContext } from 'react';\r\nimport { IDropDownValue } from '../services/Utility'\r\nimport LocalStorageService from '../services/LocalStorage';\r\n\r\n\r\n\r\nexport default function SchoolDropDown(props: any) {\r\n const [orginalSchoolList, setOrginalSchoolList] = useState<IDropDownValue[]>([]);\r\n const [schoolList, setSchoolList] = useState<IDropDownValue[]>([]);\r\n const { locationCode, setLocationCode } = useContext(LocationContext);\r\n const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n useEffect(() => { \r\n setUserProfile(LocalStorageService.getUserProfile())\r\n if(LocalStorageService.getUserProfile()?.role?.roleName == 'System Administrator' || LocalStorageService.getUserProfile().role.roleName == \"Central Staff\"){\r\n schoolService.getData().then(response => {\r\n let dropDownData = response.data.map((sl: any) => ({\r\n id: sl.locationCode, \r\n text: sl.locationCode + ' -- ' + sl.schoolName\r\n }));\r\n setLocationCode(response.data[0].locationCode)\r\n setSchoolList(dropDownData)\r\n setOrginalSchoolList(dropDownData)\r\n })\r\n }else{\r\n let data = LocalStorageService.getUserProfile()?.role?.locations?.map(s=>({id:s.LocationCode,text:s.LocationCode + ' -- ' + s.LocationName}))\r\n \r\n if(data){\r\n setSchoolList(data)\r\n setOrginalSchoolList(data)\r\n }\r\n \r\n }\r\n \r\n }, []);\r\n\r\n const filterData = (filter: any) => {\r\n let data = orginalSchoolList.slice();\r\n return filterBy(data, filter);\r\n }\r\n\r\n const filterChange = (event: any) => {\r\n let data = filterData(event.filter)\r\n setSchoolList(data)\r\n } \r\n\r\n const handleChange = (event: any) => {\r\n const selectedSchool = event.target.value;\r\n setLocationCode(selectedSchool.id);\r\n }\r\n\r\n const changeSelectedSchool = (event: any) => {\r\n const selectedSchool = event.target.value;\r\n setLocationCode(selectedSchool.id);\r\n }\r\n return (\r\n\r\n <DropDownList\r\n data={schoolList}\r\n defaultValue={schoolList[0]}\r\n textField=\"text\"\r\n filterable={true}\r\n onChange={handleChange}\r\n onFilterChange={filterChange}\r\n onClose={changeSelectedSchool}\r\n \r\n />\r\n\r\n )\r\n}\r\n","import axios from 'axios'\r\nimport { AxiosInstances as AxiosInstance } from './BaseService'\r\n\r\nexport default {\r\n getData: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/SchoolYear',\r\n }),\r\n getCurrentSchoolYear: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/CurrentSchoolYear',\r\n }),\r\n\r\n AddNewSchoolYear: (req: any) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/AddNewSchoolYear',\r\n 'data': req\r\n }),\r\n\r\n}","import React, { useState, useEffect , useContext} from 'react';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { Year } from '../services/AppContext';\r\nimport schoolYearService from '../services/SchoolYearService'\r\ninterface IDropDownValue {\r\n id: string;\r\n text: string; \r\n isCurrent:number;\r\n schoolYearEndDate:Date;\r\n}\r\n\r\n export default function SchoolYearDropDown(props: any)\r\n { \r\n let { orginalSchoolYear, setOrginalSchoolYear } = useContext(Year);\r\n const [currentYear , setCurrentYear] = useState<IDropDownValue>({id:'',text:'',isCurrent:0,schoolYearEndDate:new Date()})\r\n let currentDate = new Date();\r\n const [orginalSchoolYearList, setOrginalSchoolYearList] = useState<IDropDownValue[]>([\r\n ]);\r\n \r\n \r\n useEffect(() => { \r\n schoolYearService.getData().then(response => {\r\n \r\n let year = response.data.find((y:any)=>y.isCurrent==1)\r\n if(year){\r\n let current = {\r\n id:year.schoolYear,\r\n text: year.schoolYearRange,\r\n isCurrent : year.isCurrent,\r\n schoolYearEndDate:year.schoolYearEndDate\r\n }\r\n setCurrentYear(current)\r\n setOrginalSchoolYear({\r\n id:current.id,\r\n isCurrent:current.isCurrent,\r\n schoolYearEndDate:current.schoolYearEndDate\r\n })\r\n }\r\n let dropDownData = response.data.map((sl: any) => ({\r\n id: sl.schoolYear,\r\n text: sl.schoolYearRange,\r\n isCurrent:sl.isCurrent,\r\n schoolYearEndDate:sl.schoolYearEndDate\r\n }));\r\n setOrginalSchoolYearList(dropDownData)\r\n })\r\n }, []);\r\n\r\n const handleChange = (event: any) => {\r\n const selectedYear = event.target.value;\r\n setOrginalSchoolYear(selectedYear);\r\n }\r\n\r\n \r\n return (\r\n <DropDownList\r\n data={orginalSchoolYearList}\r\n defaultValue={orginalSchoolYearList.find((y:any)=>y.isCurrent==1)}\r\n textField=\"text\"\r\n onChange={handleChange}\r\n />\r\n )\r\n }","import { AxiosInstances as AxiosInstance, setupInterceptorsTo } from './BaseService'\r\n\r\nconst axiosInstance = setupInterceptorsTo(AxiosInstance)\r\nexport default {\r\n getData: () =>\r\n axiosInstance({\r\n 'method': 'GET',\r\n 'url': '/Menu',\r\n })\r\n\r\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n <RouterContext.Provider\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n >\n <HistoryContext.Provider\n children={this.props.children || null}\n value={this.props.history}\n />\n </RouterContext.Provider>\n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change <Router history>\"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return <Router {...rest} history={history} staticContext={context} />;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<HashRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return <a {...props} />;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Link> outside a <Router>\");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return <Link {...props} />;\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport menuService from '../services/MenuService';\r\nimport IMenu from '../model/Menu'\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nexport default function Menu() {\r\n const mountedRef = useRef(true);\r\n const [menuData, setMenuData] = useState<IMenu[]>([]); \r\n useEffect(() => {\r\n menuService.getData().then(response => {\r\n setMenuData(response.data)\r\n })\r\n return () => { mountedRef.current = false }\r\n }, []); \r\n\r\n return (\r\n <div className='main-tabs-overflow'>\r\n <ul className=\"nav nav-tabs main-tabs mt-5\">\r\n {\r\n menuData.map((link, i) =>\r\n <li className=\"nav-item\" key={i.toString()}>\r\n <NavLink exact to={link.navigationURL} className=\"nav-link\" activeClassName=\"active\" key={link.sortIndex}>{link.displayText}</NavLink>\r\n </li>\r\n )\r\n }\r\n </ul>\r\n </div>\r\n )\r\n}\r\n\r\n","import { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n getBySchoolDBN: (locationCode: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/SchoolInfo`\r\n })\r\n}","import React, { useState, useEffect, Component } from 'react';\r\nimport schoolInfoService from '../services/SchoolInfoService';\r\nimport ISchoolInfo from '../model/ISchoolInfo'\r\nimport PurchaseOrder from './PurchaseOrder';\r\n\r\ninterface ILocationCode\r\n{\r\n id: string,\r\n}\r\n\r\nexport default function SchoolBanner(locationCode: ILocationCode) {\r\n const [schoolData, getSchoolData] = useState<ISchoolInfo>({\r\n locationName: 'string',\r\n locationCode: 'string',\r\n address: 'string',\r\n principalFullName: 'string'\r\n });\r\n useEffect(() => {\r\n schoolInfoService.getBySchoolDBN(locationCode.id).then(response => {\r\n getSchoolData(response.data)\r\n \r\n })\r\n }, [locationCode]);\r\n\r\n return (\r\n <section>\r\n <div className=\"ml-0 ml-md-4 mt-2 mt-md-0 align-middle text-center text-md-left\">\r\n <h1 className=\"h2 mb-0 d-inline-block\">{schoolData.locationName} ({schoolData.locationCode})</h1>\r\n <div className=\"h6 mt-1 mb-0 text-muted font-weight-normal\">\r\n <div className=\"d-md-inline\">DBN: {schoolData.locationCode}</div>\r\n <div className=\"pl-1 pr-1 d-none d-md-inline\">•</div>\r\n <div className=\"d-md-inline\">{schoolData.address}</div>\r\n {schoolData.principalFullName != \"\" ? (<div className=\"d-md-inline\"><div className=\"pl-1 pr-1 d-none d-md-inline\">•</div>Principal: {schoolData.principalFullName}</div>) : \"\"}\r\n </div>\r\n </div> \r\n {/* <PurchaseOrder>{schoolData.locationCode}</PurchaseOrder> */}\r\n </section>\r\n )\r\n\r\n}","import React, { useState, useEffect } from 'react';\r\nimport IVendor from '../model/Vendor';\r\n\r\nexport default function VendorDetail(props: any) {\r\n const [vendorDetailData, setvendorDetailData] = useState<IVendor>();\r\n useEffect(() => {\r\n setvendorDetailData(props.data)\r\n }, []);\r\n\r\n return (\r\n <div className=\"card mb-4\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n Vendor Details\r\n </div>\r\n <div className=\"card-body\">\r\n <div>\r\n <div className=\"small text-primary\">Description:</div>\r\n <div>{vendorDetailData?.vendorDescription}</div>\r\n </div>\r\n <div className=\"row mt-3\">\r\n <div className=\"col\">\r\n <div className=\"small text-primary\">Type:</div>\r\n <div>{vendorDetailData?.licenseType}</div>\r\n </div>\r\n <div className=\"col\">\r\n <div className=\"small text-primary\">Usage:</div>\r\n <div>{vendorDetailData?.licenseModel}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport LicenseAllocationService from '../../services/LicenseAllocation';\r\nimport ICourseContent from '../../model/VendorContent';\r\nimport { Grid, GridColumn, GridToolbar } from '@progress/kendo-react-grid';\r\ninterface IContentDisplay {\r\n locationCode: string,\r\n vendorId: number\r\n}\r\nexport default function VendorContentDisplay(props: IContentDisplay) {\r\n const [rowData, setCourseContentData] = useState<ICourseContent[]>([]);\r\n useEffect(() => {\r\n LicenseAllocationService.getAllocatedVendorDetailById(props.locationCode, props.vendorId).then(response => {\r\n setCourseContentData(response.data)\r\n })\r\n }, []);\r\n\r\n return (\r\n <div className=\"card\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n Vendor Content in use\r\n </div>\r\n <div className=\"card-body\">\r\n <Grid data={rowData} filterable={false} pageable={true} sortable={true} scrollable=\"none\" >\r\n <GridColumn headerClassName=\"bg-light text-dark\" field=\"vendorCourseContentName\" title=\"Vendor Course Content Name\" />\r\n </Grid>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { guid, classNames, dispatchEvent, getTabIndex, createPropsContext, usePropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the PropsContext of the `RadioButton` component.\n * Used for global configuration of all `RadioButton` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var RadioButtonPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact RadioButton component]({% slug overview_radiobutton %}).\n *\n * Accepts properties of type [RadioButtonProps]({% slug api_inputs_radiobuttonprops %}).\n * Obtaining the `ref` returns an object of type [RadioButtonHandle]({% slug api_inputs_radiobuttonhandle %}).\n */\nexport var RadioButton = React.forwardRef(function (directProps, target) {\n validatePackage(packageMetadata);\n var props = usePropsContext(RadioButtonPropsContext, directProps);\n var ariaDescribedBy = props.ariaDescribedBy, checked = props.checked, children = props.children, className = props.className, disabled = props.disabled, id = props.id, label = props.label, labelPlacement = props.labelPlacement, name = props.name, style = props.style, tabIndex = props.tabIndex, value = props.value, valid = props.valid, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, others = __rest(props, [\"ariaDescribedBy\", \"checked\", \"children\", \"className\", \"disabled\", \"id\", \"label\", \"labelPlacement\", \"name\", \"style\", \"tabIndex\", \"value\", \"valid\", \"onChange\", \"onFocus\", \"onBlur\"]);\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n var getImperativeHandle = React.useCallback(function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); }, [focusElement]);\n React.useImperativeHandle(target, getImperativeHandle);\n var calculatedId = React.useMemo(function () { return guid(); }, []);\n var handleChange = React.useCallback(function (event) {\n dispatchEvent(onChange, event, getImperativeHandle(), { value: value });\n }, [onChange, value, disabled]);\n var handleFocus = React.useCallback(function (event) {\n if (onFocus && !disabled) {\n dispatchEvent(onFocus, event, getImperativeHandle(), undefined);\n }\n }, [onFocus, disabled]);\n var handleBlur = React.useCallback(function (event) {\n if (onBlur && !disabled) {\n dispatchEvent(onBlur, event, getImperativeHandle(), undefined);\n }\n }, [onBlur, disabled]);\n var inputProps = __assign({ type: 'radio', id: id || calculatedId, name: name, className: classNames({\n 'k-radio': true,\n 'k-state-invalid': valid === false,\n 'k-invalid': valid === false\n }, className), ref: elementRef, disabled: disabled, tabIndex: getTabIndex(tabIndex, disabled), checked: checked, style: style, 'aria-describedby': ariaDescribedBy, value: value, onChange: handleChange, onFocus: handleFocus, onBlur: handleBlur }, others);\n var radioButtonLabel = (React.createElement(React.Fragment, null, label !== undefined ? (React.createElement(\"label\", { className: 'k-radio-label', htmlFor: id || calculatedId, style: { userSelect: 'none' }, \"aria-label\": label }, label)) : null));\n var radio = React.createElement(\"input\", __assign({}, inputProps));\n return (labelPlacement === 'before'\n ? (React.createElement(React.Fragment, null,\n radioButtonLabel,\n radio,\n children)) : (React.createElement(React.Fragment, null,\n radio,\n radioButtonLabel,\n children)));\n});\nRadioButton.propTypes = {\n ariaDescribedBy: PropTypes.string,\n checked: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n label: PropTypes.string,\n labelPlacement: PropTypes.string,\n name: PropTypes.string,\n style: PropTypes.object,\n tabIndex: PropTypes.number,\n value: PropTypes.any,\n valid: PropTypes.bool,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n};\nRadioButton.displayName = 'KendoRadioButton';\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var DialogTitleBar = function (_a) {\n var children = _a.children, onCloseButtonClick = _a.onCloseButtonClick, id = _a.id, closeIcon = _a.closeIcon;\n return (React.createElement(\"div\", { className: \"k-window-titlebar k-dialog-titlebar k-header\", id: id },\n React.createElement(\"div\", { className: \"k-window-title k-dialog-title\" }, children),\n React.createElement(\"div\", { className: \"k-window-actions k-dialog-actions\" }, closeIcon &&\n React.createElement(\"a\", { href: \"#\", role: \"button\", \"aria-label\": \"Close\", onClick: onCloseButtonClick, className: \"k-button k-flat k-button-icon k-window-action k-dialog-action k-dialog-close\" },\n React.createElement(\"span\", { className: \"k-icon k-i-x\" })))));\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Returns the action bar of the Dialog.\n *\n * @returns React.ReactElement\n */\nexport var DialogActionsBar = function (props) {\n var _a = props.layout, layout = _a === void 0 ? defaultProps.layout : _a, children = props.children;\n var wrapperClasses = classNames('k-dialog-buttongroup', 'k-actions', 'k-hstack', {\n 'k-justify-content-start': layout === 'start',\n 'k-justify-content-center': layout === 'center',\n 'k-justify-content-end': layout === 'end',\n 'k-justify-content-stretch': layout === 'stretched'\n });\n return (React.createElement(\"div\", { className: wrapperClasses }, children));\n};\nDialogActionsBar.propTypes = {\n children: PropTypes.any,\n layout: PropTypes.oneOf(['start', 'center', 'end', 'stretched'])\n};\nvar defaultProps = {\n layout: 'stretched'\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-dialogs',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642516467,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","/** @hidden */\nexport var DATA_DIALOGS_ID = 'data-windowid';\n/** @hidden */\nexport var DEFAULT_DIALOGS_ZINDEX = 10002;\n/** @hidden */\nexport var ZINDEX_DIALOGS_STEP = 2;\n/** @hidden */\nexport var DIALOGS_SELECTOR = '.k-window:not(.k-dialog), .k-dialog-wrapper';\n","import { DATA_DIALOGS_ID, DIALOGS_SELECTOR, ZINDEX_DIALOGS_STEP } from './constants';\n/** @hidden */\nexport var getMaxZIndex = function (currentZIndex, currentDocument, currentWindowId) {\n var maxZindex = currentZIndex;\n if (currentDocument && currentDocument.defaultView) {\n var allWindows = currentDocument.querySelectorAll(DIALOGS_SELECTOR);\n var zIndexChanged_1 = false;\n allWindows.forEach(function (KRwindow) {\n var computedStyle = currentDocument.defaultView.getComputedStyle(KRwindow, null);\n var dataId = KRwindow.getAttribute(DATA_DIALOGS_ID);\n if (dataId !== currentWindowId && computedStyle.zIndex !== null) {\n var zIndexValue = parseInt(computedStyle.zIndex, 10);\n if (zIndexValue >= maxZindex) {\n maxZindex = zIndexValue;\n zIndexChanged_1 = true;\n }\n }\n });\n return zIndexChanged_1 ? (maxZindex + ZINDEX_DIALOGS_STEP) : maxZindex;\n }\n return maxZindex;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { DialogTitleBar } from './DialogTitleBar';\nimport { DialogActionsBar } from './DialogActionsBar';\nimport { guid, dispatchEvent, Keys, canUseDOM, ZIndexContext, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport { getMaxZIndex } from './utils';\nimport { DATA_DIALOGS_ID, DEFAULT_DIALOGS_ZINDEX, ZINDEX_DIALOGS_STEP } from './constants';\n// tslint:enable:max-line-length\n/** @hidden */\nvar DialogWithoutContext = /** @class */ (function (_super) {\n __extends(DialogWithoutContext, _super);\n function DialogWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this._id = guid();\n _this.titleId = _this.generateTitleId();\n /**\n * @hidden\n */\n _this.onCloseDialog = function (event) {\n event.preventDefault();\n dispatchEvent(_this.props.onClose, event, _this, undefined);\n };\n /**\n * @hidden\n */\n _this.onKeyDown = function (event) {\n if (event.keyCode === Keys.esc && _this.props.onClose) {\n event.preventDefault();\n _this.onCloseDialog(event);\n }\n var kDialog = _this.element;\n if (kDialog && (event.keyCode === Keys.tab)) {\n var focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var focusableContent = kDialog.querySelectorAll(focusableElements);\n var firstFocusableElement = focusableContent[0];\n var lastFocusableElement = focusableContent[focusableContent.length - 1];\n var currentDocument = _this.getDocument();\n if (event.shiftKey) {\n if (currentDocument && currentDocument.activeElement === firstFocusableElement) {\n lastFocusableElement.focus();\n event.preventDefault();\n }\n }\n else {\n if (currentDocument && currentDocument.activeElement === lastFocusableElement) {\n firstFocusableElement.focus();\n event.preventDefault();\n }\n }\n }\n };\n _this.getCurrentZIndex = function () {\n if (!_this.state) {\n return _this.context ? _this.context : DEFAULT_DIALOGS_ZINDEX;\n }\n return _this.state.zIndex > (_this.context ? _this.context + ZINDEX_DIALOGS_STEP : 0) ? _this.state.zIndex : _this.context + ZINDEX_DIALOGS_STEP;\n };\n _this.getDocument = function () {\n return _this.props.appendTo ? _this.props.appendTo.ownerDocument : document;\n };\n validatePackage(packageMetadata);\n _this.state = {\n zIndex: getMaxZIndex(_this.getCurrentZIndex(), _this.getDocument(), _this._id)\n };\n return _this;\n }\n /**\n * @hidden\n */\n DialogWithoutContext.prototype.componentDidMount = function () {\n if (this.element) {\n if (this.props.autoFocus) {\n this.element.focus();\n }\n }\n };\n /**\n * @hidden\n */\n DialogWithoutContext.prototype.render = function () {\n var _this = this;\n var _a;\n var id = this.props.id !== undefined ? this.props.id : this.titleId;\n var _b = this.props, title = _b.title, width = _b.width, height = _b.height, children = _b.children, minWidth = _b.minWidth, dir = _b.dir, style = _b.style, contentStyle = _b.contentStyle;\n var elementsArray = React.Children.toArray(children);\n var content = this.getContent(elementsArray);\n var actions = this.getActionBar(elementsArray);\n var aria = title ? {\n 'aria-labelledby': id\n } : null;\n var closeIcon = this.props.closeIcon !== undefined ? this.props.closeIcon : true;\n var currentZIndex = this.getCurrentZIndex();\n var dialogElement = (React.createElement(ZIndexContext.Provider, { value: currentZIndex },\n React.createElement(\"div\", __assign({}, (_a = {}, _a[DATA_DIALOGS_ID] = this._id, _a), { className: 'k-dialog-wrapper' + (this.props.className ? ' ' + this.props.className : ''), onKeyDown: this.onKeyDown, tabIndex: 0, dir: dir, style: __assign({ zIndex: currentZIndex }, style), ref: (function (el) { return _this.element = el; }) }),\n React.createElement(\"div\", { className: \"k-overlay\" }),\n React.createElement(\"div\", __assign({}, aria, { className: \"k-widget k-window k-dialog\", role: \"dialog\", style: { width: width, height: height, minWidth: minWidth } }),\n this.props.title &&\n React.createElement(DialogTitleBar, { closeIcon: closeIcon, onCloseButtonClick: this.onCloseDialog, id: id }, title),\n React.createElement(\"div\", { className: \"k-window-content k-dialog-content\", style: contentStyle }, content),\n actions))));\n if (canUseDOM) {\n return ReactDOM.createPortal(dialogElement, this.props.appendTo || document.body);\n }\n return null;\n };\n DialogWithoutContext.prototype.getActionBar = function (children) {\n return children.filter(function (child) { return child && child.type === DialogActionsBar; });\n };\n DialogWithoutContext.prototype.getContent = function (children) {\n return children.filter(function (child) {\n return child && child.type !== DialogActionsBar;\n });\n };\n DialogWithoutContext.prototype.generateTitleId = function () {\n return 'dialog-title' + this._id;\n };\n DialogWithoutContext.displayName = 'Dialog';\n /**\n * @hidden\n */\n DialogWithoutContext.propTypes = {\n title: PropTypes.any,\n id: PropTypes.string,\n dir: PropTypes.string,\n style: PropTypes.object,\n closeIcon: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n autoFocus: PropTypes.bool\n };\n /**\n * @hidden\n */\n DialogWithoutContext.defaultProps = {\n autoFocus: false\n };\n /**\n * @hidden\n */\n DialogWithoutContext.contextType = ZIndexContext;\n return DialogWithoutContext;\n}(React.Component));\n/**\n * Represents the PropsContext of the `Dialog` component.\n * Used for global configuration of all `Dialog` instances.\n */\nexport var DialogPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact Dialog component]({% slug overview_dialog %}).\n *\n * Accepts properties of type [DialogProps]({% slug api_dialogs_dialogprops %}).\n * Obtaining the `ref` returns an object of type [DialogHandle]({% slug api_dialogs_dialoghandle %}).\n */\nexport var Dialog = withPropsContext(DialogPropsContext, DialogWithoutContext);\nDialog.displayName = 'KendoReactDialog';\n","import { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n getAllSetupSchool: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/SetupSchool'\r\n })\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Button, Form} from 'react-bootstrap';\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport { FormMode,IDropDownValue } from '../../services/Utility'\r\nimport ILicenseAllocation from '../../model/ILicenseAllocation';\r\nimport { RadioButton } from '@progress/kendo-react-inputs';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { filterBy, CompositeFilterDescriptor, } from \"@progress/kendo-data-query\";\r\nimport schoolListService from '../../services/SchoolListService'\r\n\r\ninterface IVendorFormContent {\r\n id?: number\r\n location:string\r\n vendorlist:IDropDownValue[]\r\n vendorAllocatedlist:IDropDownValue[]\r\n formmode:FormMode\r\n datasource: any\r\n isEditable?: boolean | false\r\n onSave: (event: React.MouseEvent<HTMLElement,MouseEvent>,actionType: FormMode, data:ILicenseAllocation) => void\r\n}\r\nexport default function VendorCrudContent(props:IVendorFormContent) {\r\n const mountedRef = useRef(true);\r\n\r\n const [originalSchoolList, setOriginalSchoolList] = useState<IDropDownValue[]>([]);\r\n const [schoolListTo, setSchoolListTo] = useState<IDropDownValue[]>([]);\r\n const [vendorList, setVendorList] = useState<IDropDownValue[]>([]);\r\n const [vendorAllocatedList, setVendorAllocatedList] = useState<IDropDownValue[]>([]);\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [formValue, setFormValue] = useState<ILicenseAllocation>({\r\n id:0,\r\n locationCode:'',\r\n fromLocationCode: '',\r\n toLocationCode:'',\r\n vendorId: 0,\r\n vendorName: '',\r\n quantityAllocated: 0,\r\n quantityAssigned: 0,\r\n quantityCap: 0\r\n });\r\n\r\n const getAllSchools = () =>{\r\n schoolListService.getAllSetupSchool().then(res=>{\r\n let dropDownData = res.data.map((sl: any) => ({\r\n id: sl.locationCode,\r\n text: sl.locationCode + ' -- ' + sl.schoolName\r\n }));\r\n setSchoolListTo(dropDownData)\r\n setOriginalSchoolList(dropDownData)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n setFormMode(props.formmode)\r\n getAllSchools()\r\n setVendorList(props.vendorlist)\r\n setVendorAllocatedList(props.vendorAllocatedlist)\r\n setFormValue({ ...formValue, locationCode:props.location,fromLocationCode:props.location});\r\n\r\n return () => { mountedRef.current = false }\r\n }, []);\r\n\r\n const handleChange = (event: any) => {\r\n const target = event.target //as HTMLSelectElement\r\n\r\n setFormValue({ ...formValue, [target.name]: target.value });\r\n\r\n };\r\n const schoolChange = (event: DropDownListChangeEvent) => {\r\n const target = event.target //as HTMLSelectElement\r\n setFormValue({ ...formValue, toLocationCode: target.value.id });\r\n\r\n };\r\n const vendorChange = (event: DropDownListChangeEvent) => {\r\n const target = event.target //as HTMLSelectElement\r\n setFormValue({ ...formValue, vendorName: target.value.text, vendorId: target.value.id });\r\n\r\n };\r\n\r\n const [errors, setErrors] = useState({\r\n toLocationCodeError: '',\r\n vendorNameError: '',\r\n licenseQuantityError: '',\r\n })\r\n const validate = () => {\r\n let error = {\r\n toLocationCodeError: '',\r\n vendorNameError: '',\r\n licenseQuantityError: '',\r\n };\r\n\r\n if (formMode == FormMode.New) {\r\n if (!formValue.vendorName) { error.vendorNameError = \"Vendor Name is required\"; }\r\n\r\n if (!formValue.quantityAllocated) { error.licenseQuantityError = \"Enter Quantity Purchased\"; }\r\n\r\n setErrors(error);\r\n if (error.vendorNameError || error.licenseQuantityError) {\r\n return false;\r\n }\r\n }\r\n else if (formMode == FormMode.Transfer) {\r\n if (!formValue.toLocationCode) { error.toLocationCodeError = \"Receiving school is required\"; }\r\n if (!formValue.vendorName) { error.vendorNameError = \"Vendor Name is required\"; }\r\n\r\n if (!formValue.quantityAllocated) { error.licenseQuantityError = \"Enter Quantity Purchased\"; }\r\n\r\n setErrors(error);\r\n if (error.vendorNameError ||error.licenseQuantityError||error.toLocationCodeError) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n const onFormAction = (Id: number, actionType: FormMode) => {\r\n setErrors({\r\n toLocationCodeError: '',\r\n vendorNameError: '',\r\n licenseQuantityError: '',\r\n });\r\n setFormValue({...formValue,\r\n id:0,\r\n toLocationCode:'',\r\n vendorId: 0,\r\n vendorName: '',\r\n quantityAllocated: 0,\r\n quantityAssigned: 0,\r\n quantityCap: 0\r\n });\r\n \r\n switch (actionType) {\r\n\r\n case FormMode.New:\r\n setFormMode(FormMode.New)\r\n\r\n //Clear Existing vlues\r\n break;\r\n case FormMode.Transfer:\r\n setFormMode(FormMode.Transfer)\r\n //Clear Existing vlues\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const onSave = (event: React.MouseEvent<HTMLElement>, actionType: FormMode) => {\r\n \r\n let formData:ILicenseAllocation ={\r\n id:Number(formValue.id),\r\n locationCode:formValue.locationCode,\r\n fromLocationCode: formValue.fromLocationCode,\r\n toLocationCode:formValue.toLocationCode,\r\n vendorId: Number(formValue.vendorId),\r\n vendorName: formValue.vendorName,\r\n quantityAllocated: Number(formValue.quantityAllocated),\r\n quantityAssigned: 0,\r\n quantityCap: Number(formValue.quantityCap)\r\n };\r\n\r\n switch (actionType) {\r\n case FormMode.New:\r\n // messageService.post(message).then(response => {\r\n // // Display Success message\r\n // })\r\n event.preventDefault();\r\n if (validate()) {\r\n\r\n props.onSave(event, FormMode.New,formData);\r\n }\r\n //Clear Existing vlues\r\n break;\r\n case FormMode.Transfer:\r\n // messageService.post(message).then(response => {\r\n // // Display Success message\r\n // })\r\n event.preventDefault();\r\n if (validate()) {\r\n\r\n props.onSave(event, FormMode.Transfer,formData);\r\n }\r\n //Clear Existing vlues\r\n break;\r\n default: {\r\n props.onSave(event, FormMode.None,formData);\r\n break;\r\n }\r\n }\r\n }\r\n const filterData = (filter: any) => {\r\n let data = originalSchoolList.slice();\r\n return filterBy(data, filter);\r\n }\r\n\r\n const filterChange = (event: any) => {\r\n let data = filterData(event.filter)\r\n onSchoolSearch(event, data);\r\n }\r\n\r\n const onSchoolSearch = (event: any, data: IDropDownValue[]) => {\r\n setSchoolListTo(data)\r\n}\r\n\r\n return (\r\n <div>\r\n {formMode == FormMode.New &&(\r\n\r\n <Dialog title={\"Manage Licenses\"} onClose={(e: any) => onSave(e, FormMode.None)}>\r\n\r\n <Form.Group>\r\n <Form.Label className=\"mr-2\"><RadioButton name=\"transferLicense\" checked={true} value='Add Licenses' onClick={(e) => { onFormAction(0, FormMode.New) }}> Add Licenses</RadioButton></Form.Label>\r\n <Form.Label><RadioButton name=\"transferLicense\" checked={false} value='Transfer Licenses' onClick={(e) => { onFormAction(0, FormMode.Transfer) }}> Transfer Licenses</RadioButton></Form.Label>\r\n </Form.Group>\r\n\r\n <Form>\r\n <Form.Group controlId=\"vendorName\">\r\n <Form.Label>Vendor</Form.Label>\r\n <DropDownList\r\n style={{ width: '100%' }}\r\n data={vendorList}\r\n textField=\"text\"\r\n onChange={vendorChange}\r\n />\r\n <Form.Text className=\"text-danger\">{errors.vendorNameError}</Form.Text>\r\n </Form.Group>\r\n\r\n <Form.Group controlId=\"quantityAllocated\">\r\n <Form.Label>Number of Licenses</Form.Label>\r\n <Form.Control type=\"number\" name=\"quantityAllocated\" value={formValue.quantityAllocated} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.licenseQuantityError}</Form.Text>\r\n </Form.Group>\r\n </Form>\r\n {/* </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </Modal.Footer>\r\n </Modal> */}\r\n <DialogActionsBar>\r\n <Button className=\"m-2\" variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </DialogActionsBar>\r\n </Dialog>\r\n )}\r\n {formMode== FormMode.Transfer&&(\r\n <Dialog title={\"Manage Licenses\"} onClose={(e: any) => onSave(e, FormMode.None)}>\r\n {/* <Modal backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Transfer} onHide={(e:any) => onSave(e, FormMode.None)}>\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Manage Licenses</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body> */}\r\n <Form.Group>\r\n <Form.Label className=\"mr-2\"><RadioButton name=\"transferLicense\" checked={false} value='Add Licenses' onClick={(e) => { onFormAction(0, FormMode.New) }}> Add Licenses</RadioButton></Form.Label>\r\n <Form.Label><RadioButton name=\"transferLicense\" checked={true} value='Transfer Licenses' onClick={(e) => { onFormAction(0, FormMode.Transfer) }}> Transfer Licenses</RadioButton></Form.Label>\r\n </Form.Group>\r\n <Form>\r\n <Form.Group controlId=\"schoolListTo\">\r\n <Form.Label>Receiving School</Form.Label>\r\n <DropDownList\r\n style={{ width: '100%' }}\r\n data={schoolListTo}\r\n textField=\"text\"\r\n filterable={true}\r\n onFilterChange={filterChange}\r\n onChange={schoolChange}\r\n />\r\n <Form.Text className=\"text-danger\">{errors.toLocationCodeError}</Form.Text>\r\n </Form.Group>\r\n\r\n <Form.Group controlId=\"vendorAllocatedList\">\r\n <Form.Label>Vendor</Form.Label>\r\n <DropDownList\r\n style={{ width: '100%' }}\r\n data={vendorAllocatedList}\r\n textField=\"text\"\r\n onChange={vendorChange}\r\n />\r\n <Form.Text className=\"text-danger\">{errors.vendorNameError}</Form.Text>\r\n </Form.Group>\r\n \r\n <Form.Group controlId=\"quantityAllocated\">\r\n <Form.Label>Number of Licenses</Form.Label>\r\n <Form.Control type=\"number\" name=\"quantityAllocated\" value={formValue.quantityAllocated} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.licenseQuantityError}</Form.Text>\r\n </Form.Group>\r\n </Form>\r\n {/* </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </Modal.Footer>\r\n </Modal> */}\r\n <DialogActionsBar>\r\n <Button className=\"m-2\" variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </DialogActionsBar>\r\n </Dialog>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Modal, Button, Form, Dropdown } from 'react-bootstrap';\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport { FormMode,IDropDownValue } from '../../services/Utility'\r\nimport ILicenseAllocation from '../../model/ILicenseAllocation';\r\nimport IVendorLicenseContent from '../../model/IVendorLicenseContent';\r\n\r\ninterface IVendorFormContent {\r\n id?: number\r\n location:string\r\n vendorlist:IDropDownValue[]\r\n formmode:FormMode\r\n datasource: IVendorLicenseContent\r\n isEditable?: boolean | false\r\n onVendorEditClose:(data:FormMode)=>void,\r\n onSave: (event: React.MouseEvent<HTMLElement,MouseEvent>,actionType: FormMode,data:ILicenseAllocation) => void\r\n}\r\nexport default function VendorEditContent(props:IVendorFormContent) {\r\n const mountedRef = useRef(true);\r\n const [vendorList, setVendorList] = useState<IDropDownValue>({\r\n id: props.datasource.vendorId.toString(),\r\n text:props.datasource.vendorName\r\n });\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [formValue, setFormValue] = useState<ILicenseAllocation>({\r\n id:0,\r\n locationCode:'',\r\n fromLocationCode: '',\r\n toLocationCode:'',\r\n vendorId: 0,\r\n vendorName: '',\r\n quantityAllocated: 0,\r\n quantityAssigned: 0,\r\n quantityCap: 0\r\n });\r\n\r\n useEffect(() => {\r\n setFormMode(props.formmode)\r\n setFormValue({ ...formValue,\r\n id:props.datasource.id,\r\n locationCode:props.location,\r\n vendorId: props.datasource.vendorId,\r\n vendorName: props.datasource.vendorName,\r\n quantityAllocated: props.datasource.totalLicenses,\r\n quantityAssigned: 0,\r\n quantityCap: props.datasource.totalLicenses\r\n });\r\n return () => { mountedRef.current = false }\r\n }, []);\r\n\r\n const handleChange = (event: any) => {\r\n const target = event.target //as HTMLSelectElement\r\n\r\n setFormValue({ ...formValue, [target.name]: [target.value] });\r\n };\r\n const vendorChange = (event: DropDownListChangeEvent) => {\r\n const target = event.target //as HTMLSelectElement\r\n setFormValue({ ...formValue, vendorName: target.value.text, vendorId: target.value.id });\r\n\r\n };\r\n\r\n const [errors, setErrors] = useState({\r\n vendorNameError: '',\r\n licenseQuantityError: '',\r\n })\r\n const validate = () => {\r\n let error = {\r\n vendorNameError: '',\r\n licenseQuantityError: '',\r\n };\r\n\r\n if (formMode == FormMode.New||formMode == FormMode.Edit) {\r\n if (!formValue.vendorName) { error.vendorNameError = \"Vendor Name is required\"; }\r\n\r\n if (!formValue.quantityAllocated||formValue.quantityAllocated==null) { error.licenseQuantityError = \"Total Licenses is required\"; }\r\n\r\n let assignedLicense = props.datasource.totalLicenses - props.datasource.availableLicenses\r\n\r\n if (formValue.quantityAllocated - assignedLicense < 0) { error.licenseQuantityError = `Total License can't be less than ${assignedLicense}`; }\r\n setErrors(error);\r\n if (error.vendorNameError || error.licenseQuantityError) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n const onSave = (event: React.MouseEvent<HTMLElement>, actionType: FormMode) => {\r\n \r\n let formData: ILicenseAllocation = {\r\n id:Number(formValue.id),\r\n locationCode:formValue.locationCode,\r\n fromLocationCode: '',\r\n toLocationCode:'',\r\n vendorId: Number(formValue.vendorId),\r\n vendorName: formValue.vendorName,\r\n quantityAllocated: Number(formValue.quantityAllocated),\r\n quantityAssigned: props.datasource.totalLicenses - props.datasource.availableLicenses,\r\n quantityCap: Number(formValue.quantityCap)\r\n };\r\n\r\n switch (actionType) {\r\n case FormMode.Edit:\r\n setFormMode(FormMode.Edit)\r\n // messageService.edit(message).then(response => {\r\n // // Display Success message\r\n // })\r\n event.preventDefault();\r\n if (validate()) {\r\n props.onSave(event, FormMode.Edit,formData);\r\n }\r\n break;\r\n default: {\r\n props.onSave(event, FormMode.None,formData);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <div>\r\n <Modal backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Edit} onHide={() => props.onVendorEditClose(FormMode.None) }>\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Edit Licenses</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <Form>\r\n <Form.Group controlId=\"vendorName\">\r\n <Form.Label>Vendor</Form.Label>\r\n <DropDownList\r\n disabled={true}\r\n style={{ width: '100%' }}\r\n defaultValue={vendorList} \r\n textField=\"text\"\r\n onChange={vendorChange}\r\n />\r\n <Form.Text className=\"text-danger\">{errors.vendorNameError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"quantityAllocated\">\r\n <Form.Label>Number of Licenses</Form.Label>\r\n <Form.Control type=\"number\" name=\"quantityAllocated\" value={formValue.quantityAllocated} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.licenseQuantityError}</Form.Text>\r\n </Form.Group>\r\n </Form>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </div>\r\n )\r\n}\r\n\r\n","export default function GridHierarchyExpand(props: any)\r\n{\r\n let dataItem = props.dataItem\r\n return(\r\n <td className=\"k-hierarchy-cell\">\r\n {dataItem.expanded \r\n ? <a onClick={() => props.expandChange(dataItem)} className=\"k-icon k-minus\"></a> \r\n : <a onClick={() => props.expandChange(dataItem)} className=\"k-icon k-plus\"></a>}\r\n </td>\r\n )\r\n}\r\n ","import React, { useState, useEffect, useRef } from 'react';\r\n\r\nexport default function IconGear() {\r\n\r\n return (\r\n <svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 90.3 64.9\">\r\n <title>Browser Window with Gear</title>\r\n <g transform=\"translate(-31.68 -738.224)\">\r\n <path d=\"M31.7,795.9v-50.5c0.2-0.8,0.4-1.6,0.6-2.4c1.2-3,4.2-5,7.5-4.8c7,0,14,0,21,0c17.8,0,35.6,0,53.4,0c4.2,0.1,7.6,3.5,7.7,7.7c0,16.5,0,33,0,49.5c0,4.3-3.5,7.7-7.8,7.7c-24.9,0-49.9,0-74.8,0 c-3.1,0.1-5.9-1.8-7-4.6C32.1,797.6,31.8,796.8,31.7,795.9z M105.1,797.8L105.1,797.8c0.1,0.1,0.2,0.1,0.3,0.1c2.9,0,5.9,0,8.8,0 c0.5,0,1-0.2,1.4-0.5c0.8-0.6,1.3-1.5,1.2-2.5c0-12.2,0-24.3,0-36.5c0-1.1,0-1.1-1-1.1H37.9c-0.1,0-0.3,0-0.4,0 c-0.4,0-0.6,0.1-0.6,0.6c0,0.1,0,0.2,0,0.4v36.3c0,0.2,0,0.3,0,0.5c-0.1,1.5,1.1,2.8,2.6,2.8c0.1,0,0.2,0,0.3,0c3.4,0,6.8,0,10.2,0\r\n h0.5c-0.2-0.2-0.5-0.4-0.7-0.5c-1.1-0.5-2.2-1-3.3-1.5c-0.9-0.4-1.5-1.3-1.4-2.3c0-0.5,0.1-1,0.3-1.4c0.9-2.3,1.9-4.6,2.8-6.9 c0.4-1.4,2-2.3,3.4-1.8c0.2,0,0.3,0.1,0.5,0.2c1.3,0.5,2.5,1,3.8,1.6c0.3,0.2,0.7,0.1,0.8-0.2c0,0,0,0,0,0c1.3-1.6,2.7-3.1,4.3-4.4 c0.6-0.5,0.6-0.5,0.3-1.2c-0.5-1.3-1.1-2.5-1.5-3.8c-0.6-1.3,0-2.9,1.4-3.5c0.1,0,0.1,0,0.2-0.1c2.4-1,4.7-2,7.1-2.9 c1.3-0.7,2.9-0.2,3.6,1.1c0.1,0.1,0.1,0.3,0.2,0.5c0.5,1.3,1,2.5,1.6,3.8c0.1,0.3,0.4,0.5,0.7,0.4c2.2-0.2,4.3-0.2,6.5,0 c0.3,0.1,0.7-0.1,0.7-0.4c0.5-1.3,1.1-2.5,1.6-3.8c0.4-1.4,2-2.2,3.4-1.8c0.2,0,0.3,0.1,0.4,0.2c2.4,1,4.7,2,7.1,2.9\r\n c1.4,0.5,2.2,2,1.7,3.4c0,0.1-0.1,0.2-0.1,0.3c-0.5,1.2-1,2.5-1.5,3.7c-0.3,0.7-0.3,0.7,0.3,1.2c1.6,1.3,3.1,2.8,4.4,4.4 c0.2,0.3,0.5,0.4,0.8,0.2c0,0,0,0,0,0c1.3-0.6,2.7-1.1,4-1.7c1.4-0.6,2.9,0.1,3.5,1.4c0,0,0,0,0,0c1,2.5,2.1,4.9,3.1,7.4 c0.2,0.4,0.2,0.9,0.2,1.4c-0.1,1-0.7,1.8-1.6,2.2c-1,0.5-2,0.9-3,1.3C105.7,797.5,105.4,797.6,105.1,797.8z M77.8,797.9 c4.1,0,8.2,0,12.2,0c0.6,0,0.7-0.1,0.4-0.6c-2.5-6.7-9.8-10.4-16.6-8.3c-4,1.1-7.3,4.1-8.6,8.1c-0.3,0.8-0.3,0.8,0.6,0.8\r\n L77.8,797.9z M90.8,749.1c0-2.4-1.9-4.4-4.3-4.4c-2.4,0-4.4,1.9-4.4,4.3l0,0c0,2.4,1.9,4.4,4.3,4.4 C88.8,753.5,90.7,751.5,90.8,749.1z M103.7,749.1c0,2.4,2,4.3,4.4,4.3c2.4,0,4.3-2,4.3-4.4c0-2.4-1.9-4.3-4.3-4.3 C105.7,744.7,103.7,746.6,103.7,749.1C103.7,749.1,103.7,749.1,103.7,749.1L103.7,749.1z M101.9,749.1c0-2.4-1.9-4.4-4.3-4.4 c-2.3,0-4.3,1.8-4.4,4.2c-0.1,2.4,1.7,4.5,4.1,4.6c2.4,0.1,4.5-1.7,4.6-4.1C101.9,749.3,101.9,749.2,101.9,749.1z\"/>\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\n","import React, { useState, useEffect, useReducer, useRef, useContext } from 'react'\r\nimport { Grid, GridColumn, GridToolbar } from '@progress/kendo-react-grid'\r\nimport IVendorLicenseContent from '../../model/IVendorLicenseContent'\r\nimport VendorDetail from '../../shared/VendorDetail'\r\nimport VendorContentDisplay from './VendorContentDisplay'\r\nimport VendorManageContent from './VendorManageContent'\r\nimport VendorEditContent from './VendorEditContent'\r\nimport GridHierarchyExpand from '../../shared/GridHierarchyExpand'\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport { Dropdown, DropdownButton } from 'react-bootstrap'\r\nimport licenseAllocationService from '../../services/LicenseAllocation'\r\nimport ILicenseAllocation from '../../model/ILicenseAllocation'\r\nimport IconBrowserGear from '../../assets/icons/icon-window-gear'\r\nimport axios, { AxiosResponse } from 'axios'\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\nimport LocalStorageService from '../../services/LocalStorage'\r\nimport { CheckIfNYCDOELicense } from '../../helpers/helper'\r\ninterface ILocationCode {\r\n id: string,\r\n}\r\nexport default function VendorContent(locationCode: ILocationCode) {\r\n const mountedRef = useRef(true);\r\n const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n const { orginalSchoolYear } = useContext(Year);\r\n //Page Load event - Get data from Service\r\n const [data, setRowData] = useState<IVendorLicenseContent[]>([]);\r\n const [editData, setEditData] = useState<IVendorLicenseContent>({\r\n id: 0,\r\n vendorId: 0,\r\n vendorName: '',\r\n vendorDescription: '',\r\n licenseModel: '',\r\n licenseType: '',\r\n availableLicenses: 0,\r\n totalLicenses: 0\r\n });\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n //Force re-render the child component on Expand\r\n const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n const [vendorList, setVendorList] = useState<IDropDownValue[]>([]);\r\n const [vendorAllocatedList, setVendorAllocatedList] = useState<IDropDownValue[]>([]);\r\n\r\n const [formValue, setFormValue] = useState<ILicenseAllocation>({\r\n id: 0,\r\n locationCode: '',\r\n fromLocationCode: '',\r\n toLocationCode: '',\r\n vendorId: 0,\r\n vendorName: '',\r\n quantityAllocated: 0,\r\n quantityAssigned: 0,\r\n quantityCap: 0\r\n });\r\n\r\n const getVendorDetail = () => {\r\n licenseAllocationService.getAllocatedVendorsDetail(locationCode.id, +orginalSchoolYear.id).then(response => {\r\n setRowData(response.data)\r\n data.map((item: any) => {\r\n item.expanded = false;\r\n item.isSelected = false\r\n return item;\r\n })\r\n let nonAllocatedVendor = vendorList\r\n nonAllocatedVendor = nonAllocatedVendor.filter(x => !response.data.filter((y: IVendorLicenseContent) => y.vendorId === +x.id).length)\r\n setVendorList(nonAllocatedVendor)\r\n })\r\n }\r\n useEffect(() => {\r\n if (locationCode.id && +orginalSchoolYear.id != 0) {\r\n axios.all([\r\n licenseAllocationService.getAllocatedVendorsDetail(locationCode.id, +orginalSchoolYear.id),\r\n licenseAllocationService.getNonAllocatedVendors(locationCode.id, +orginalSchoolYear.id),\r\n \r\n licenseAllocationService.getAllocatedVendors(locationCode.id, +orginalSchoolYear.id)\r\n ])\r\n .then(responseArray => {\r\n setRowData(responseArray[0].data)\r\n responseArray[0].data.map((item: any) => {\r\n item.expanded = false;\r\n item.isSelected = false\r\n return item;\r\n })\r\n\r\n let nonAllocatedVendorDropDownData = responseArray[1].data.map((vl: any) => ({\r\n id: vl.id,\r\n text: vl.vendorName\r\n }));\r\n setVendorList(nonAllocatedVendorDropDownData)\r\n let allocatedVendorDropDownData = responseArray[2].data.map((vl: any) => ({\r\n id: vl.id,\r\n text: vl.vendorName\r\n }));\r\n setVendorAllocatedList(allocatedVendorDropDownData)\r\n })\r\n setUserProfile(LocalStorageService.getUserProfile())\r\n }\r\n return () => { mountedRef.current = false }\r\n }, [locationCode.id, orginalSchoolYear.id]);\r\n\r\n //On click of expand this function will call\r\n const SubGridHost = (props: any) => {\r\n // feed data to below components, Call the service Based on the prop.Id\r\n return (\r\n <div>\r\n <VendorDetail data={props.dataItem} />\r\n <VendorContentDisplay locationCode={locationCode.id} vendorId={props.dataItem?.vendorId} />\r\n </div>\r\n )\r\n }\r\n\r\n const GridColumnHierarchyExpand = (props: any) => <GridHierarchyExpand {...props} expandChange={onGridExpand} />\r\n const onGridExpand = (dataItem: any) => {\r\n dataItem.expanded = !dataItem.expanded;\r\n forceUpdate();\r\n }\r\n const onFormAction = (vendor: any, actionType: FormMode) => {\r\n switch (actionType) {\r\n case FormMode.New:\r\n setFormMode(FormMode.New)\r\n\r\n break;\r\n case FormMode.Edit:\r\n setFormMode(FormMode.Edit)\r\n setEditData(vendor)\r\n\r\n break;\r\n case FormMode.Transfer:\r\n setFormMode(FormMode.Transfer)\r\n setEditData(vendor)\r\n\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n const vendorFormClose = (data: FormMode) => {\r\n setFormMode(data)\r\n }\r\n\r\n const onVendorSave = (event: any, actionType: FormMode, data: ILicenseAllocation) => {\r\n switch (actionType) {\r\n case FormMode.New:\r\n event.preventDefault();\r\n licenseAllocationService.post(data).then(response => {\r\n // Display Success message\r\n getVendorDetail();\r\n setFormMode(FormMode.None)\r\n }\r\n );\r\n //Clear Existing vlues\r\n break;\r\n case FormMode.Edit:\r\n event.preventDefault();\r\n licenseAllocationService.put(data).then(response => {\r\n // Display Success message\r\n getVendorDetail();\r\n setFormMode(FormMode.None)\r\n }\r\n\r\n );\r\n //Clear Existing vlues\r\n break;\r\n case FormMode.Transfer:\r\n event.preventDefault();\r\n licenseAllocationService.postTransfer(data).then(response => {\r\n // Display Success message\r\n getVendorDetail();\r\n setFormMode(FormMode.None)\r\n }\r\n\r\n );\r\n //Clear Existing vlues\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const MyCellComponent = (props : any) => {\r\n // Extract the necessary data from props\r\n const { dataItem } = props;\r\n \r\n // Use the extracted data to render the cell content\r\n if(!CheckIfNYCDOELicense(dataItem.licenseModel)){\r\n return (\r\n <td className=\"text-right\" style={{ overflow: 'visible' }}>\r\n <DropdownButton\r\n menuAlign=\"right\"\r\n title={<i className='fas fa-bars'></i>}\r\n id=\"dropdown-menu-align-right\"\r\n size=\"sm\"\r\n variant=\"outline-primary\"\r\n className=\"menu-bars\"\r\n >\r\n <Dropdown.Item onClick={() => { onFormAction(dataItem, FormMode.Edit) }}>Edit Licenses</Dropdown.Item>\r\n </DropdownButton>\r\n </td>\r\n );\r\n }\r\n\r\n else {\r\n return <td></td>\r\n }\r\n \r\n };\r\n \r\n return (\r\n <div>\r\n {\r\n (userProfile?.role?.roleName == 'System Administrator' && orginalSchoolYear.isCurrent != 0) ?\r\n <div className=\"text-right mb-2\">\r\n <button type=\"button\" className=\"btn btn-primary\" onClick={(e) => { onFormAction(0, FormMode.New) }}>\r\n <i className=\"fas fa-plus\"></i>\r\n </button>\r\n </div> : <div> </div>\r\n }\r\n {(formMode == FormMode.Transfer || formMode == FormMode.New) && <VendorManageContent location={locationCode.id} vendorlist={vendorList} vendorAllocatedlist={vendorAllocatedList} formmode={formMode} datasource={data} isEditable={false} onSave={onVendorSave} />} \r\n Note: Any changes in the number of Vendor Licenses will affect the iLearnNYC License count.\r\n <Grid\r\n data={data}\r\n detail={SubGridHost}\r\n expandField={'expanded'}\r\n scrollable={\"none\"}\r\n >\r\n <GridColumn field=\"expanded\" cell={GridColumnHierarchyExpand} title=' ' width={\"50px\"} />\r\n\r\n <GridColumn field=\"VendorInfo\" title=\"Vendor\" cell={\r\n props => (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className=\"svg-app-icon text-blue-gray mr-3\" style={{ \"height\": \"30px\" }}>\r\n <IconBrowserGear />\r\n </div>\r\n <div className=\"mb-0 h3\">{props.dataItem.vendorName}</div>\r\n </div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"AvailableLicense\" title=\"Available Licenses\"\r\n // Grid Header - center text\r\n headerCell={\r\n props => (\r\n <div className=\"text-center\">\r\n {props.title}\r\n </div>\r\n )}\r\n // Grid Cell - center text\r\n cell={\r\n props => (\r\n <td className=\"text-center\">\r\n <div>{!CheckIfNYCDOELicense(props.dataItem.licenseModel) ? props.dataItem.availableLicenses : 'unlimited'} </div>\r\n </td>\r\n )}\r\n />\r\n <GridColumn field=\"AvailableLicense\" title=\"Total Licenses\"\r\n // Grid Header - center text\r\n headerCell={\r\n props => (\r\n <div className=\"text-center\">\r\n {props.title}\r\n </div>\r\n )}\r\n // Grid Cell - center text\r\n cell={\r\n props => (\r\n <td className=\"text-center\">\r\n <div>{ props.dataItem.licenseModel != \"Unlimited use of catalog for unlimited users\" ? props.dataItem.totalLicenses : 'unlimited'}</div>\r\n </td>\r\n )}\r\n />\r\n {\r\n (userProfile?.role?.roleName == 'System Administrator' && orginalSchoolYear.isCurrent != 0 ) ?\r\n <GridColumn field=\"id\" title=\" \" cell={MyCellComponent\r\n } /> : <div></div>\r\n }\r\n </Grid>\r\n {formMode == FormMode.Edit && <VendorEditContent location={locationCode.id} vendorlist={vendorList} formmode={formMode} datasource={editData} isEditable={true} onVendorEditClose={vendorFormClose} onSave={onVendorSave} />}\r\n </div>\r\n )\r\n}","import { useMemo, useRef } from 'react';\nimport useMounted from './useMounted';\nimport useWillUnmount from './useWillUnmount';\n\n/*\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox store the\n * delay as a 32-bit signed integer internally. This causes an integer overflow\n * when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * via: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout\n */\nconst MAX_DELAY_MS = 2 ** 31 - 1;\nfunction setChainedTimeout(handleRef, fn, timeoutAtMs) {\n const delayMs = timeoutAtMs - Date.now();\n handleRef.current = delayMs <= MAX_DELAY_MS ? setTimeout(fn, delayMs) : setTimeout(() => setChainedTimeout(handleRef, fn, timeoutAtMs), MAX_DELAY_MS);\n}\n\n/**\n * Returns a controller object for setting a timeout that is properly cleaned up\n * once the component unmounts. New timeouts cancel and replace existing ones.\n *\n *\n *\n * ```tsx\n * const { set, clear } = useTimeout();\n * const [hello, showHello] = useState(false);\n * //Display hello after 5 seconds\n * set(() => showHello(true), 5000);\n * return (\n * <div className=\"App\">\n * {hello ? <h3>Hello</h3> : null}\n * </div>\n * );\n * ```\n */\nexport default function useTimeout() {\n const isMounted = useMounted();\n\n // types are confused between node and web here IDK\n const handleRef = useRef();\n useWillUnmount(() => clearTimeout(handleRef.current));\n return useMemo(() => {\n const clear = () => clearTimeout(handleRef.current);\n function set(fn, delayMs = 0) {\n if (!isMounted()) return;\n clear();\n if (delayMs <= MAX_DELAY_MS) {\n // For simplicity, if the timeout is short, just set a normal timeout.\n handleRef.current = setTimeout(fn, delayMs);\n } else {\n setChainedTimeout(handleRef, fn, Date.now() + delayMs);\n }\n }\n return {\n set,\n clear,\n handleRef\n };\n }, []);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { placements } from './popper';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\n\n/**\n * Built on top of `Popper.js`, the overlay component is\n * great for custom tooltip overlays.\n */\nvar Overlay = /*#__PURE__*/React.forwardRef(function (props, outerRef) {\n var flip = props.flip,\n offset = props.offset,\n placement = props.placement,\n _props$containerPaddi = props.containerPadding,\n containerPadding = _props$containerPaddi === void 0 ? 5 : _props$containerPaddi,\n _props$popperConfig = props.popperConfig,\n popperConfig = _props$popperConfig === void 0 ? {} : _props$popperConfig,\n Transition = props.transition;\n\n var _useCallbackRef = useCallbackRef(),\n rootElement = _useCallbackRef[0],\n attachRef = _useCallbackRef[1];\n\n var _useCallbackRef2 = useCallbackRef(),\n arrowElement = _useCallbackRef2[0],\n attachArrowRef = _useCallbackRef2[1];\n\n var mergedRef = useMergedRefs(attachRef, outerRef);\n var container = useWaitForDOMRef(props.container);\n var target = useWaitForDOMRef(props.target);\n\n var _useState = useState(!props.show),\n exited = _useState[0],\n setExited = _useState[1];\n\n var _usePopper = usePopper(target, rootElement, mergeOptionsWithPopperConfig({\n placement: placement,\n enableEvents: !!props.show,\n containerPadding: containerPadding || 5,\n flip: flip,\n offset: offset,\n arrowElement: arrowElement,\n popperConfig: popperConfig\n })),\n styles = _usePopper.styles,\n attributes = _usePopper.attributes,\n popper = _objectWithoutPropertiesLoose(_usePopper, [\"styles\", \"attributes\"]);\n\n if (props.show) {\n if (exited) setExited(false);\n } else if (!props.transition && !exited) {\n setExited(true);\n }\n\n var handleHidden = function handleHidden() {\n setExited(true);\n\n if (props.onExited) {\n props.onExited.apply(props, arguments);\n }\n }; // Don't un-render the overlay while it's transitioning out.\n\n\n var mountOverlay = props.show || Transition && !exited;\n useRootClose(rootElement, props.onHide, {\n disabled: !props.rootClose || props.rootCloseDisabled,\n clickTrigger: props.rootCloseEvent\n });\n\n if (!mountOverlay) {\n // Don't bother showing anything if we don't have to.\n return null;\n }\n\n var child = props.children(_extends({}, popper, {\n show: !!props.show,\n props: _extends({}, attributes.popper, {\n style: styles.popper,\n ref: mergedRef\n }),\n arrowProps: _extends({}, attributes.arrow, {\n style: styles.arrow,\n ref: attachArrowRef\n })\n }));\n\n if (Transition) {\n var onExit = props.onExit,\n onExiting = props.onExiting,\n onEnter = props.onEnter,\n onEntering = props.onEntering,\n onEntered = props.onEntered;\n child = /*#__PURE__*/React.createElement(Transition, {\n \"in\": props.show,\n appear: true,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, child);\n }\n\n return container ? /*#__PURE__*/ReactDOM.createPortal(child, container) : null;\n});\nOverlay.displayName = 'Overlay';\nOverlay.propTypes = {\n /**\n * Set the visibility of the Overlay\n */\n show: PropTypes.bool,\n\n /** Specify where the overlay element is positioned in relation to the target element */\n placement: PropTypes.oneOf(placements),\n\n /**\n * A DOM Element, Ref to an element, or function that returns either. The `target` element is where\n * the overlay is positioned relative to.\n */\n target: PropTypes.any,\n\n /**\n * A DOM Element, Ref to an element, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: PropTypes.any,\n\n /**\n * Enables the Popper.js `flip` modifier, allowing the Overlay to\n * automatically adjust it's placement in case of overlap with the viewport or toggle.\n * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n */\n flip: PropTypes.bool,\n\n /**\n * A render prop that returns an element to overlay and position. See\n * the [react-popper documentation](https://github.com/FezVrasta/react-popper#children) for more info.\n *\n * @type {Function ({\n * show: boolean,\n * placement: Placement,\n * update: () => void,\n * forceUpdate: () => void,\n * props: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * aria-labelledby: ?string\n * [string]: string | number,\n * },\n * arrowProps: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * [string]: string | number,\n * },\n * }) => React.Element}\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Control how much space there is between the edge of the boundary element and overlay.\n * A convenience shortcut to setting `popperConfig.modfiers.preventOverflow.padding`\n */\n containerPadding: PropTypes.number,\n\n /**\n * A set of popper options and props passed directly to react-popper's Popper component.\n */\n popperConfig: PropTypes.object,\n\n /**\n * Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay\n */\n rootClose: PropTypes.bool,\n\n /**\n * Specify event for toggling overlay\n */\n rootCloseEvent: PropTypes.oneOf(['click', 'mousedown']),\n\n /**\n * Specify disabled for disable RootCloseWrapper\n */\n rootCloseDisabled: PropTypes.bool,\n\n /**\n * A Callback fired by the Overlay when it wishes to be hidden.\n *\n * __required__ when `rootClose` is `true`.\n *\n * @type func\n */\n onHide: function onHide(props) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (props.rootClose) {\n var _PropTypes$func;\n\n return (_PropTypes$func = PropTypes.func).isRequired.apply(_PropTypes$func, [props].concat(args));\n }\n\n return PropTypes.func.apply(PropTypes, [props].concat(args));\n },\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component\n * used to animate the overlay as it changes visibility.\n */\n // @ts-ignore\n transition: PropTypes.elementType,\n\n /**\n * Callback fired before the Overlay transitions in\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired as the Overlay begins to transition in\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the Overlay finishes transitioning in\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired right before the Overlay transitions out\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired as the Overlay begins to transition out\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the Overlay finishes transitioning out\n */\n onExited: PropTypes.func\n};\nexport default Overlay;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"transition\", \"popperConfig\"],\n _excluded2 = [\"props\", \"arrowProps\", \"show\", \"update\", \"forceUpdate\", \"placement\", \"state\"];\nimport React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport BaseOverlay from 'react-overlays/Overlay';\nimport safeFindDOMNode from 'react-overlays/safeFindDOMNode';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nimport Fade from './Fade';\nvar defaultProps = {\n transition: Fade,\n rootClose: false,\n show: false,\n placement: 'top'\n};\n\nfunction wrapRefs(props, arrowProps) {\n var ref = props.ref;\n var aRef = arrowProps.ref;\n\n props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n return ref(safeFindDOMNode(r));\n });\n\n arrowProps.ref = aRef.__wrapped || (aRef.__wrapped = function (r) {\n return aRef(safeFindDOMNode(r));\n });\n}\n\nfunction Overlay(_ref) {\n var overlay = _ref.children,\n transition = _ref.transition,\n _ref$popperConfig = _ref.popperConfig,\n popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig,\n outerProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var popperRef = useRef({});\n\n var _usePopperMarginModif = usePopperMarginModifiers(),\n ref = _usePopperMarginModif[0],\n marginModifiers = _usePopperMarginModif[1];\n\n var actualTransition = transition === true ? Fade : transition || null;\n return /*#__PURE__*/React.createElement(BaseOverlay, _extends({}, outerProps, {\n ref: ref,\n popperConfig: _extends({}, popperConfig, {\n modifiers: marginModifiers.concat(popperConfig.modifiers || [])\n }),\n transition: actualTransition\n }), function (_ref2) {\n var _state$modifiersData$;\n\n var overlayProps = _ref2.props,\n arrowProps = _ref2.arrowProps,\n show = _ref2.show,\n update = _ref2.update,\n _ = _ref2.forceUpdate,\n placement = _ref2.placement,\n state = _ref2.state,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded2);\n\n wrapRefs(overlayProps, arrowProps);\n var popper = Object.assign(popperRef.current, {\n state: state,\n scheduleUpdate: update,\n placement: placement,\n outOfBoundaries: (state == null ? void 0 : (_state$modifiersData$ = state.modifiersData.hide) == null ? void 0 : _state$modifiersData$.isReferenceHidden) || false\n });\n if (typeof overlay === 'function') return overlay(_extends({}, props, overlayProps, {\n placement: placement,\n show: show\n }, !transition && show && {\n className: 'show'\n }, {\n popper: popper,\n arrowProps: arrowProps\n }));\n return /*#__PURE__*/React.cloneElement(overlay, _extends({}, props, overlayProps, {\n placement: placement,\n arrowProps: arrowProps,\n popper: popper,\n className: classNames(overlay.props.className, !transition && show && 'show'),\n style: _extends({}, overlay.props.style, overlayProps.style)\n }));\n });\n}\n\nOverlay.defaultProps = defaultProps;\nexport default Overlay;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"trigger\", \"overlay\", \"children\", \"popperConfig\", \"show\", \"defaultShow\", \"onToggle\", \"delay\", \"placement\", \"flip\"];\nimport contains from 'dom-helpers/contains';\nimport React, { cloneElement, useCallback, useRef } from 'react';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport safeFindDOMNode from 'react-overlays/safeFindDOMNode';\nimport warning from 'warning';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport Overlay from './Overlay';\n\nvar RefHolder = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(RefHolder, _React$Component);\n\n function RefHolder() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = RefHolder.prototype;\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return RefHolder;\n}(React.Component);\n\nfunction normalizeDelay(delay) {\n return delay && typeof delay === 'object' ? delay : {\n show: delay,\n hide: delay\n };\n} // Simple implementation of mouseEnter and mouseLeave.\n// React's built version is broken: https://github.com/facebook/react/issues/4251\n// for cases when the trigger is disabled and mouseOut/Over can cause flicker\n// moving from one child element to another.\n\n\nfunction handleMouseOverOut( // eslint-disable-next-line @typescript-eslint/no-shadow\nhandler, args, relatedNative) {\n var e = args[0];\n var target = e.currentTarget;\n var related = e.relatedTarget || e.nativeEvent[relatedNative];\n\n if ((!related || related !== target) && !contains(target, related)) {\n handler.apply(void 0, args);\n }\n}\n\nvar defaultProps = {\n defaultShow: false,\n trigger: ['hover', 'focus']\n};\n\nfunction OverlayTrigger(_ref) {\n var trigger = _ref.trigger,\n overlay = _ref.overlay,\n children = _ref.children,\n _ref$popperConfig = _ref.popperConfig,\n popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig,\n propsShow = _ref.show,\n _ref$defaultShow = _ref.defaultShow,\n defaultShow = _ref$defaultShow === void 0 ? false : _ref$defaultShow,\n onToggle = _ref.onToggle,\n propsDelay = _ref.delay,\n placement = _ref.placement,\n _ref$flip = _ref.flip,\n flip = _ref$flip === void 0 ? placement && placement.indexOf('auto') !== -1 : _ref$flip,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var triggerNodeRef = useRef(null);\n var timeout = useTimeout();\n var hoverStateRef = useRef('');\n\n var _useUncontrolledProp = useUncontrolledProp(propsShow, defaultShow, onToggle),\n show = _useUncontrolledProp[0],\n setShow = _useUncontrolledProp[1];\n\n var delay = normalizeDelay(propsDelay);\n\n var _ref2 = typeof children !== 'function' ? React.Children.only(children).props : {},\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick;\n\n var getTarget = useCallback(function () {\n return safeFindDOMNode(triggerNodeRef.current);\n }, []);\n var handleShow = useCallback(function () {\n timeout.clear();\n hoverStateRef.current = 'show';\n\n if (!delay.show) {\n setShow(true);\n return;\n }\n\n timeout.set(function () {\n if (hoverStateRef.current === 'show') setShow(true);\n }, delay.show);\n }, [delay.show, setShow, timeout]);\n var handleHide = useCallback(function () {\n timeout.clear();\n hoverStateRef.current = 'hide';\n\n if (!delay.hide) {\n setShow(false);\n return;\n }\n\n timeout.set(function () {\n if (hoverStateRef.current === 'hide') setShow(false);\n }, delay.hide);\n }, [delay.hide, setShow, timeout]);\n var handleFocus = useCallback(function () {\n handleShow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n onFocus == null ? void 0 : onFocus.apply(void 0, args);\n }, [handleShow, onFocus]);\n var handleBlur = useCallback(function () {\n handleHide();\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n onBlur == null ? void 0 : onBlur.apply(void 0, args);\n }, [handleHide, onBlur]);\n var handleClick = useCallback(function () {\n setShow(!show);\n if (onClick) onClick.apply(void 0, arguments);\n }, [onClick, setShow, show]);\n var handleMouseOver = useCallback(function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n handleMouseOverOut(handleShow, args, 'fromElement');\n }, [handleShow]);\n var handleMouseOut = useCallback(function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n handleMouseOverOut(handleHide, args, 'toElement');\n }, [handleHide]);\n var triggers = trigger == null ? [] : [].concat(trigger);\n var triggerProps = {};\n\n if (triggers.indexOf('click') !== -1) {\n triggerProps.onClick = handleClick;\n }\n\n if (triggers.indexOf('focus') !== -1) {\n triggerProps.onFocus = handleFocus;\n triggerProps.onBlur = handleBlur;\n }\n\n if (triggers.indexOf('hover') !== -1) {\n process.env.NODE_ENV !== \"production\" ? warning(triggers.length > 1, '[react-bootstrap] Specifying only the `\"hover\"` trigger limits the visibility of the overlay to just mouse users. Consider also including the `\"focus\"` trigger so that touch and keyboard only users can see the overlay as well.') : void 0;\n triggerProps.onMouseOver = handleMouseOver;\n triggerProps.onMouseOut = handleMouseOut;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, typeof children === 'function' ? children(_extends({}, triggerProps, {\n ref: triggerNodeRef\n })) : /*#__PURE__*/React.createElement(RefHolder, {\n ref: triggerNodeRef\n }, /*#__PURE__*/cloneElement(children, triggerProps)), /*#__PURE__*/React.createElement(Overlay, _extends({}, props, {\n show: show,\n onHide: handleHide,\n flip: flip,\n placement: placement,\n popperConfig: popperConfig,\n target: getTarget\n }), overlay));\n}\n\nOverlayTrigger.defaultProps = defaultProps;\nexport default OverlayTrigger;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"placement\", \"className\", \"style\", \"children\", \"arrowProps\", \"popper\", \"show\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n placement: 'right'\n};\nvar Tooltip = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n placement = _ref.placement,\n className = _ref.className,\n style = _ref.style,\n children = _ref.children,\n arrowProps = _ref.arrowProps,\n _ = _ref.popper,\n _2 = _ref.show,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'tooltip');\n\n var _ref2 = (placement == null ? void 0 : placement.split('-')) || [],\n primaryPlacement = _ref2[0];\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n style: style,\n role: \"tooltip\",\n \"x-placement\": primaryPlacement,\n className: classNames(className, bsPrefix, \"bs-tooltip-\" + primaryPlacement)\n }, props), /*#__PURE__*/React.createElement(\"div\", _extends({\n className: \"arrow\"\n }, arrowProps)), /*#__PURE__*/React.createElement(\"div\", {\n className: bsPrefix + \"-inner\"\n }, children));\n});\nTooltip.defaultProps = defaultProps;\nTooltip.displayName = 'Tooltip';\nexport default Tooltip;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"variant\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n variant: null\n};\nvar CardImg = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n variant = _ref.variant,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'img' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref,\n className: classNames(variant ? prefix + \"-\" + variant : prefix, className)\n }, props));\n});\nCardImg.displayName = 'CardImg';\nCardImg.defaultProps = defaultProps;\nexport default CardImg;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"bg\", \"text\", \"border\", \"body\", \"children\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardContext from './CardContext';\nimport CardImg from './CardImg';\nvar DivStyledAsH5 = divWithClassName('h5');\nvar DivStyledAsH6 = divWithClassName('h6');\nvar CardBody = createWithBsPrefix('card-body');\nvar CardTitle = createWithBsPrefix('card-title', {\n Component: DivStyledAsH5\n});\nvar CardSubtitle = createWithBsPrefix('card-subtitle', {\n Component: DivStyledAsH6\n});\nvar CardLink = createWithBsPrefix('card-link', {\n Component: 'a'\n});\nvar CardText = createWithBsPrefix('card-text', {\n Component: 'p'\n});\nvar CardHeader = createWithBsPrefix('card-header');\nvar CardFooter = createWithBsPrefix('card-footer');\nvar CardImgOverlay = createWithBsPrefix('card-img-overlay');\nvar defaultProps = {\n body: false\n};\nvar Card = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n bg = _ref.bg,\n text = _ref.text,\n border = _ref.border,\n body = _ref.body,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card');\n var cardContext = useMemo(function () {\n return {\n cardHeaderBsPrefix: prefix + \"-header\"\n };\n }, [prefix]);\n return /*#__PURE__*/React.createElement(CardContext.Provider, {\n value: cardContext\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, prefix, bg && \"bg-\" + bg, text && \"text-\" + text, border && \"border-\" + border)\n }), body ?\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(CardBody, null, children) : children));\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nCard.Img = CardImg;\nCard.Title = CardTitle;\nCard.Subtitle = CardSubtitle;\nCard.Body = CardBody;\nCard.Link = CardLink;\nCard.Text = CardText;\nCard.Header = CardHeader;\nCard.Footer = CardFooter;\nCard.ImgOverlay = CardImgOverlay;\nexport default Card;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _excluded = [\"bsPrefix\", \"size\", \"hasValidation\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar InputGroupAppend = createWithBsPrefix('input-group-append');\nvar InputGroupPrepend = createWithBsPrefix('input-group-prepend');\nvar InputGroupText = createWithBsPrefix('input-group-text', {\n Component: 'span'\n});\n\nvar InputGroupCheckbox = function InputGroupCheckbox(props) {\n return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"checkbox\"\n }, props)));\n};\n\nvar InputGroupRadio = function InputGroupRadio(props) {\n return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"radio\"\n }, props)));\n};\n\n/**\n *\n * @property {InputGroupAppend} Append\n * @property {InputGroupPrepend} Prepend\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\nvar InputGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n size = _ref.size,\n hasValidation = _ref.hasValidation,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix, size && bsPrefix + \"-\" + size, hasValidation && 'has-validation')\n }));\n});\nInputGroup.displayName = 'InputGroup';\nInputGroup.Text = InputGroupText;\nInputGroup.Radio = InputGroupRadio;\nInputGroup.Checkbox = InputGroupCheckbox;\nInputGroup.Append = InputGroupAppend;\nInputGroup.Prepend = InputGroupPrepend;\nexport default InputGroup;","type CourseIconType = {\r\n courseOrginType: string;\r\n merge: Number;\r\n courseType: string;\r\n};\r\n\r\nexport default function IconCourseEnvelop(props: CourseIconType) {\r\n if (props.merge === 1) {\r\n return (\r\n <svg version=\"1.1\" id=\"iconmonstr\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 23\">\r\n <path d=\"M29.1,0H2.8C1.2,0,0,1.2,0,2.8v17.4c0,1.5,1.2,2.8,2.8,2.8h26.3c1.5,0,2.8-1.2,2.8-2.8V2.8 C31.9,1.2,30.6,0,29.1,0z M30,20.1c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5c-0.5,0-0.9,0.4-0.9,0.9v1.8H2.8 c-0.5,0-0.9-0.4-0.9-0.9V2.8c0-0.5,0.4-0.9,0.9-0.9h26.3c0.5,0,0.9,0.4,0.9,0.9V20.1z\" />\r\n <path d=\"M13.4,5.2H5.5C5,5.3,4.7,5.6,4.7,6.1c0,0.5,0.4,0.8,0.8,0.8h7.9c0.5,0,0.8-0.4,0.8-0.9 C14.2,5.6,13.9,5.3,13.4,5.2z\" />\r\n <path d=\"M13.4,8.6H5.5C5,8.6,4.7,9,4.7,9.5c0,0.5,0.4,0.8,0.8,0.8h7.9c0.5,0,0.8-0.4,0.8-0.9C14.2,9,13.9,8.6,13.4,8.6 z\" />\r\n <path d=\"M13.4,12H5.5c-0.5,0-0.8,0.4-0.8,0.8s0.4,0.8,0.8,0.8h7.9c0.5,0,0.8-0.4,0.8-0.8S13.9,12,13.4,12z\" />\r\n <g>\r\n <path d=\"M19.3,8V6.9h6V8h1.5V6.9c0-0.8-0.7-1.5-1.5-1.5h-6c-0.8,0-1.5,0.7-1.5,1.5V8H19.3z\" />\r\n <path d=\"M25.3,11v1.1h-6V11h-1.5v1.1c0,0.8,0.7,1.5,1.5,1.5h6c0.8,0,1.5-0.7,1.5-1.5V11H25.3z\" />\r\n <path d=\"M17.8,9.9V9.1c0-0.1,0.1-0.2,0.2-0.2h1.7V8c0-0.2,0.2-0.3,0.4-0.1l1.5,1.5c0.1,0.1,0.1,0.2,0,0.3L20,11.1 c-0.1,0.1-0.4,0-0.4-0.1v-0.9H18C17.9,10.1,17.8,10,17.8,9.9z\" />\r\n <path d=\"M26.8,9.1v0.8c0,0.1-0.1,0.2-0.2,0.2h-1.7V11c0,0.2-0.2,0.3-0.4,0.1L23,9.6c-0.1-0.1-0.1-0.2,0-0.3l1.5-1.5 c0.1-0.1,0.4,0,0.4,0.1v0.9h1.7C26.7,8.9,26.8,9,26.8,9.1z\" />\r\n </g>\r\n </svg>\r\n )\r\n }\r\n else {\r\n\r\n if (props.courseType && props.courseType.toLowerCase() === \"shared\") {\r\n return (\r\n <svg role=\"img\" aria-label=\"class board with s\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 23\">\r\n <path d=\"M29.1,0H2.8C1.2,0,0,1.2,0,2.8v17.4C0,21.7,1.2,23,2.8,23h26.3c1.5,0,2.8-1.2,2.8-2.8V2.8C31.9,1.2,30.6,0,29.1,0z M30,20.1 c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5c-0.5,0-0.9,0.4-0.9,0.9V21H2.8c-0.5,0-0.9-0.4-0.9-0.9V2.8 c0-0.5,0.4-0.9,0.9-0.9h26.3c0.5,0,0.9,0.4,0.9,0.9C30,2.8,30,20.1,30,20.1z\" />\r\n <path d=\"M15.9,5.2H5.5C5,5.3,4.7,5.6,4.7,6.1s0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.9C16.7,5.6,16.4,5.3,15.9,5.2z\" />\r\n <path d=\"M15.9,8.6H5.5C5,8.6,4.7,9,4.7,9.5s0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.9C16.7,9,16.4,8.6,15.9,8.6z\" />\r\n <path d=\"M15.9,12H5.5c-0.5,0-0.8,0.4-0.8,0.8s0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.8S16.4,12,15.9,12z\" />\r\n <path d=\"M22.3,9.2c0,0.3,0.1,0.4,0.2,0.6c0.2,0.2,0.5,0.3,1,0.3c0.3,0,0.5,0,0.7-0.1c0.3-0.1,0.5-0.3,0.5-0.6 c0-0.2-0.1-0.3-0.2-0.4c-0.2-0.1-0.4-0.2-0.8-0.3l-0.6-0.1c-0.6-0.1-1-0.3-1.2-0.4c-0.4-0.3-0.6-0.6-0.6-1.2c0-0.5,0.2-0.9,0.5-1.2 c0.4-0.3,0.9-0.5,1.6-0.5c0.6,0,1.1,0.2,1.5,0.5C25.4,6,25.6,6.4,25.6,7h-1.1c0-0.3-0.2-0.6-0.4-0.7c-0.2-0.1-0.4-0.1-0.7-0.1 c-0.3,0-0.5,0.1-0.7,0.2c-0.2,0.1-0.3,0.3-0.3,0.5c0,0.2,0.1,0.3,0.3,0.4c0.1,0.1,0.4,0.1,0.7,0.2l1,0.2c0.4,0.1,0.7,0.2,1,0.4 c0.3,0.3,0.5,0.6,0.5,1.1c0,0.5-0.2,0.9-0.6,1.3c-0.4,0.3-0.9,0.5-1.6,0.5c-0.7,0-1.3-0.2-1.7-0.5c-0.4-0.3-0.6-0.8-0.6-1.3H22.3z\" />\r\n </svg>\r\n\r\n )\r\n }\r\n\r\n // Icon - when Course Created Manually\r\n else if (props.courseOrginType && props.courseOrginType.toLowerCase() === \"lmi\") {\r\n return (\r\n <svg version=\"1.1\" id=\"iconmonstr\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 23\">\r\n <title>Blackboard With M</title>\r\n <path d=\"M29.1,0H2.8C1.2,0,0,1.2,0,2.8v17.4c0,1.5,1.2,2.8,2.8,2.8h26.3c1.5,0,2.8-1.2,2.8-2.8 V2.8C31.9,1.2,30.6,0,29.1,0z M30,20.1c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5c-0.5,0-0.9,0.4-0.9,0.9v1.8H2.8 c-0.5,0-0.9-0.4-0.9-0.9V2.8c0-0.5,0.4-0.9,0.9-0.9h26.3c0.5,0,0.9,0.4,0.9,0.9V20.1z\" />\r\n <path d=\"M15.9,5.2H5.5C5,5.3,4.7,5.6,4.7,6.1c0,0.5,0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.9 C16.7,5.6,16.4,5.3,15.9,5.2z\" />\r\n <path d=\"M15.9,8.6H5.5C5,8.6,4.7,9,4.7,9.5c0,0.5,0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.9 C16.7,9,16.4,8.6,15.9,8.6z\" />\r\n <path d=\"M15.9,12H5.5c-0.5,0-0.8,0.4-0.8,0.8s0.4,0.8,0.8,0.8h10.4c0.5,0,0.8-0.4,0.8-0.8 S16.4,12,15.9,12z\" />\r\n\r\n <path d=\"M20.3,5.2h2.3l0.9,3.5l0.9-3.5h2.3V11h-1.4V6.6L24.2,11h-1.3l-1.1-4.4V11h-1.4V5.2z\" />\r\n </svg>\r\n )\r\n }\r\n\r\n\r\n\r\n else if (props.courseOrginType && props.courseOrginType.toLowerCase() === \"stars\") {\r\n return (\r\n <svg version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 23\">\r\n <path d=\"M29.2,0H2.7C1.2,0-0.1,1.3-0.1,2.8v17.5c0,1.5,1.3,2.8,2.8,2.8h26.5 c1.5,0,2.8-1.3,2.8-2.8V2.8C32,1.3,30.7,0,29.2,0z M30.1,20.3c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5 c-0.5,0-0.9,0.4-0.9,0.9v1.8H2.7c-0.5,0-0.9-0.4-0.9-0.9V2.8c0-0.5,0.4-0.9,0.9-0.9h26.5c0.5,0,0.9,0.4,0.9,0.9V20.3z\" />\r\n <path d=\"M15.9,5.3H5.5C5,5.3,4.6,5.7,4.6,6.1C4.6,6.6,5,7,5.5,7h10.5c0.5,0,0.8-0.4,0.8-0.9 C16.7,5.7,16.4,5.3,15.9,5.3z\" />\r\n <path d=\"M15.9,8.7H5.5C5,8.7,4.6,9.1,4.6,9.5c0,0.5,0.4,0.8,0.8,0.8h10.5c0.5,0,0.8-0.4,0.8-0.9 C16.7,9.1,16.4,8.7,15.9,8.7z\" />\r\n <path d=\"M15.9,12.1H5.5c-0.5,0-0.9,0.4-0.9,0.9s0.4,0.9,0.9,0.9h10.5c0.5,0,0.9-0.4,0.9-0.9 S16.4,12.1,15.9,12.1z\" />\r\n <path d=\"M22.7,5.5l-0.9,1.9l-2,0.3c-0.2,0-0.4,0.3-0.4,0.5c0,0.1,0.1,0.2,0.1,0.3 L21,9.9l-0.3,2c0,0.2,0.1,0.5,0.4,0.5c0.1,0,0.2,0,0.3,0l1.8-1l1.8,1c0.2,0.1,0.5,0,0.6-0.2c0-0.1,0.1-0.2,0-0.3l-0.3-2l1.5-1.4 c0.2-0.2,0.2-0.5,0-0.6c-0.1-0.1-0.2-0.1-0.3-0.1l-2-0.3l-0.9-1.9c-0.1-0.2-0.4-0.3-0.6-0.2C22.8,5.4,22.7,5.4,22.7,5.5z\" />\r\n </svg>\r\n )\r\n }\r\n // Icon - Same as above\r\n else {\r\n return (\r\n <svg version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 23\">\r\n <path d=\"M29.2,0H2.7C1.2,0-0.1,1.3-0.1,2.8v17.5c0,1.5,1.3,2.8,2.8,2.8h26.5 c1.5,0,2.8-1.3,2.8-2.8V2.8C32,1.3,30.7,0,29.2,0z M30.1,20.3c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5 c-0.5,0-0.9,0.4-0.9,0.9v1.8H2.7c-0.5,0-0.9-0.4-0.9-0.9V2.8c0-0.5,0.4-0.9,0.9-0.9h26.5c0.5,0,0.9,0.4,0.9,0.9V20.3z\" />\r\n <path d=\"M15.9,5.3H5.5C5,5.3,4.6,5.7,4.6,6.1C4.6,6.6,5,7,5.5,7h10.5c0.5,0,0.8-0.4,0.8-0.9 C16.7,5.7,16.4,5.3,15.9,5.3z\" />\r\n <path d=\"M15.9,8.7H5.5C5,8.7,4.6,9.1,4.6,9.5c0,0.5,0.4,0.8,0.8,0.8h10.5c0.5,0,0.8-0.4,0.8-0.9 C16.7,9.1,16.4,8.7,15.9,8.7z\" />\r\n <path d=\"M15.9,12.1H5.5c-0.5,0-0.9,0.4-0.9,0.9s0.4,0.9,0.9,0.9h10.5c0.5,0,0.9-0.4,0.9-0.9 S16.4,12.1,15.9,12.1z\" />\r\n <path d=\"M22.7,5.5l-0.9,1.9l-2,0.3c-0.2,0-0.4,0.3-0.4,0.5c0,0.1,0.1,0.2,0.1,0.3 L21,9.9l-0.3,2c0,0.2,0.1,0.5,0.4,0.5c0.1,0,0.2,0,0.3,0l1.8-1l1.8,1c0.2,0.1,0.5,0,0.6-0.2c0-0.1,0.1-0.2,0-0.3l-0.3-2l1.5-1.4 c0.2-0.2,0.2-0.5,0-0.6c-0.1-0.1-0.2-0.1-0.3-0.1l-2-0.3l-0.9-1.9c-0.1-0.2-0.4-0.3-0.6-0.2C22.8,5.4,22.7,5.4,22.7,5.5z\" />\r\n </svg>\r\n\r\n )\r\n }\r\n }\r\n}","\r\nimport { Spinner } from 'react-bootstrap'\r\n\r\n\r\nexport default function SplashScreen() {\r\n return (\r\n <div>\r\n <div className=\"k-loading-mask\">\r\n <span className=\"k-loading-text\">Loading</span>\r\n <div className=\"k-loading-image\"></div>\r\n <div className=\"k-loading-color\"></div>\r\n </div>\r\n </div>\r\n )\r\n}","\r\nimport { DropDownList, ListItemProps } from '@progress/kendo-react-dropdowns';\r\nimport React from 'react';\r\n\r\ninterface StringDropdownProps {\r\n sharedCourses: string[];\r\n width : string ;\r\n}\r\nexport default function SharedCoursesList(props: StringDropdownProps) {\r\n const itemRender = (li: React.ReactElement<HTMLLIElement>, itemProps: ListItemProps) => {\r\n const index = itemProps.index;\r\n const itemChildren =\r\n <div>\r\n {index === 0 &&<small className=\"text-secondary mb-1\">This course is in {props.sharedCourses.length} Shared Instruction courses</small>}\r\n <div style={{ color: \"black\" }}>{li.props.children}</div>\r\n </div>\r\n\r\n return React.cloneElement(li, li.props, itemChildren);\r\n }\r\n return (\r\n <DropDownList\r\n data={props.sharedCourses}\r\n itemRender={itemRender}\r\n value={<div style={{ color: 'blue' , fontWeight :'bold' }}>In {props.sharedCourses.length} SI Courses <i className=\" fas fa-solid fa-caret-down ml-1\"></i></div>}\r\n style={{ width: props.width , padding : 0 }}\r\n className='shared-courses'\r\n \r\n />\r\n );\r\n}\r\n","import React, { useState, useEffect, useReducer, useContext } from 'react';\r\nimport { Button, Modal, InputGroup, FormControl, OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport schoolService from '../../services/SchoolService';\r\nimport { Year, UserProfileType, AuthContextDefault, AuthContextType, AuthContext } from '../../services/AppContext';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport ICourses from '../../model/ICourses';\r\nimport IconCourseEnvelop from '../../assets/icons/icon-envelop-course';\r\nimport CoursesService from '../../services/CoursesService';\r\nimport IIndividualCourses from '../../model/IIndividualCourses';\r\nimport SplashScreen from '../../shared/SplashScreen';\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport SharedCoursesList from '../../shared/SharedCoursesList';\r\n\r\ninterface Props {\r\n courseId: number\r\n courseStatus: string\r\n locationCode: string\r\n courseUniqueId: string\r\n updateCourseInfo: (courseId: number, courseTeachers: any, studentCount: number, action: string) => void\r\n}\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\n\r\nexport default function IndividualCourses(courseProps: Props) {\r\n\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [errorMsg, setErrorMsg] = useState<string>('');\r\n const [assignedCourses, setAssignedCourses] = useState<IIndividualCourses[]>([]);\r\n const [checkedCourses, setCheckedCourses] = useState<ICourses[]>([]);\r\n const [starsCourses, setStarsCourses] = useState<ICourses[]>([]);\r\n const [showAddIndividualCoursesDialog, setShowAddIndividualCoursesDialog] = useState<boolean>(false);\r\n const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n const [orginalSchoolList, setOrginalSchoolList] = useState<IDropDownValue[]>([]);\r\n const [schoolList, setSchoolList] = useState<IDropDownValue[]>([]);\r\n const [selectedSchool, setSelectedSchool] = useState<IDropDownValue>();\r\n const [deletedCourse, setDeletedCourse] = useState<string>();\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n\r\n\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n let currentPage = (event.page.skip / event.page.take) + 1\r\n getStarsCourses(currentPage, event.page.take, selectedSchool?.id ?? courseProps.locationCode)\r\n };\r\n\r\n const GetStatusBadgeCssClass = (status: string) => {\r\n\r\n if (status.toLowerCase() === \"new\") {\r\n return \"text-gray\"\r\n }\r\n else if (status.toLowerCase() === \"edited\") {\r\n return \"text-secondary\"\r\n }\r\n else if (status.toLowerCase() === \"published\") {\r\n return \"text-success\"\r\n }\r\n else if (status.toLowerCase() === \"closed\") {\r\n return \"text-danger\"\r\n }\r\n \r\n }\r\n\r\n const getStarsCourses = (page: number, limit: number, locationCode: string) => {\r\n setIsLoading(true)\r\n CoursesService.getStarsCourses(courseProps.courseUniqueId, locationCode, +orginalSchoolYear.id, page, limit).then(response => {\r\n setIsLoading(false)\r\n setStarsCourses(response.data)\r\n if (checkedCourses && checkedCourses.length > 0) {\r\n if (response.data.length > 0) {\r\n checkedCourses.forEach((c: any) => {\r\n\r\n let selectedCourse = response.data.find((s: any) => s.courseId == c.courseId)\r\n\r\n if (selectedCourse) {\r\n selectedCourse.isSelected = true\r\n forceUpdate()\r\n }\r\n })\r\n }\r\n }\r\n })\r\n\r\n }\r\n\r\n\r\n const removeIndividualCourse = (sectionUniqueId: string) => {\r\n setDeletedCourse(sectionUniqueId)\r\n setFormMode(FormMode.Delete)\r\n }\r\n\r\n const getSchoolLocations = () => {\r\n\r\n if (userProfile?.role?.roleName == 'System Administrator' || userProfile.role.roleName == \"Central Staff\") {\r\n schoolService.getData().then(response => {\r\n let dropDownData = response.data.map((sl: any) => ({\r\n id: sl.locationCode,\r\n text: sl.locationCode + ' -- ' + sl.schoolName\r\n }));\r\n setSchoolList(dropDownData)\r\n setOrginalSchoolList(dropDownData)\r\n });\r\n } else {\r\n\r\n let data = userProfile?.role?.locations?.map(s => ({ id: s.LocationCode, text: s.LocationCode + ' -- ' + s.LocationName }))\r\n if (data) {\r\n setSchoolList(data)\r\n setOrginalSchoolList(data)\r\n }\r\n\r\n }\r\n }\r\n const filterData = (filter: any) => {\r\n let data = orginalSchoolList.slice();\r\n return filterBy(data, filter);\r\n }\r\n\r\n const filterChange = (event: any) => {\r\n let data = filterData(event.filter)\r\n setSchoolList(data)\r\n }\r\n\r\n const handleChange = (event: any) => {\r\n let selectedSchool = event.target.value;\r\n setSelectedSchool(selectedSchool)\r\n setPage(initialDataState)\r\n let currentPage = (initialDataState.skip / initialDataState.take) + 1\r\n getStarsCourses(currentPage, initialDataState.take, selectedSchool.id)\r\n }\r\n\r\n const getDefaultValue = (schoolList: any) => {\r\n let school = schoolList.find((s: any) => s.id == courseProps.locationCode)\r\n if (school) {\r\n return school\r\n }\r\n }\r\n\r\n const getAssignedCourses = (courseId: number) => {\r\n CoursesService.getIndividualCoursesBySharedCourseId(courseId).then(response => {\r\n setAssignedCourses(response.data)\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n setCheckedCourses([])\r\n getAssignedCourses(courseProps.courseId);\r\n setUserProfile(LocalStorageService.getUserProfile())\r\n }, [courseProps.courseId]);\r\n\r\n\r\n const toggleDialog = () => {\r\n setCheckedCourses([])\r\n setShowAddIndividualCoursesDialog(!showAddIndividualCoursesDialog)\r\n }\r\n\r\n const addIndividualCourses = () => {\r\n setShowAddIndividualCoursesDialog(true)\r\n getSchoolLocations()\r\n setFormMode(FormMode.New)\r\n setPage(initialDataState)\r\n let currentPage = (initialDataState.skip / initialDataState.take) + 1\r\n getStarsCourses(currentPage, initialDataState.take, courseProps.locationCode)\r\n }\r\n\r\n const onGridCheckBoxClick = (dataItem: any) => {\r\n dataItem.isSelected = !dataItem.isSelected;\r\n let selectedCourses = checkedCourses\r\n if (dataItem.isSelected) {\r\n selectedCourses.push(dataItem)\r\n\r\n setCheckedCourses(selectedCourses)\r\n } else {\r\n selectedCourses = checkedCourses.filter(item => item.courseId !== dataItem.courseId);\r\n\r\n setCheckedCourses(selectedCourses)\r\n }\r\n\r\n forceUpdate();\r\n }\r\n\r\n\r\n const TeacherBadge = (props: any) => {\r\n\r\n return (\r\n <td>\r\n <div>Assigned Teachers</div>\r\n {props.dataItem.courseTeachers.map((item: any) =>\r\n\r\n (\r\n\r\n <OverlayTrigger\r\n key={item.teacherId}\r\n placement='top'\r\n trigger={['hover', 'focus']}\r\n overlay={\r\n <Tooltip id={`tooltip-${item.teacherId}`} style={{zIndex:1000000}}>\r\n {item.firstName + item.lastName}\r\n </Tooltip>\r\n }\r\n >\r\n <Button key={item.teacherId} className={\"btn badge badge-warning border-0 mr-1\"}>{item.teacherInitial ? item.teacherInitial : item.firstName?.charAt(0) + item.lastName?.charAt(0)}</Button>\r\n </OverlayTrigger>\r\n ))}\r\n </td>\r\n\r\n\r\n\r\n );\r\n }\r\n\r\n const [searchCourseName, setSearchCourseName] = useState<string>();\r\n const searchByCourseName = (event: any) => {\r\n const target = event.target\r\n if (!target.value || target.value == 0) {\r\n setErrorMsg('')\r\n setPage(initialDataState);\r\n let currentPage = (initialDataState.skip / initialDataState.take) + 1\r\n getStarsCourses(currentPage, initialDataState.take, selectedSchool?.id ?? courseProps.locationCode)\r\n }\r\n setSearchCourseName(target.value)\r\n };\r\n const getCourseByCourseName = () => {\r\n setErrorMsg('')\r\n if (!searchCourseName) {\r\n setErrorMsg(\"Please enter course name \")\r\n return\r\n }\r\n setStarsCourses([])\r\n setIsLoading(true)\r\n setPage(initialDataState);\r\n let currentPage = (initialDataState.skip / initialDataState.take) + 1\r\n CoursesService.searchStarsCourseByName(courseProps.courseUniqueId, selectedSchool?.id ?? courseProps.locationCode, +orginalSchoolYear.id, currentPage, initialDataState.take, searchCourseName).then(response => {\r\n setIsLoading(false)\r\n setStarsCourses(response.data)\r\n })\r\n }\r\n\r\n\r\n\r\n const onSave = (event: any, actionType: FormMode) => {\r\n switch (actionType) {\r\n case FormMode.New:\r\n let addIndividualCourse: any = {\r\n sharedCourseUniqueId: courseProps.courseUniqueId,\r\n individualCoursesUniqueId: checkedCourses.map(i => i.courseUniqueId)\r\n }\r\n\r\n\r\n if (addIndividualCourse.individualCoursesUniqueId?.length == 0) {\r\n setErrorMsg('Please select courses to add.');\r\n return;\r\n }\r\n let courseTeachers = checkedCourses.map(i => i.courseTeachers)\r\n let studentCount = checkedCourses.map(i => i.totalStudentEnrolled)\r\n let result = studentCount.reduce((a, b) => {\r\n return a + b;\r\n });\r\n\r\n CoursesService.addIndividualCourses(addIndividualCourse).then(res => {\r\n setFormMode(FormMode.None)\r\n toggleDialog()\r\n courseProps.updateCourseInfo(courseProps.courseId, courseTeachers.flat(), result, \"add\")\r\n })\r\n\r\n break;\r\n case FormMode.Delete:\r\n\r\n let deleteIndividualCourse: any = {\r\n sharedCourseUniqueId: courseProps.courseUniqueId,\r\n individualCourseUniqueId: deletedCourse\r\n }\r\n CoursesService.deleteIndividualCourses(deleteIndividualCourse).then(res => {\r\n setFormMode(FormMode.None)\r\n courseProps.updateCourseInfo(courseProps.courseId, res.data.result.newCourseTeachers, res.data.result.studentCount, \"delete\")\r\n\r\n })\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n\r\n }\r\n }\r\n }\r\n\r\n\r\n return (\r\n <div>\r\n {showAddIndividualCoursesDialog && <Dialog title={\"Add Shared Instruction Course\"} width={1000} onClose={toggleDialog} style={{ width: \"80%\", position: \"fixed\", left: \"10%\", top: \"20%\", height: \"350px\" }} >\r\n <div id=\"dropDownParent\">\r\n <div hidden={errorMsg.length == 0}>\r\n <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n {errorMsg}\r\n <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div className=\"d-flex justify-content-between align-items-center\" >\r\n <div className=\"text-sm-left text-left\">\r\n <InputGroup >\r\n <FormControl\r\n placeholder=\"Course Name\"\r\n onChange={searchByCourseName}\r\n />\r\n <Button variant=\"outline-secondary\" id=\"button-addon1\" onClick={getCourseByCourseName}\r\n >\r\n Search\r\n </Button>\r\n </InputGroup>\r\n </div>\r\n <div className=\"text-sm-right text-left\" >\r\n <DropDownList\r\n data={schoolList}\r\n defaultValue={getDefaultValue(schoolList)}\r\n textField=\"text\"\r\n filterable={true}\r\n onChange={handleChange}\r\n onFilterChange={filterChange}\r\n popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n style={{ maxWidth: '300px', width: '100%' }}\r\n />\r\n </div>\r\n </div>\r\n {isLoading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n <div className=\"mt-3\" style={{ height: \"400px\" }}>\r\n <Grid\r\n data={starsCourses.slice(0, page.take)}\r\n\r\n skip={page.skip}\r\n take={page.take}\r\n total={starsCourses && starsCourses.length ? starsCourses[0].totalPages : 0}\r\n className=\"k-grid-no-header\"\r\n pageable={true}\r\n scrollable={\"none\"}\r\n onPageChange={pageChange}\r\n >\r\n <GridColumn field=\"isSelected\" width=\"40px\" filterable={false} cell={props => (\r\n <td>\r\n <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"UserIcon\" title=\" \" filterable={false} width=\"50px\" cell={\r\n props => (\r\n <td className=\"pr-0\">\r\n <div className=\"d-flex\">\r\n <div className={`svg-app-icon ${props.dataItem.courseStatus.toLowerCase() === \"published\" ? \" text-success\" : \" text-blue-gray\"} mr-3\"`} style={{ height: \"50px\" }}>\r\n <IconCourseEnvelop courseType={props.dataItem.courseType} courseOrginType=\"stars\" merge={0}></IconCourseEnvelop>\r\n </div>\r\n </div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"Name\" cell={\r\n props => (\r\n <td>\r\n <div>{props.dataItem.courseName}</div>\r\n <div className=\"small\">Course Code:{props.dataItem.courseCode}</div>\r\n \r\n <div ><span className={GetStatusBadgeCssClass(props.dataItem.courseStatus)}> {props.dataItem.courseStatus} </span>\r\n {props.dataItem.starsSharedCourses.length != 0 &&\r\n <SharedCoursesList\r\n sharedCourses={props.dataItem.starsSharedCourses}\r\n width='80%'\r\n />\r\n }</div>\r\n\r\n \r\n </td>\r\n )} />\r\n <GridColumn field=\"Teachers\" cell={TeacherBadge} />\r\n\r\n <GridColumn field=\"Students\" cell={\r\n props => (\r\n <td>\r\n <div>Enrolled Students</div>\r\n <div >{props.dataItem.totalStudentEnrolled}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"Location\" cell={\r\n props => (\r\n <td>\r\n <div>Associated Location</div>\r\n <div >{props.dataItem.locationCode}</div>\r\n </td>\r\n )} />\r\n\r\n </Grid>\r\n\r\n </div>\r\n\r\n </div>\r\n <DialogActionsBar>\r\n <Button className=\"m-3\" variant=\"secondary\" onClick={toggleDialog}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Add Courses</Button>\r\n </DialogActionsBar>\r\n </Dialog>}\r\n <Modal\r\n show={formMode == FormMode.Delete}\r\n onHide={() => { setFormMode(FormMode.None) }}\r\n animation={false}\r\n backdrop=\"static\"\r\n keyboard={false}>\r\n\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Remove Course</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n Are you sure you want to remove course ?\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n <div className=\"card mt-4\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-10\">Shared Instruction Courses ({assignedCourses.length})</div>\r\n {courseProps.courseStatus.toLowerCase() == 'closed' ? '' :\r\n <div className=\"col-2 text-right\">\r\n {orginalSchoolYear.isCurrent != 0 &&\r\n <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { addIndividualCourses() }}\r\n >\r\n <i className=\"fas fa-plus\"></i>\r\n </button>}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div className=\"card-body\">\r\n <Grid\r\n data={assignedCourses}\r\n scrollable={\"none\"}\r\n className=\"k-grid-no-header\"\r\n >\r\n {/* <GridColumn field=\"expanded\" width=\"80px\" title=' ' /> */}\r\n <GridNoRecords>\r\n No Enrolled Courses\r\n </GridNoRecords>\r\n <GridColumn field=\"CourseIcon\" title=\" \" width=\"80px\" cell={\r\n props => (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className={`svg-app-icon text-blue-gray mr-3\"`} style={{ height: \"60px\" }}>\r\n <IconCourseEnvelop courseType={props.dataItem.courseType} courseOrginType=\"stars\" merge={0}></IconCourseEnvelop>\r\n </div>\r\n </div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"Name\" title=\"\" cell={\r\n props => (\r\n <td>\r\n <div> {props.dataItem.courseName}</div>\r\n <div className=\"small\">Course Code:{props.dataItem.courseCode}</div>\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"schoolDBN\" title=\"Associated Location\" cell={\r\n props => (\r\n <td>\r\n <div className=\"small\">Associated Location:</div>\r\n <div>{props.dataItem.locationCode}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"\" title=\" \" cell={\r\n props => (\r\n <td className=\"text-right menu-btn\">\r\n {\r\n courseProps.courseStatus?.toLowerCase() === 'closed'\r\n ? '' :\r\n <button type=\"button\" className=\"btn btn-sm btn-outline-secondary\" onClick={(e) => { removeIndividualCourse(props.dataItem.sectionUniqueId) }}\r\n >\r\n <i className=\"fas fa-minus\"></i>\r\n </button>\r\n }\r\n </td>\r\n )} />\r\n </Grid>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}","import {IAssignedTeachers} from '../model/IAssignedTeachers'\r\nimport IAddCourseTeachers from '../model/IAddCourseTeachers'\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\nimport ITeacherManageSection from '../model/ITeacherManageSection'\r\n\r\nexport default {\r\n GetUnassignedTeachersBySchoolDBN: (locationCode : string , courseUniqueId : string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/Teachers/${courseUniqueId}`\r\n }),\r\n getTeachersBySchoolDBN: (locationCode : string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/Teachers`\r\n }),\r\n getByCourseId: (courseId : number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Courses/${courseId}/Teachers`\r\n }),\r\n getSharedCourseAssignedTeachers: (courseId : number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/SharedCourse/${courseId}/Teachers`\r\n }),\r\n GetUnassignedTeacherById: (teacherId : string, courseUniqueId : string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Teachers/${teacherId}/${courseUniqueId}`\r\n }),\r\n getTeacherById: (teacherId : string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Teachers/${teacherId}`\r\n }),\r\n post: (requestdata: IAddCourseTeachers) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': `/Courses/Teachers`,\r\n 'data': requestdata\r\n }), \r\n enableTeacherToManageCourse: (requestdata: ITeacherManageSection) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': `/ManageSection/Teachers`,\r\n 'data': requestdata\r\n }), \r\n removeTeaccherFromCourse: (requestdata: ITeacherManageSection) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': `/UnManageSection/Teachers`,\r\n 'data': requestdata\r\n }), \r\n delete: (courseId : number, teacherId : string) =>\r\n AxiosInstance({\r\n 'method': 'DELETE',\r\n 'url': `/Courses/${courseId}/Teacher/${teacherId}`\r\n }), \r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nexport default function IconPersonCircle() {\r\n\r\n return (\r\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 32\">\r\n <title>Person</title>\r\n <path d=\"M22.5,23.5c-0.5-0.2-1.1-0.4-1.6-0.6c-0.7-0.3-0.8-0.4-0.8-0.5c0,0,0-0.2,0-0.3v-2.4c1.6-2,2.6-5,2.6-8.2 c0-3.3-3-5.9-6.7-5.9c-3.7,0-6.7,2.6-6.7,5.9c0,3,1,6.1,2.6,8.1v2.6c0,0.1,0,0.3,0,0.3c0,0-0.1,0.2-0.8,0.5c-0.5,0.2-1,0.4-1.6,0.6 c-1.2,0.4-1.8,0.6-2.1,1c-0.3,0.3-0.3,0.8,0,1.1c0.2,0.1,0.3,0.2,0.5,0.2c0.2,0,0.4-0.1,0.6-0.2c0.2-0.1,1-0.4,1.5-0.6 c0.5-0.2,1.1-0.4,1.6-0.6c1.6-0.6,1.8-1.2,1.8-2.3v-1.1c0.1,0.1,0.2,0.1,0.3,0.2c0.4,0.2,0.9,0.1,1.1-0.3s0.1-0.9-0.3-1.1\r\n c-2.1-1.2-3.7-4.8-3.7-8.4c0-2.4,2.3-4.3,5.2-4.3c2.8,0,5.1,1.9,5.2,4.3c-0.9-0.3-1.8-1.3-2.1-1.7c-0.2-0.2-0.4-0.4-0.7-0.3 c-0.2,0-0.5,0.2-0.6,0.4c0,0.1-0.3,0.4-1.3,1.2c-0.9,0.8-2.8,0.7-3.5,0.7c-0.4-0.1-0.8,0.3-0.9,0.7s0.3,0.8,0.7,0.9 c0.1,0,0.4,0,0.9,0c1,0,2.7-0.2,3.8-1.1c0.4-0.3,0.6-0.6,0.8-0.8c0.6,0.6,1.6,1.5,2.7,1.7c-0.4,3.1-1.7,5.8-3.6,6.9 c-0.4,0.2-0.5,0.7-0.3,1.1c0.1,0.2,0.4,0.4,0.7,0.4c0.1,0,0.3,0,0.4-0.1c0.1,0,0.1-0.1,0.2-0.1v1c0,1,0.3,1.6,1.8,2.3 c0.5,0.2,1.1,0.4,1.6,0.6c0.6,0.2,1.3,0.5,1.5,0.6c0.2,0.2,0.4,0.3,0.6,0.3c0.2,0,0.4-0.1,0.5-0.2c0.3-0.3,0.3-0.8,0-1.1 C24.3,24.2,23.7,23.9,22.5,23.5z\"/>\r\n <path d=\"M16,0C7.2,0,0,7.2,0,16c0,8.8,7.2,16,16,16s16-7.2,16-16C32,7.2,24.8,0,16,0z M16,30.4C8,30.4,1.6,24,1.6,16 S8,1.6,16,1.6S30.4,8,30.4,16S24,30.4,16,30.4z\"/>\r\n </svg>\r\n )\r\n}\r\n\r\n","import React, { useState, useEffect, useReducer, useRef, useContext, useCallback } from 'react';\r\nimport { Button, Modal, InputGroup, FormControl, Form } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridExpandChangeEvent, GridFilterChangeEvent, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { IAssignedTeachers, ManageCourses } from '../../model/IAssignedTeachers';\r\nimport TeacherService from '../../services/TeacherService';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility';\r\nimport schoolService from '../../services/SchoolService';\r\nimport IAddCourseTeachers from '../../model/IAddCourseTeachers';\r\nimport IconPersonCircle from '../../assets/icons/icon-person-circle';\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport IAssignedAdditionalStaff from '../../model/IAssignedAdditionalStaff';\r\nimport ITeacherManageSection from '../../model/ITeacherManageSection';\r\n\r\ninterface IAssignedTeacherProps {\r\n courseId: any\r\n courseStatus: string\r\n courseSource: string\r\n isEditable?: boolean | false\r\n locationCode: string\r\n onAssignTeachers: any\r\n onDeleteTeacher: any\r\n updateCourseStatus: any\r\n isSharedCourse: boolean\r\n courseUniqueId : string\r\n \r\n}\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\n\r\nexport default function AssignedTeachers(props: IAssignedTeacherProps) {\r\n const mountedRef = useRef(true);\r\n const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [courseTeachers, setCourseTeachers] = useState<IAssignedTeachers[]>([]);\r\n const [courseAdditionalStaff, setCourseAdditionalStaff] = useState<IAssignedAdditionalStaff[]>([]);\r\n const [data, setRowData] = useState<IAssignedTeachers[]>([]);\r\n const [dataCopy, setRowCopyData] = useState<IAssignedTeachers[]>([]);\r\n const [deleteTeacherId, setDeleteTecherId] = useState<string>('');\r\n const [errorMsg, setErrorMsg] = useState<string>('');\r\n const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n const [orginalSchoolList, setOrginalSchoolList] = useState<IDropDownValue[]>([]);\r\n const [schoolList, setSchoolList] = useState<IDropDownValue[]>([]);\r\n const initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n };\r\n const [filter, setFilter] = useState(initialFilter);\r\n const [page, setPage] = React.useState(initialDataState);\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const getTeachers = (locationCode: string) => {\r\n TeacherService.GetUnassignedTeachersBySchoolDBN(locationCode , props.courseUniqueId).then(response => {\r\n setRowData(response.data)\r\n setRowCopyData(response.data)\r\n })\r\n }\r\n \r\n const getAssignedTeachers = (CourseId: number) => {\r\n if (props.isSharedCourse) {\r\n TeacherService.getSharedCourseAssignedTeachers(CourseId).then(response => {\r\n let teacherData = response.data as IAssignedTeachers[];\r\n teacherData.forEach(x => x.courseSource = props.courseSource);\r\n teacherData.forEach(x => x.courseStatus = props.courseStatus);\r\n setCourseTeachers(teacherData)\r\n })\r\n } else {\r\n TeacherService.getByCourseId(CourseId).then(response => {\r\n let teacherData = response.data as IAssignedTeachers[];\r\n teacherData.forEach(x => x.courseSource = props.courseSource);\r\n teacherData.forEach(x => x.courseStatus = props.courseStatus);\r\n setCourseTeachers(teacherData)\r\n })\r\n }\r\n\r\n return () => { mountedRef.current = false }\r\n }\r\n const getSchoolLocations = () => {\r\n schoolService.getData().then(response => {\r\n let dropDownData = response.data.map((sl: any) => ({\r\n id: sl.locationCode,\r\n text: sl.locationCode + ' -- ' + sl.schoolName\r\n }));\r\n setSchoolList(dropDownData)\r\n setOrginalSchoolList(dropDownData)\r\n });\r\n }\r\n const filterData = (filter: any) => {\r\n let data = orginalSchoolList.slice();\r\n return filterBy(data, filter);\r\n }\r\n\r\n const filterChange = (event: any) => {\r\n let data = filterData(event.filter)\r\n setSchoolList(data)\r\n }\r\n\r\n const handleChange = (event: any) => {\r\n let selectedSchool = event.target.value;\r\n getTeachers(selectedSchool.id);\r\n }\r\n\r\n const getDefaultValue = (schoolList: any) => {\r\n let school = schoolList.find((s: any) => s.id == props.locationCode)\r\n if (school) {\r\n return school\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getAssignedTeachers(props.courseId);\r\n setUserProfile(LocalStorageService.getUserProfile())\r\n return () => { mountedRef.current = false }\r\n }, [props.locationCode]);\r\n\r\n\r\n const [assignedTeachersVisible, setAssignedTeachersVisible] = useState<boolean>(false);\r\n const toggleAssignedTeachersDialog = () => {\r\n setAssignedTeachersVisible(!assignedTeachersVisible)\r\n let data = orginalSchoolList.slice();\r\n setSchoolList(data)\r\n setHeaderCheckBox(false);\r\n }\r\n\r\n const addTeacher = () => {\r\n setErrorMsg('');\r\n getSchoolLocations();\r\n getTeachers(props.locationCode);\r\n setFormMode(FormMode.New)\r\n toggleAssignedTeachersDialog()\r\n }\r\n\r\n const onGridCheckBoxClick = (dataItem: any) => {\r\n dataItem.isSelected = !dataItem.isSelected;\r\n forceUpdate();\r\n }\r\n\r\n const [headerCheckBoxValue, setHeaderCheckBox] = useState(false);\r\n const onHeaderCheckBoxClick = (event: any, products?: any) => {\r\n let checked = event.target.checked;\r\n if (checked == true) {\r\n data.map((t: any) => t.isSelected = true)\r\n } else {\r\n data.map((t: any) => t.isSelected = false)\r\n }\r\n setHeaderCheckBox(checked)\r\n }\r\n const removeTeacher = (teacherId: string) => {\r\n setDeleteTecherId(teacherId)\r\n setFormMode(FormMode.Delete)\r\n }\r\n const [searchTeacherEin, setSearchTeacherEin] = useState(\"\");\r\n const searchTeacherChange = (event: any) => {\r\n const target = event.target\r\n if (!target.value || target.value == \"\") {\r\n setErrorMsg('')\r\n setRowData(dataCopy)\r\n }\r\n setSearchTeacherEin(target.value)\r\n };\r\n const getTeacherById = () => {\r\n setErrorMsg('')\r\n if (searchTeacherEin == \"\") {\r\n setErrorMsg(\"Please enter teacher EIN\")\r\n return\r\n }\r\n setRowData([])\r\n TeacherService.GetUnassignedTeacherById(searchTeacherEin , props.courseUniqueId).then(response => {\r\n if (response.data.isValidResponse) {\r\n let teacher = response.data.result as IAssignedTeachers\r\n let teachers = []\r\n teachers.push(teacher)\r\n setRowData(teachers)\r\n setPage(initialDataState)\r\n } \r\n }).catch((ex)=>{\r\n setErrorMsg(ex.response.data.errors.join())\r\n })\r\n }\r\n const onSave = (event: any, actionType: FormMode) => {\r\n switch (actionType) {\r\n case FormMode.New:\r\n\r\n let addCourseTeachers: IAddCourseTeachers = {\r\n courseId: props.courseId,\r\n schoolYear: +orginalSchoolYear.id,\r\n teachers: []\r\n }\r\n addCourseTeachers.teachers = data.filter(x => x.isSelected);\r\n if (addCourseTeachers.teachers?.length == 0) {\r\n setErrorMsg('Please select atleast one teacher to add.');\r\n return;\r\n }\r\n let teacherIds = courseTeachers.map(a => a.teacherId);\r\n let addedTeachers = addCourseTeachers.teachers.filter((x) => !teacherIds.includes(x.teacherId));;\r\n addCourseTeachers.teachers = addedTeachers;\r\n\r\n if (addedTeachers?.length == 0) {\r\n setErrorMsg('Selected teachers are already added.');\r\n return;\r\n }\r\n addedTeachers.forEach(x => x.role = \"Teacher\");\r\n var currentTeacherList = courseTeachers;\r\n currentTeacherList = currentTeacherList.concat(addedTeachers);\r\n TeacherService.post(addCourseTeachers).then(response => {\r\n setCourseTeachers(currentTeacherList);\r\n props.onAssignTeachers(addedTeachers, props.courseId)\r\n props.updateCourseStatus(props.courseId)\r\n setAssignedTeachersVisible(!assignedTeachersVisible)\r\n setFormMode(FormMode.None)\r\n setHeaderCheckBox(false);\r\n });\r\n break;\r\n case FormMode.Delete:\r\n TeacherService.delete(props.courseId, deleteTeacherId).then(response => {\r\n let courseteacherList = courseTeachers.filter(x => x.teacherId != deleteTeacherId);\r\n props.onDeleteTeacher(courseteacherList, props.courseId)\r\n props.updateCourseStatus(props.courseId)\r\n setCourseTeachers(courseteacherList);\r\n setFormMode(FormMode.None)\r\n });\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n\r\n }\r\n }\r\n }\r\n\r\n const changeTeacherCanManage = (e: any, element: ManageCourses, teacherId: string) => {\r\n let teacher: IAssignedTeachers | undefined = courseTeachers.find(item=>item.teacherId == teacherId)\r\n let checked = e.target.checked\r\n let teacherManageSection: ITeacherManageSection = {\r\n sharedCourseUniqueId : teacher?.courseUniqueId,\r\n courseId: props.courseId,\r\n courseStatus: props.courseStatus,\r\n teacherId: teacherId,\r\n locationCode: teacher?.schoolDBN,\r\n sectionUniqueId: element.sectionUniqueId\r\n }\r\n let newData = courseTeachers.map((item: IAssignedTeachers) => {\r\n if (item.teacherId === teacherId) {\r\n teacher = item\r\n item.manageCourses?.map((i: ManageCourses) => {\r\n if (i.sectionUniqueId === element.sectionUniqueId) {\r\n i.canManage = checked\r\n }\r\n })\r\n }\r\n return item; \r\n })\r\n setCourseTeachers(newData);\r\n if (checked) {\r\n \r\n TeacherService.enableTeacherToManageCourse(teacherManageSection).then(res => {\r\n if(res.data.isValidResponse){\r\n props.updateCourseStatus(props.courseId)\r\n }\r\n \r\n })\r\n }else{\r\n TeacherService.removeTeaccherFromCourse(teacherManageSection).then(res => {\r\n if(res.data.isValidResponse){\r\n props.updateCourseStatus(props.courseId)\r\n }\r\n })\r\n }\r\n\r\n }\r\n\r\n const DetailComponent = (item: any) => {\r\n const dataItem = item.dataItem;\r\n\r\n return (\r\n <div className=\"card\">\r\n <div className=\"card-body\">\r\n <div className=\"row\">\r\n <div className=\"col-md-5\">\r\n <div className='text-primary small mb-1'>Teaches Course:</div>\r\n {dataItem.mainCourses && dataItem.mainCourses.length &&\r\n dataItem.mainCourses?.map((element: any, index: number) => {\r\n return <div key={index}>{element.teacherCourse}</div>\r\n })}\r\n </div>\r\n <div className=\"col-md-7 mt-3 mt-md-0\">\r\n <div className='text-primary small mb-1'>Allowed to Manage:</div>\r\n {dataItem.manageCourses && dataItem.manageCourses.length > 0 &&\r\n dataItem.manageCourses?.map((element: any, index: number) => {\r\n return (\r\n <>\r\n <Form>\r\n <Form.Group className='mb-0'>\r\n <Form.Check\r\n type=\"switch\"\r\n id={`canManage${index}`}\r\n label={element.sectionName}\r\n name=\"canManage\"\r\n onChange={(e: any) => changeTeacherCanManage(e, element, dataItem.teacherId)}\r\n checked={element.canManage}\r\n key={index}\r\n disabled={props.courseStatus.toLowerCase() == 'closed'}\r\n />\r\n </Form.Group>\r\n </Form></>)\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n const expandChange = (event: GridExpandChangeEvent) => {\r\n let newData = courseTeachers.map((item: IAssignedTeachers) => {\r\n if (item.teacherId === event.dataItem.teacherId) {\r\n item.expanded = !event.dataItem.expanded;\r\n } else {\r\n item.expanded = false\r\n }\r\n return item;\r\n })\r\n setCourseTeachers(newData);\r\n }\r\n\r\n return (\r\n <div>\r\n {assignedTeachersVisible && <Dialog title={\"Add New Teachers\"} onClose={toggleAssignedTeachersDialog} width={1000} height={600}>\r\n <div id=\"dropDownParent\">\r\n <div hidden={errorMsg.length == 0}>\r\n <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n {errorMsg}\r\n <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div className=\"d-flex justify-content-between align-items-center\" >\r\n <div className=\"text-sm-left text-left\">\r\n\r\n <InputGroup >\r\n <FormControl\r\n placeholder=\"Teacher EIN\"\r\n onChange={searchTeacherChange}\r\n />\r\n <Button variant=\"outline-secondary\" id=\"button-addon1\" onClick={getTeacherById} >\r\n Search\r\n </Button>\r\n </InputGroup>\r\n </div>\r\n <div className=\"text-sm-right text-right\">\r\n <DropDownList\r\n data={schoolList}\r\n defaultValue={getDefaultValue(schoolList)}\r\n textField=\"text\"\r\n filterable={true}\r\n onChange={handleChange}\r\n onFilterChange={filterChange}\r\n style={{ maxWidth: '350px', width: \"100%\" }}\r\n popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"mt-3\" style={{ height: '500px' }}>\r\n <Grid\r\n data={filterBy(data, filter).slice(page.skip, page.take + page.skip)}\r\n filter={filter}\r\n filterable={true}\r\n skip={page.skip}\r\n take={page.take}\r\n total={data.length}\r\n pageable={true}\r\n scrollable={\"none\"}\r\n className=\"mb-3\"\r\n onPageChange={pageChange}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n >\r\n <GridColumn field=\"isSelected\" width=\"40px\" filterable={false} headerCell={props => (<input type=\"checkbox\" checked={headerCheckBoxValue} onChange={(e) => onHeaderCheckBoxClick(e, props)} />)} cell={props => (\r\n <td>\r\n <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"UserIcon\" title=\" \" filterable={false} width=\"80px\" cell={\r\n props => (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className=\"svg-app-icon text-rust mr-3\" style={{ height: \"30px\" }}>\r\n <IconPersonCircle />\r\n </div>\r\n </div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"fullName\" title=\"Name\" cell={\r\n props => (\r\n <td>\r\n <div>{props.dataItem.fullName}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"teacherId\" title=\"EIN\" />\r\n <GridColumn field=\"userName\" title=\"Username\" />\r\n <GridColumn field=\"schoolDBN\" title=\"Associated Location\" filterable={false} />\r\n </Grid>\r\n </div>\r\n </div>\r\n <DialogActionsBar>\r\n <Button className=\"m-3\" variant=\"secondary\" onClick={toggleAssignedTeachersDialog}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Add Teachers</Button>\r\n </DialogActionsBar>\r\n </Dialog>}\r\n\r\n <Modal\r\n show={formMode == FormMode.Delete}\r\n onHide={() => { setFormMode(FormMode.None) }}\r\n animation={false}\r\n backdrop=\"static\"\r\n keyboard={false}>\r\n\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Remove Teacher</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n Are you sure you want to remove teacher ?\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n <div className=\"card mt-4\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-8 font-weight-bold\">Assigned Teachers</div>\r\n {(props.courseSource.toLowerCase() == 'stars' || props.courseStatus.toLowerCase() == 'closed') ? '' :\r\n <div className=\"col-4 text-right\">\r\n {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && !props.isSharedCourse ? <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { addTeacher() }}>\r\n <i className=\"fas fa-plus\"></i>\r\n </button> : props.isSharedCourse && <span className='small'> (auto-synced from the courses above) </span>}\r\n\r\n </div>}\r\n </div>\r\n </div>\r\n <div className=\"card-body\">\r\n\r\n <Grid\r\n data={courseTeachers}\r\n scrollable={\"none\"}\r\n className={props.isSharedCourse ? \"k-grid-no-header hierarchy-grid\" : \"k-grid-no-header\"}\r\n detail={props.isSharedCourse ? DetailComponent : null}\r\n expandField=\"expanded\"\r\n onExpandChange={expandChange}\r\n >\r\n {/* <GridColumn field=\"expanded\" width=\"80px\" title=' ' /> */}\r\n <GridNoRecords>\r\n No Assigned Teachers\r\n </GridNoRecords>\r\n <GridColumn field=\"UserIcon\" title=\" \" width=\"80px\" cell={\r\n props => (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className=\"svg-app-icon text-rust mr-3\" style={{ height: \"40px\" }}>\r\n <IconPersonCircle />\r\n </div>\r\n </div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"Name\" title=\"\" cell={\r\n props => (\r\n <td>\r\n <div> {props.dataItem.lastName} {props.dataItem.firstName} </div>\r\n <div className=\"small\">EIN:{props.dataItem.teacherId}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"\" title=\"Title\" cell={\r\n props => (\r\n <td>\r\n <div className=\"small\">Title:</div>\r\n <div>{props.dataItem.role}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"\" title=\"Username\" cell={\r\n props => (\r\n <td>\r\n <div className=\"small\">Username:</div>\r\n <div>{props.dataItem.userName}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"schoolDBN\" title=\"Associated Location\" cell={\r\n props => (\r\n <td>\r\n <div className=\"small\">Associated Location:</div>\r\n <div>{props.dataItem.schoolDBN}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"\" title=\" \" cell={\r\n prop => (\r\n <td className=\"text-right menu-btn\">\r\n {(userProfile?.role?.roleName == 'Central Staff' || prop.dataItem?.role === \"Teacher Of Record\" || orginalSchoolYear.isCurrent == 0\r\n || prop.dataItem?.courseStatus?.toLowerCase() === 'closed' || prop.dataItem?.courseSource?.toLowerCase() === 'stars') || props.isSharedCourse\r\n ? '' :\r\n <button type=\"button\" className=\"btn btn-sm btn-outline-secondary\" onClick={(e) => { removeTeacher(prop.dataItem.teacherId) }}>\r\n <i className=\"fas fa-minus\"></i>\r\n </button>\r\n }\r\n </td>\r\n )} />\r\n\r\n </Grid>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}","\r\nimport IAddCourseAdditionalStaff from '../model/IAddCourseAdditionalStaff'\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n GetUnassignedStaffBySchoolDBN: (locationCode : string , courseUniqueId : string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/AdditionalStaff/${courseUniqueId}`\r\n }),\r\n getByCourseId: (courseId : number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Courses/${courseId}/AdditionalStaff`\r\n }),\r\n post: (requestdata: IAddCourseAdditionalStaff) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': `/Courses/AdditionalStaff`,\r\n 'data': requestdata\r\n }), \r\n delete: (courseId : number, additionalStaffId : string) =>\r\n AxiosInstance({\r\n 'method': 'DELETE',\r\n 'url': `/Courses/${courseId}/AdditionalStaff/${additionalStaffId}`\r\n }), \r\n}","import React, { useState, useEffect, useReducer, useRef, useContext } from 'react';\r\nimport { Button, Modal, InputGroup, FormControl } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridFilterChangeEvent, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport IAssignedAdditionalStaff from '../../model/IAssignedAdditionalStaff';\r\nimport AdditionalStaffService from '../../services/AdditionalStaffService';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport schoolService from '../../services/SchoolService';\r\nimport IAddCourseAdditionalStaff from '../../model/IAddCourseAdditionalStaff';\r\nimport IconPersonCircle from '../../assets/icons/icon-person-circle';\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport TeacherService from '../../services/TeacherService';\r\n\r\n\r\ninterface IAssignedAdditionalStaffProps {\r\n courseId: number\r\n courseStatus: string\r\n courseSource: string\r\n isEditable?: boolean | false\r\n locationCode: string\r\n updateCourseStatus: (courseId : number) => void\r\n courseUniqueId : string\r\n\r\n}\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n};\r\n\r\nexport default function AssingedAdditionalStaff(props: IAssignedAdditionalStaffProps) {\r\n const mountedRef = useRef(true);\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [courseAdditionalStaff, setCourseAdditionalStaff] = useState<IAssignedAdditionalStaff[]>([]);\r\n const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n const [data, setRowData] = useState<IAssignedAdditionalStaff[]>([]);\r\n const [dataCopy, setRowCopyData] = useState<IAssignedAdditionalStaff[]>([]);\r\n const [deleteAdditionalStaffId, setDeleteTecherId] = useState<string>('');\r\n const [errorMsg, setErrorMsg] = useState<string>('');\r\n const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n const [orginalSchoolList, setOrginalSchoolList] = useState<IDropDownValue[]>([]);\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [schoolList, setSchoolList] = useState<IDropDownValue[]>([]);\r\n const [filter, setFilter] = useState(initialFilter);\r\n const [page, setPage] = React.useState(initialDataState);\r\n\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const getAdditionalStaffBySchoolDBN = (locationCode: string) => {\r\n AdditionalStaffService.GetUnassignedStaffBySchoolDBN(locationCode , props.courseUniqueId).then(response => {\r\n setRowData(response.data)\r\n setRowCopyData(response.data)\r\n })\r\n }\r\n\r\n const getAssignedAdditionalStaff = (CourseId: number) => {\r\n AdditionalStaffService.getByCourseId(CourseId).then(response => {\r\n const additionalStaffData = response.data.map((x:IAssignedAdditionalStaff) => ({\r\n ...x,\r\n courseSource: props.courseSource,\r\n courseStatus: props.courseStatus\r\n })) as IAssignedAdditionalStaff[];\r\n setCourseAdditionalStaff(additionalStaffData)\r\n })\r\n return () => { mountedRef.current = false }\r\n }\r\n const getSchoolLocations = () => {\r\n schoolService.getData().then(response => {\r\n let dropDownData = response.data.map((sl: any) => ({\r\n id: sl.locationCode,\r\n text: sl.locationCode + ' -- ' + sl.schoolName\r\n }));\r\n setSchoolList(dropDownData)\r\n setOrginalSchoolList(dropDownData)\r\n });\r\n }\r\n const filterData = (filter: any) => {\r\n let data = orginalSchoolList.slice();\r\n return filterBy(data, filter);\r\n }\r\n\r\n const filterChange = (event: any) => {\r\n let data = filterData(event.filter)\r\n setSchoolList(data)\r\n }\r\n\r\n const handleChange = (event: any) => {\r\n let selectedSchool = event.target.value;\r\n getAdditionalStaffBySchoolDBN(selectedSchool.id);\r\n }\r\n\r\n\r\n const getDefaultValue = (schoolList: any) => {\r\n let school = schoolList.find((s: any) => s.id == props.locationCode)\r\n if (school) {\r\n return school\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getAssignedAdditionalStaff(props.courseId);\r\n setUserProfile(LocalStorageService.getUserProfile())\r\n return () => { mountedRef.current = false }\r\n }, [props.locationCode]);\r\n\r\n\r\n\r\n const [additionalStaffVisible, setAdditionalStaffVisible] = useState<boolean>(false);\r\n const toggleAssignedTeachersDialog = () => {\r\n setAdditionalStaffVisible(!additionalStaffVisible)\r\n let data = orginalSchoolList.slice();\r\n setSchoolList(data)\r\n setHeaderCheckBox(false);\r\n }\r\n\r\n const addAdditionalStaff = () => {\r\n setErrorMsg('');\r\n getSchoolLocations();\r\n getAdditionalStaffBySchoolDBN(props.locationCode);\r\n setFormMode(FormMode.New)\r\n toggleAssignedTeachersDialog()\r\n }\r\n\r\n const onGridCheckBoxClick = (dataItem: any) => {\r\n dataItem.isSelected = !dataItem.isSelected;\r\n forceUpdate();\r\n }\r\n\r\n const [headerCheckBoxValue, setHeaderCheckBox] = useState(false);\r\n const onHeaderCheckBoxClick = (event: any) => {\r\n let checked = event.target.checked;\r\n if (checked == true) {\r\n data.map((t: any) => t.isSelected = true)\r\n } else {\r\n data.map((t: any) => t.isSelected = false)\r\n }\r\n setHeaderCheckBox(checked)\r\n }\r\n const removeAdditionalStaff = (additionalStaffId: string) => {\r\n setDeleteTecherId(additionalStaffId)\r\n setFormMode(FormMode.Delete)\r\n }\r\n\r\n const [searchTeacherEin, setSearchTeacherEin] = useState(\"\");\r\n const searchTeacherChange = (event: any) => {\r\n const target = event.target\r\n if (!target.value || target.value == \"\") {\r\n setErrorMsg('')\r\n setRowData(dataCopy)\r\n }\r\n setSearchTeacherEin(target.value)\r\n };\r\n const getTeacherById = () => {\r\n setErrorMsg('')\r\n if (searchTeacherEin == \"\") {\r\n setErrorMsg(\"Please enter teacher EIN\")\r\n return\r\n }\r\n setRowData([])\r\n TeacherService.GetUnassignedTeacherById(searchTeacherEin , props.courseUniqueId).then(response => {\r\n if (response.data.isValidResponse) {\r\n let teacher = response.data.result\r\n teacher.additionalStaffId = response.data.result.teacherId\r\n let teachers: IAssignedAdditionalStaff[] = []\r\n teachers.push(teacher)\r\n setRowData(teachers)\r\n setPage(initialDataState)\r\n } \r\n }).catch((ex)=>{\r\n setErrorMsg(ex.response.data.errors.join())\r\n })\r\n }\r\n\r\n const onSave = (event: any, actionType: FormMode) => {\r\n switch (actionType) {\r\n case FormMode.New:\r\n\r\n let addCourseAdditionalStaff: IAddCourseAdditionalStaff = {\r\n courseId: props.courseId,\r\n schoolYear :+orginalSchoolYear.id,\r\n additionalStaff: []\r\n }\r\n addCourseAdditionalStaff.additionalStaff = data.filter(x => x.isSelected);\r\n if (addCourseAdditionalStaff.additionalStaff.length == 0) {\r\n setErrorMsg('Please select atleast one additional Staff to add.');\r\n return;\r\n }\r\n let additionalStaffIds = courseAdditionalStaff.map(a => a.additionalStaffId);\r\n let addedAdditionalStaff = addCourseAdditionalStaff.additionalStaff.filter((x) => !additionalStaffIds.includes(x.additionalStaffId));;\r\n addCourseAdditionalStaff.additionalStaff = addedAdditionalStaff;\r\n\r\n if (addCourseAdditionalStaff.additionalStaff.length == 0) {\r\n setErrorMsg('Selected Additional Staff are already added.');\r\n return;\r\n }\r\n var currentAdditionalStaffList = courseAdditionalStaff;\r\n currentAdditionalStaffList = currentAdditionalStaffList.concat(addedAdditionalStaff);\r\n\r\n AdditionalStaffService.post(addCourseAdditionalStaff).then(response => {\r\n setCourseAdditionalStaff(currentAdditionalStaffList);\r\n setAdditionalStaffVisible(!additionalStaffVisible)\r\n props.updateCourseStatus(props.courseId)\r\n setFormMode(FormMode.None)\r\n setHeaderCheckBox(false);\r\n });\r\n break;\r\n case FormMode.Delete:\r\n AdditionalStaffService.delete(props.courseId, deleteAdditionalStaffId).then(response => {\r\n let courseAdditionalStaffList = courseAdditionalStaff.filter(x => x.additionalStaffId != deleteAdditionalStaffId);\r\n setCourseAdditionalStaff(courseAdditionalStaffList);\r\n props.updateCourseStatus(props.courseId)\r\n setFormMode(FormMode.None)\r\n });\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n\r\n }\r\n }\r\n }\r\n\r\n\r\n return (\r\n <div >\r\n {additionalStaffVisible && <Dialog title={\"Add AdditionalStaff\"} onClose={toggleAssignedTeachersDialog} style={{ width: \"75%\", position: \"fixed\", left: \"15%\", top: \"20%\", height: \"350px\" }} >\r\n <div id=\"dropDownParent\" >\r\n <div hidden={errorMsg.length == 0}>\r\n <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n {errorMsg}\r\n <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div className=\"d-flex justify-content-between align-items-center\" >\r\n <div className=\"text-sm-left text-left\">\r\n\r\n <InputGroup >\r\n <FormControl\r\n placeholder=\"Teacher EIN\"\r\n onChange={searchTeacherChange}\r\n />\r\n <Button variant=\"outline-secondary\" id=\"button-addon1\" onClick={getTeacherById} >\r\n Search\r\n </Button>\r\n </InputGroup>\r\n </div>\r\n <div className=\"text-sm-right text-left\">\r\n <DropDownList\r\n data={schoolList}\r\n defaultValue={getDefaultValue(schoolList)}\r\n textField=\"text\"\r\n filterable={true}\r\n onChange={handleChange}\r\n onFilterChange={filterChange}\r\n popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n style={{ maxWidth: '350px', width: \"100%\" }}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"mt-3\">\r\n <Grid\r\n data={filterBy(data, filter).slice(page.skip, page.take + page.skip)}\r\n filter={filter}\r\n filterable={true}\r\n skip={page.skip}\r\n take={page.take}\r\n total={data.length}\r\n pageable={true}\r\n onPageChange={pageChange}\r\n scrollable={\"none\"}\r\n style={{ height: '400px' }}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}>\r\n <GridColumn field=\"isSelected\" width=\"40px\" filterable={false} headerCell={props => (<input type=\"checkbox\" checked={headerCheckBoxValue} onChange={(e) => onHeaderCheckBoxClick(e)} />)} cell={props => (\r\n <td>\r\n <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"UserIcon\" title=\" \" filterable={false} width=\"80px\" cell={\r\n props => (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className=\"svg-app-icon text-secondary mr-3\" style={{ height: \"30px\" }}>\r\n <IconPersonCircle />\r\n </div>\r\n </div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"fullName\" title=\"Name\" cell={\r\n props => (\r\n <td>\r\n <div>{props.dataItem.fullName}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"additionalStaffId\" title=\"EIN\" />\r\n <GridColumn field=\"userName\" title=\"Username\" />\r\n <GridColumn field=\"schoolDBN\" title=\"Associated Location\" filterable={false} />\r\n </Grid>\r\n </div>\r\n </div>\r\n <DialogActionsBar>\r\n <Button className=\"m-3\" variant=\"secondary\" onClick={toggleAssignedTeachersDialog}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Add Additional Staff</Button>\r\n </DialogActionsBar>\r\n </Dialog>}\r\n <Modal\r\n show={formMode == FormMode.Delete}\r\n onHide={() => { setFormMode(FormMode.None) }}\r\n animation={false}\r\n backdrop=\"static\"\r\n keyboard={false}>\r\n\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Remove Additional Staff</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n Are you sure you want to remove additional staff ?\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n <div className=\"card mt-4\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-8 font-weight-bold\">Additional Staff</div>\r\n {props.courseStatus.toLowerCase() == 'closed' ? '' :\r\n <div className=\"col-4 text-right\">\r\n {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 &&\r\n <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { addAdditionalStaff() }}>\r\n <i className=\"fas fa-plus\"></i>\r\n </button>}\r\n </div>}\r\n </div>\r\n </div>\r\n <div className=\"card-body\">\r\n <Grid\r\n data={courseAdditionalStaff}\r\n scrollable={\"none\"}\r\n className=\"k-grid-no-header\"\r\n >\r\n {/* <GridColumn field=\"expanded\" width=\"80px\" title=' ' /> */}\r\n <GridNoRecords>\r\n No Additional Staff\r\n </GridNoRecords>\r\n <GridColumn field=\"UserIcon\" title=\" \" width=\"80\" cell={\r\n props => (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className=\"svg-app-icon text-secondary mr-3\" style={{ height: \"40px\" }}>\r\n <IconPersonCircle />\r\n </div>\r\n </div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"Name\" title=\"\" cell={\r\n props => (\r\n <td>\r\n <div> {props.dataItem.lastName} {props.dataItem.firstName}</div>\r\n <div className=\"small\">EIN:{props.dataItem.additionalStaffId}</div>\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"\" title=\"Username\" cell={\r\n props => (\r\n <td>\r\n <div className=\"small\">Username:</div>\r\n <div>{props.dataItem.userName}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"schoolDBN\" title=\"Associated Location\" cell={\r\n props => (\r\n <td>\r\n <div className=\"small\">Associated Location:</div>\r\n <div>{props.dataItem.schoolDBN}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"\" title=\" \" cell={\r\n props => (\r\n <td className=\"text-right menu-btn\">\r\n {(userProfile?.role?.roleName == 'Central Staff'\r\n || props.dataItem?.courseStatus?.toLowerCase() === 'closed') || orginalSchoolYear.isCurrent == 0\r\n ? '' :\r\n <button type=\"button\" className=\"btn btn-sm btn-outline-secondary\" onClick={(e) => { removeAdditionalStaff(props.dataItem.additionalStaffId) }}>\r\n <i className=\"fas fa-minus\"></i>\r\n </button>\r\n }\r\n </td>\r\n )} />\r\n </Grid>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}","import React, { useState, useEffect, useReducer, useRef } from 'react';\r\nimport coursesService from '../../services/CoursesService';\r\nimport { Grid, GridColumn, GridFilterChangeEvent, } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport ICourseVendorContent from '../../model/ICourseVendorContent';\r\nimport { CheckIfNYCDOELicense } from '../../helpers/helper';\r\n\r\ninterface IAddVendorContent {\r\n courseId: number,\r\n schoolDBN: string,\r\n closeCourseVendorContentModal: (error: string) => void\r\n updateCourseStatus: any\r\n}\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\nexport default function AddVendorContent(props: IAddVendorContent) {\r\n const mountedRef = useRef(true);\r\n const [page, setPage] = React.useState(initialDataState);\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const [data, setRowData] = useState<ICourseVendorContent[]>([]);\r\n const initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n };\r\n const [filter, setFilter] = useState(initialFilter);\r\n\r\n const getUnassignedVendorContentData = () => {\r\n coursesService.getUnassignedVendorContentData(props.courseId, props.schoolDBN).then(response => {\r\n setRowData(response.data)\r\n })\r\n return () => { mountedRef.current = false }\r\n }\r\n\r\n useEffect(() => {\r\n getUnassignedVendorContentData();\r\n return () => { mountedRef.current = false }\r\n }, []);\r\n\r\n const addVendorCourseContentRecords = (vendorConentId: number, vendorId: number) => {\r\n let courseVendorContent: ICourseVendorContent = {\r\n courseId: props.courseId,\r\n schoolDBN: props.schoolDBN,\r\n vendorContentId: vendorConentId,\r\n vendorId: vendorId,\r\n vendorContentName: '',\r\n vendorName: '',\r\n availableLicenses: 0,\r\n totalLicenses: 0,\r\n statusCode: ''\r\n };\r\n coursesService.post(courseVendorContent).then(response => {\r\n\r\n\r\n props.updateCourseStatus(props.courseId)\r\n props.closeCourseVendorContentModal(!response.data.isValidResponse ? response.data.errors.join() : \"\");\r\n });\r\n }\r\n return (\r\n <div>\r\n <Grid\r\n data={filterBy(data, filter).slice(page.skip, page.take + page.skip)}\r\n filter={filter}\r\n filterable={true}\r\n skip={page.skip}\r\n take={page.take}\r\n total={data.length}\r\n scrollable={\"none\"}\r\n pageable={true}\r\n onPageChange={pageChange}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n >\r\n <GridColumn field=\"vendorContentName\" title=\"Vendor Course Name\" />\r\n <GridColumn field=\"vendorName\" title=\"Vendor\" />\r\n <GridColumn field=\"AvailableLicense\" title=\"Available Licenses\" filterable={false}\r\n // Grid Header - center text\r\n headerCell={\r\n props => (\r\n <div className=\"text-center\">\r\n {props.title}\r\n </div>\r\n )}\r\n // Grid Cell - center text\r\n cell={\r\n props => (\r\n <td className=\"text-center\">\r\n {CheckIfNYCDOELicense(props.dataItem.vendorModel) ?\r\n <div>Unlimited of Unlimited</div>\r\n : <div>{props.dataItem.availableLicenses} of {props.dataItem.totalLicenses}</div>}\r\n\r\n </td>\r\n )}\r\n />\r\n <GridColumn field=\"Add\" title=\" \" filterable={false}\r\n cell={\r\n props => (\r\n <td className=\"text-right\">\r\n <div>\r\n <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { addVendorCourseContentRecords(props.dataItem.vendorContentId, props.dataItem.vendorId) }}>\r\n <i className=\"fas fa-plus\"></i>\r\n </button>\r\n </div>\r\n </td>\r\n )}\r\n />\r\n </Grid>\r\n </div>\r\n )\r\n}","import IEnrolledStudent from '../model/IEnrolledStudent'\r\nimport IAddCourseStudent from '../model/IAddCourseStudent'\r\nimport { AxiosInstances as AxiosInstance } from './BaseService'\r\n\r\nexport default {\r\n getBySchoolDBN: (locationCode: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/Student`\r\n }),\r\n getByCourseId: (courseId: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Courses/${courseId}/Student`\r\n }),\r\n\r\n getStudentById: (studentId: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Students/${studentId}`\r\n }),\r\n post: (requestdata: IAddCourseStudent) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': `/Courses/Student`,\r\n 'data': requestdata\r\n }),\r\n delete: (courseId: number, StudentId: number) =>\r\n AxiosInstance({\r\n 'method': 'DELETE',\r\n 'url': `/Courses/${courseId}/Student/${StudentId}`\r\n }),\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nexport default function IconStudentOutline() {\r\n\r\n return (\r\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 32 32\">\r\n <title>Student</title>\r\n <path d=\"M16,0C7.2,0,0,7.2,0,16s7.2,16,16,16s16-7.2,16-16S24.8,0,16,0z M9.3,28.6c1.1-1.8,3.7-2.3,3.7-2.3 c0.4-0.1,0.7-0.4,0.7-0.8v-2c0-0.3-0.2-0.6-0.4-0.7C12,22,11,21,10.4,19.8c-0.1-0.2-0.2-0.3-0.4-0.4c-1-0.5-1.6-1.5-1.6-2.6 c0-0.9,0.4-1.9,1.1-2c0.4,0,0.8-0.4,0.8-0.8c0.2-3.6,2.5-6.1,6.2-7c-0.1,0.4-0.1,0.7,0,1.1c0.2,0.8,0.8,1.2,1.4,1.4\r\n c2.1,0.6,3.6,2.4,3.7,4.5c0,0.4,0.3,0.8,0.7,0.8c0.8,0.1,1.2,0.8,1.2,2c0,1.2-0.6,2.2-1.6,2.6c-0.2,0.1-0.3,0.2-0.4,0.4 c-0.6,1.1-1.5,2.1-2.7,2.8c-0.3,0.2-0.4,0.4-0.4,0.7v2c0,0.4,0.3,0.8,0.7,0.8c0,0,2.3,0.4,3.6,2.4c-2,1.1-4.3,1.7-6.8,1.7 C13.6,30.3,11.3,29.7,9.3,28.6z M24.2,27.7c-1.2-1.8-3-2.7-4-3v-0.9c1.2-0.8,2.1-1.8,2.8-3c1.4-0.8,2.4-2.3,2.4-4c0-1.8-0.7-3-2-3.5 c-0.4-2.6-2.3-4.8-4.9-5.5c0,0-0.2-0.1-0.2-0.2c-0.1-0.2,0.1-0.6,0.6-1.2c0.2-0.3,0.3-0.6,0.1-1C18.8,5.1,18.5,5,18.1,5 c-5.4,0.6-8.9,3.7-9.4,8.3c-1.2,0.4-2,1.8-2,3.5c0,1.7,0.9,3.2,2.3,4c0.7,1.2,1.7,2.3,3,3.1v0.9c-1.1,0.3-3.1,1.1-4.1,2.9 C4.1,25.2,1.7,20.9,1.7,16C1.7,8.1,8.1,1.7,16,1.7c7.9,0,14.3,6.4,14.3,14.3C30.3,20.8,27.9,25.1,24.2,27.7z\"/>\r\n </svg>\r\n )\r\n}\r\n\r\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Gets and sets the children. Returns the children or the re-created item with the new children.\nfunction children(item, subItemsField, subItems) {\n var _a;\n if (subItems) {\n return __assign({}, item, (_a = {}, _a[subItemsField] = subItems.length ? subItems.slice() : undefined, _a));\n }\n else {\n return item && item[subItemsField] ? item[subItemsField].slice() : [];\n }\n}\nfunction mapItem(dataItem, subItemsField, callbackfn) {\n if (dataItem[subItemsField]) {\n var subItems = children(dataItem, subItemsField).map(function (child) { return mapItem(child, subItemsField, callbackfn); });\n return callbackfn(children(dataItem, subItemsField, subItems));\n }\n return callbackfn(dataItem);\n}\n/**\n * Creates a new array with the results of calling the provided callback function\n * on every element in the provided data tree.\n *\n * @param {any[]} tree - The data tree.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @param {(value: any) => any} callback - The callback function.\n * @returns {any[]} - The new data tree.\n */\nexport var mapTree = function (tree, subItemsField, callback) {\n return tree.map(function (item) { return mapItem(item, subItemsField, callback); }).slice();\n};\n/**\n * Creates a new array with the results of calling the provided callback function\n * on the element which match the `level` in the provided data tree.\n *\n * @param {any[]} tree - The data tree.\n * @param {number[]} level - An array of indexes of each parent and current item in the data tree.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @param {(value: any) => any} callback - The callback function.\n * @returns {any[]} - The new data tree.\n */\nexport var mapTreeItem = function (tree, level, subItemsField, callback) {\n var curData = tree;\n var parentNodes = [];\n for (var i = 0; i < level.length; i++) {\n curData = curData[level[i]];\n curData = Array.isArray(curData) ? curData : curData[subItemsField];\n parentNodes.push(curData);\n }\n var parent = parentNodes.length > 1 ? parentNodes[parentNodes.length - 2] : tree;\n var newItemIndex = level[level.length - 1];\n var newItem = callback(parent[newItemIndex]);\n parent.splice(newItemIndex, 1, newItem);\n};\n/**\n * Similar to the `Object.assign` function. Additionally, creates a new array for the subitems.\n *\n * @param {object} item - The source data item.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @param {object} propsToExtend - The props with which the source data item will be extended.\n * @returns {object} - The target data item.\n */\nexport var extendDataItem = function (item, subItemsField, propsToExtend) {\n var _a;\n return Object.assign({}, item, item[subItemsField] ? (_a = {}, _a[subItemsField] = item[subItemsField].slice(), _a) : {}, propsToExtend || {});\n};\n/**\n * Returns the data item path in the tree based on the level parameter.\n *\n * @param {any[]} tree - The data tree.\n * @param {number[]} level - The level of the target tree item.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @returns {any[]} - The path of the data item.\n */\nexport var getItemPath = function (tree, level, subItemsField) {\n var nodes = [];\n var itemLevel = level.slice();\n if (itemLevel.length) {\n var element = tree[itemLevel.shift() || 0];\n nodes.push(element);\n while (itemLevel.length && subItemsField) {\n element = element[subItemsField][itemLevel.shift() || 0];\n nodes.push(element);\n }\n }\n return nodes;\n};\n","import { extendDataItem, mapTree } from '@progress/kendo-react-common';\nvar GROUP_ID_FIELD = 'groupId';\nvar GROUP_SUBITEMS_COLLECTION = 'items';\n/**\n * @hidden\n */\nvar setGroupId = function (group, depth, parentValue) {\n if (group.items) {\n group[GROUP_ID_FIELD] = \"\" + parentValue + (parentValue && '_') + group.value + group.field;\n if (depth > 1) {\n group.items.forEach(function (item) { return setGroupId(item, depth - 1, group[GROUP_ID_FIELD]); });\n }\n }\n};\n/**\n * Add unique ids to the group items inside data.\n *\n * @param {{data: any[], group: GroupDescriptor[]}} options - The options to be processed.\n */\nexport var setGroupIds = function (options) {\n var group = options.group;\n if (group && group.length && options.data) {\n return options.data.forEach(function (item) { return setGroupId(item, group.length, ''); });\n }\n};\n/**\n * Get all group ids from the data.\n *\n * @param {{data: any[]}} options - The options to be processed.\n * @returns {string[]} - Collection of all group ids from the data.\n */\nexport var getGroupIds = function (options) {\n var groupIds = [];\n mapTree(options.data, GROUP_SUBITEMS_COLLECTION, function (item) {\n if (item[GROUP_ID_FIELD]) {\n groupIds.push(item[GROUP_ID_FIELD]);\n }\n });\n return groupIds;\n};\n/**\n * Apply the `expanded` prop to the group items in data based on the provided collection of group ids.\n *\n * @param {{data: any[], collapsedIds: string[]}} options - The options to be processed.\n * @returns {string[]} - Collection of all group ids from the data.\n */\nexport var setExpandedState = function (options) {\n // TODO: no need to traverse whole tree, only group levels\n return mapTree(options.data, GROUP_SUBITEMS_COLLECTION, function (item) {\n return extendDataItem(item, GROUP_SUBITEMS_COLLECTION, {\n expanded: !options.collapsedIds.some(function (groupId) { return groupId === item[GROUP_ID_FIELD]; })\n });\n });\n};\n","import React, { useState, useEffect, useReducer, useRef, useContext } from 'react';\r\nimport { Button, Nav, NavItem, Modal, InputGroup, FormControl } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridFilterChangeEvent, GridNoRecords, GridDataStateChangeEvent, GridExpandChangeEvent, GridToolbar } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport IEnrolledStudent from '../../model/IEnrolledStudent';\r\nimport StudentService from '../../services/StudentService';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport schoolService from '../../services/SchoolService';\r\nimport IAddCourseStudent from '../../model/IAddCourseStudent';\r\nimport IconStudnetOutline from '../../assets/icons/icon-student-outline';\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { DataResult, process, State } from '@progress/kendo-data-query';\r\nimport { setGroupIds, getGroupIds, setExpandedState } from '@progress/kendo-react-data-tools';\r\ninterface IAssignedStudent {\r\n courseId: any\r\n courseStatus: string\r\n courseSource: string\r\n coursePurpose: string\r\n isEditable?: boolean | false\r\n locationCode: string\r\n onChangeStudentCount: any\r\n updateCourseStatus: any\r\n isSharedCourse: boolean\r\n}\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nconst initialState: State = {\r\n group: [{ field: 'sectionId' }]\r\n};\r\n\r\nconst processWithGroups = (data: IEnrolledStudent[], dataState: State) => {\r\n let newDataState = process(data, dataState);\r\n setGroupIds({ data: newDataState.data, group: dataState.group });\r\n newDataState.data = newDataState.data.map((group) => {\r\n if (group.value && group.items && group.items.length > 0) {\r\n group.value = (\r\n\r\n <div style={{ width: \"100%\", display: 'flex', justifyContent: 'space-between' }}> <span>{group.items[0].sectionName}</span> <span style={{\r\n display: 'inline-block',\r\n backgroundColor: '#007bff',\r\n color: '#fff',\r\n padding: '2px 8px',\r\n borderRadius: '4px',\r\n }}>{group.items.length}</span></div>\r\n\r\n );\r\n }\r\n return group;\r\n });\r\n return newDataState;\r\n};\r\n\r\n\r\nexport default function EnrolledStudent(studentProps: IAssignedStudent) {\r\n const mountedRef = useRef(true);\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [courseStudent, setCourseStudent] = useState<IEnrolledStudent[]>([]);\r\n const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [errorMsg, setErrorMsg] = useState<string>('');\r\n const [data, setRowData] = useState<IEnrolledStudent[]>([]);\r\n const [dataCopy, setRowCopyData] = useState<IEnrolledStudent[]>([]);\r\n const [deleteStudentId, setDeleteStudent] = useState<number>(0);\r\n const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n const [orginalSchoolList, setOrginalSchoolList] = useState<IDropDownValue[]>([]);\r\n const [schoolList, setSchoolList] = useState<IDropDownValue[]>([]);\r\n const [resultState, setResultState] = React.useState<DataResult>();\r\n const [collapsedState, setCollapsedState] = React.useState<string[]>([]);\r\n const [gridData, setGridData] = React.useState<any>();\r\n const initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n };\r\n const [filter, setFilter] = useState(initialFilter);\r\n const [page, setPage] = React.useState(initialDataState);\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const getStudent = (locationCode: string) => {\r\n StudentService.getBySchoolDBN(locationCode).then(response => {\r\n let students = response.data.map((s: any) => ({\r\n studentId: s.studentId,\r\n firstName: s.firstName,\r\n lastName: s.lastName,\r\n fullName: s.lastName + ' ' + s.firstName,\r\n userName: s.userName,\r\n locationName: s.locationName,\r\n schoolDBN: s.schoolDBN,\r\n role: s.role,\r\n gradeLevelCode: s.gradeLevelCode,\r\n }))\r\n students = students.filter((el: any) => !courseStudent.find((e: any) => e.studentId == el.studentId))\r\n setRowData(students)\r\n setRowCopyData(students)\r\n })\r\n }\r\n const getAssignedStudent = (CourseId: number) => {\r\n StudentService.getByCourseId(CourseId).then(response => {\r\n let studentData = response.data as IEnrolledStudent[];\r\n studentData.forEach(x => x.courseSource = studentProps.courseSource);\r\n studentData.forEach(x => x.courseStatus = studentProps.courseStatus);\r\n setCourseStudent(studentData)\r\n var dataResult = processWithGroups(studentData, initialState)\r\n setResultState(dataResult)\r\n setCollapsedState(collapsedState.length ? [] : getGroupIds({ data: dataResult.data }));\r\n const newData = setExpandedState({\r\n data: dataResult.data,\r\n collapsedIds: getGroupIds({ data: dataResult.data })\r\n });\r\n setGridData(newData)\r\n })\r\n\r\n }\r\n const getSchoolLocations = () => {\r\n schoolService.getData().then(response => {\r\n let dropDownData = response.data.map((sl: any) => ({\r\n id: sl.locationCode,\r\n text: sl.locationCode + ' -- ' + sl.schoolName\r\n }));\r\n setSchoolList(dropDownData)\r\n setOrginalSchoolList(dropDownData)\r\n });\r\n }\r\n const filterData = (filter: any) => {\r\n let data = orginalSchoolList.slice();\r\n return filterBy(data, filter);\r\n }\r\n\r\n const filterChange = (event: any) => {\r\n let data = filterData(event.filter)\r\n setSchoolList(data)\r\n }\r\n\r\n const handleChange = (event: any) => {\r\n let selectedSchool = event.target.value;\r\n getStudent(selectedSchool.id);\r\n }\r\n\r\n const getDefaultValue = (schoolList: any) => {\r\n let school = schoolList.find((s: any) => s.id == studentProps.locationCode)\r\n if (school) {\r\n return school\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n\r\n getAssignedStudent(studentProps.courseId);\r\n setUserProfile(LocalStorageService.getUserProfile())\r\n return () => { mountedRef.current = false }\r\n }, [studentProps.locationCode]);\r\n\r\n const [studentVisible, setStudentVisible] = useState<boolean>(false);\r\n const toggleStudentDialog = () => {\r\n setStudentVisible(!studentVisible)\r\n let data = orginalSchoolList.slice();\r\n setSchoolList(data)\r\n setHeaderCheckBox(false);\r\n }\r\n const addStudent = () => {\r\n setErrorMsg('');\r\n getSchoolLocations();\r\n getStudent(studentProps.locationCode);\r\n setFormMode(FormMode.New)\r\n toggleStudentDialog()\r\n }\r\n\r\n const onGridCheckBoxClick = (dataItem: any) => {\r\n dataItem.isSelected = !dataItem.isSelected;\r\n forceUpdate();\r\n }\r\n\r\n const [headerCheckBoxValue, setHeaderCheckBox] = useState(false);\r\n const onHeaderCheckBoxClick = (event: any, products?: any) => {\r\n let checked = event.target.checked;\r\n if (checked == true) {\r\n data.map((t: any) => t.isSelected = true)\r\n } else {\r\n data.map((t: any) => t.isSelected = false)\r\n }\r\n setHeaderCheckBox(checked)\r\n }\r\n const removeStudent = (studentId: number) => {\r\n setDeleteStudent(studentId)\r\n setFormMode(FormMode.Delete)\r\n }\r\n\r\n\r\n const [searchStudentId, setSearchStudentId] = useState(0);\r\n const searchStudentChange = (event: any) => {\r\n const target = event.target\r\n if (!target.value || target.value == 0) {\r\n setErrorMsg('')\r\n setRowData(dataCopy)\r\n }\r\n setSearchStudentId(target.value)\r\n };\r\n const getStudentById = () => {\r\n setErrorMsg('')\r\n if (searchStudentId == 0) {\r\n setErrorMsg(\"Please enter student ID \")\r\n return\r\n }\r\n setRowData([])\r\n StudentService.getStudentById(searchStudentId).then(response => {\r\n if (response.data) {\r\n let student = response.data as IEnrolledStudent\r\n student.fullName = student.lastName + ' ' + student.firstName\r\n let students = []\r\n students.push(student)\r\n setRowData(students)\r\n setPage(initialDataState)\r\n } else {\r\n setErrorMsg(\"Student is not exist\")\r\n }\r\n })\r\n }\r\n\r\n const onSave = (event: any, actionType: FormMode) => {\r\n switch (actionType) {\r\n case FormMode.New:\r\n let addCourseStudent: IAddCourseStudent = {\r\n courseId: studentProps.courseId,\r\n courseSchoolDBN: studentProps.locationCode,\r\n schoolYear: +orginalSchoolYear.id,\r\n student: []\r\n }\r\n addCourseStudent.student = data.filter(x => x.isSelected);\r\n\r\n if (addCourseStudent.student.length == 0) {\r\n setErrorMsg('Please select atleast one student to add.');\r\n return;\r\n }\r\n let studentIds = courseStudent.map(a => a.studentId);\r\n let addedStudent = addCourseStudent.student.filter((x) => !studentIds.includes(x.studentId));;\r\n addCourseStudent.student = addedStudent;\r\n\r\n if (addedStudent?.length == 0) {\r\n setErrorMsg('Selected students are already added.');\r\n return;\r\n }\r\n var currentStudentList = courseStudent;\r\n currentStudentList = currentStudentList.concat(addedStudent);\r\n StudentService.post(addCourseStudent).then(response => {\r\n studentProps.onChangeStudentCount(addedStudent.length, studentProps.courseId)\r\n studentProps.updateCourseStatus(studentProps.courseId)\r\n setCourseStudent(currentStudentList);\r\n setStudentVisible(!studentVisible)\r\n setFormMode(FormMode.None)\r\n setHeaderCheckBox(false);\r\n });\r\n break;\r\n case FormMode.Delete:\r\n StudentService.delete(studentProps.courseId, deleteStudentId).then(response => {\r\n let courseStudentList = courseStudent.filter(x => x.studentId != deleteStudentId);\r\n studentProps.onChangeStudentCount(-1, studentProps.courseId)\r\n studentProps.updateCourseStatus(studentProps.courseId)\r\n setCourseStudent(courseStudentList);\r\n setFormMode(FormMode.None)\r\n });\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n\r\n }\r\n }\r\n }\r\n\r\n const studentNameCell = (props: any) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n } else {\r\n return (\r\n <td>\r\n <div> {props.dataItem.lastName} {props.dataItem.firstName}</div>\r\n <div className=\"small\">OSIS:{props.dataItem.studentId}</div>\r\n </td>\r\n );\r\n }\r\n }\r\n\r\n const locationCell = (props: any) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n } else {\r\n return (\r\n <td>\r\n <div className=\"small\">Associated Location:</div>\r\n <div>{props.dataItem.schoolDBN}</div>\r\n </td>\r\n );\r\n }\r\n }\r\n const enrolledInCourseCell = (props: any) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n } else {\r\n return (\r\n <td>\r\n <div className=\"small\">Enrolled in Course:</div>\r\n <div>{props.dataItem.sectionName}</div>\r\n </td>\r\n );\r\n }\r\n }\r\n\r\n\r\n\r\n const studentIconCell = (props: any) => {\r\n if (props.rowType === \"groupHeader\") {\r\n return null;\r\n } else {\r\n return (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className=\"svg-app-icon text-secondary mr-3\" style={{ height: \"40px\" }}>\r\n <IconStudnetOutline />\r\n </div>\r\n </div>\r\n </td>\r\n );\r\n }\r\n\r\n\r\n };\r\n const onExpandChange = React.useCallback(\r\n (event: GridExpandChangeEvent) => {\r\n\r\n const item = event.dataItem;\r\n\r\n if (item.groupId) {\r\n const collapsedIds = !event.value ?\r\n [...collapsedState, item.groupId] :\r\n collapsedState.filter(groupId => groupId !== item.groupId);\r\n setCollapsedState(collapsedIds);\r\n var dataResult = processWithGroups(courseStudent, initialState)\r\n\r\n const newData = setExpandedState({\r\n data: dataResult?.data,\r\n collapsedIds: collapsedIds\r\n });\r\n setGridData(newData)\r\n }\r\n },\r\n [collapsedState]\r\n );\r\n\r\n return (\r\n <div>\r\n {studentVisible && <Dialog title={\"Add Students\"} onClose={toggleStudentDialog} style={{ width: \"75%\", position: \"fixed\", left: \"15%\", top: \"20%\", height: \"350px\" }} >\r\n <div id=\"dropDownParent\">\r\n <div hidden={errorMsg.length == 0}>\r\n <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n {errorMsg}\r\n <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div className=\"d-flex justify-content-between align-items-center\" >\r\n <div className=\"text-sm-left text-left\">\r\n <InputGroup >\r\n <FormControl\r\n placeholder=\"Student Id\"\r\n onChange={searchStudentChange}\r\n />\r\n <Button variant=\"outline-secondary\" id=\"button-addon1\" onClick={getStudentById} >\r\n Search\r\n </Button>\r\n </InputGroup>\r\n </div>\r\n <div className=\"text-sm-right text-left\" >\r\n <DropDownList\r\n data={schoolList}\r\n defaultValue={getDefaultValue(schoolList)}\r\n textField=\"text\"\r\n filterable={true}\r\n onChange={handleChange}\r\n onFilterChange={filterChange}\r\n popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n style={{ maxWidth: '400px', width: '100%' }}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"mt-3\" style={{ height: \"400px\" }}>\r\n <Grid\r\n data={filterBy(data, filter).slice(page.skip, page.take + page.skip)}\r\n filter={filter}\r\n filterable={true}\r\n skip={page.skip}\r\n take={page.take}\r\n total={data.length}\r\n pageable={true}\r\n scrollable={\"none\"}\r\n onPageChange={pageChange}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}>\r\n <GridColumn field=\"isSelected\" width=\"40px\" filterable={false} headerCell={props => (<input type=\"checkbox\" checked={headerCheckBoxValue} onChange={(e) => onHeaderCheckBoxClick(e)} />)} cell={props => (\r\n <td>\r\n <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"UserIcon\" title=\" \" filterable={false} width=\"50px\" cell={\r\n props => (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className=\"svg-app-icon text-secondary mr-3\" style={{ height: \"30px\" }}>\r\n <IconStudnetOutline />\r\n </div>\r\n </div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"fullName\" title=\"Name\" cell={\r\n props => (\r\n <td>\r\n <div>{props.dataItem.fullName}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"studentId\" title=\"OSIS\" width=\"200px\" />\r\n <GridColumn field=\"userName\" title=\"Username\" width=\"200px\" />\r\n <GridColumn field=\"gradeLevelCode\" title=\"Grade\" width=\"200px\" />\r\n <GridColumn field=\"schoolDBN\" title=\"Associated Location\" filterable={false} />\r\n </Grid>\r\n\r\n </div>\r\n\r\n </div>\r\n <DialogActionsBar>\r\n <Button className=\"m-3\" variant=\"secondary\" onClick={toggleStudentDialog}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Add Students</Button>\r\n </DialogActionsBar>\r\n </Dialog>}\r\n <Modal\r\n show={formMode == FormMode.Delete}\r\n onHide={() => { setFormMode(FormMode.None) }}\r\n animation={false}\r\n backdrop=\"static\"\r\n keyboard={false}>\r\n\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Remove Student</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n Are you sure you want to remove student ?\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n <div className=\"card mt-4\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-9\">Enrolled Students ({courseStudent.length})</div>\r\n {studentProps.courseSource.toLowerCase() == 'stars' || studentProps.coursePurpose == 'Demo' || studentProps.courseStatus.toLowerCase() == 'closed' ? '' :\r\n <div className=\"col-3 text-right\">\r\n {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && !studentProps.isSharedCourse ?\r\n <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { addStudent() }}>\r\n <i className=\"fas fa-plus\"></i>\r\n </button> : studentProps.isSharedCourse && <span className='small'> (auto-synced from the courses above) </span>}\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n <div className=\"card-body\">\r\n <Grid\r\n data={studentProps.isSharedCourse ? gridData : courseStudent}\r\n // scrollable={\"none\"}\r\n className=\"k-grid-no-header group-section\"\r\n groupable={{ enabled: studentProps.isSharedCourse, footer: 'none' }}\r\n group={initialState.group}\r\n onExpandChange={onExpandChange}\r\n expandField=\"expanded\"\r\n\r\n >\r\n {/* <GridColumn field=\"expanded\" width=\"80px\" title=' ' /> */}\r\n <GridNoRecords>\r\n No Enrolled Students\r\n </GridNoRecords>\r\n <GridColumn field=\"UserIcon\" title=\" \" width=\"80px\" cell={\r\n studentIconCell} />\r\n <GridColumn field=\"Name\" title=\"tiltle\" cell={\r\n studentNameCell} />\r\n {!studentProps.isSharedCourse &&\r\n <GridColumn field=\"\" title=\"Title\" cell={\r\n props => (\r\n <td>\r\n <div className=\"small\">Title:</div>\r\n <div>Student</div>\r\n </td>\r\n )} />}\r\n <GridColumn field=\"\" title=\"Username\" cell={\r\n props => (\r\n <td>\r\n <div className=\"small\">Username:</div>\r\n <div>{props.dataItem.userName}</div>\r\n </td>\r\n )} />\r\n {studentProps.isSharedCourse && <GridColumn field=\"EnrolledInCourse\" title=\"Enrolled in Course\" cell={enrolledInCourseCell} />}\r\n <GridColumn field=\"schoolDBN\" title=\"Associated Location\" cell={locationCell} />\r\n {!studentProps.isSharedCourse &&\r\n <GridColumn field=\"\" title=\" \" cell={\r\n props => (\r\n <td className=\"text-right menu-btn\">\r\n {(userProfile?.role?.roleName == 'Central Staff'\r\n || props.dataItem?.courseStatus?.toLowerCase() === 'closed'\r\n || props.dataItem?.courseSource?.toLowerCase() === 'stars') || studentProps.isSharedCourse\r\n ? '' :\r\n <button type=\"button\" className=\"btn btn-sm btn-outline-secondary\" onClick={(e) => { removeStudent(props.dataItem.studentId) }}>\r\n <i className=\"fas fa-minus\"></i>\r\n </button>\r\n }\r\n </td>\r\n )} />\r\n }\r\n </Grid>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Button, Form, Row, Col, InputGroup} from 'react-bootstrap';\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport { RadioButton} from '@progress/kendo-react-inputs';\r\nimport ICodeSet from '../../model/Codeset'\r\nimport ICourseDetail from '../../model/ICourseDetail';\r\nimport Moment from 'moment';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { filterBy} from \"@progress/kendo-data-query\";\r\n\r\n\r\ninterface ICourseContent {\r\n courseDetail: ICourseDetail\r\n purpose: ICodeSet[],\r\n location: string,\r\n schoolYear: Number,\r\n contentType: IDropDownValue[],\r\n originalTeacherList: IDropDownValue[],\r\n defaultTeacher: IDropDownValue,\r\n courseSaveErrorMessage: string,\r\n teacher: IDropDownValue[],\r\n setCourseSaveErrorMessage: any,\r\n formmode: FormMode,\r\n teacherById: (event: React.MouseEvent<HTMLElement, MouseEvent>, data: string) => void,\r\n onSearch: (event: React.MouseEvent<HTMLElement, MouseEvent>, data: IDropDownValue[]) => void,\r\n onSave: (event: React.MouseEvent<HTMLElement, MouseEvent>, actionType: FormMode, data: ICourseDetail) => void\r\n\r\n}\r\n\r\nexport default function AddNewCourse(props: ICourseContent) {\r\n const mountedRef = useRef(true);\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [formValue, setFormValue] = useState<ICourseDetail>(props.courseDetail);\r\n const [selectedValue, setSelectedValue] = useState(\"Demo\");\r\n const [searchTeacherEin, setSearchTeacherEin] = useState(\"\");\r\n const [courseType, setCourseType] = useState<string>();\r\n const [courseTypes ] = useState([\r\n { key: 1, value: 'manual', text: 'Manual Course', isDefaultSelected: props.formmode == FormMode.New || (props.courseDetail.courseType && props.courseDetail.courseType.toLowerCase() == \"manual\") },\r\n { key: 2, value: 'shared', text: 'Shared Instruction Course', isDefaultSelected: props.courseDetail.courseType && props.courseDetail.courseType.toLowerCase() == \"shared\" },\r\n ])\r\n const [purposeList, setPurposeList] = useState<ICodeSet[]>(props.purpose);\r\n const [contentTypeList, setContentTypeList] = useState<IDropDownValue[]>([]);\r\n \r\n\r\n const handleRadioChange = React.useCallback(\r\n (e: any) => {\r\n setSelectedValue(e.value);\r\n },\r\n [setSelectedValue]\r\n );\r\n\r\n const excludeDemoPurpos = () =>{\r\n return props.purpose.filter(p=>p.displayText!=\"Demo\")\r\n }\r\n\r\n useEffect(() => {\r\n setFormMode(props.formmode)\r\n if(props.courseDetail.courseType && props.courseDetail.courseType.toLowerCase() == \"shared\"){\r\n let purposList = excludeDemoPurpos()\r\n setPurposeList(purposList)\r\n }else{\r\n setPurposeList(props.purpose)\r\n }\r\n \r\n \r\n if (props.courseDetail.purpose) {\r\n setSelectedValue(props.courseDetail.purpose)\r\n }\r\n setContentTypeList(props.contentType)\r\n setFormValue(props.courseDetail)\r\n setFormValue({ ...formValue, purpose: selectedValue });\r\n let type = props.courseDetail.courseType ? props.courseDetail.courseType.toLowerCase() : \"manual\"\r\n \r\n \r\n setCourseType(type)\r\n if (props.formmode == FormMode.New) {\r\n setFormValue({ ...formValue, schoolDBN: props.location, schoolYear: +props.schoolYear });\r\n }\r\n\r\n return () => { mountedRef.current = false }\r\n }, [props.courseDetail.purpose , props.purpose]);\r\n\r\n useEffect(() => {\r\n\r\n if (props.defaultTeacher.id) {\r\n setFormValue({ ...formValue, teacherOfRecord: props.defaultTeacher.id });\r\n }\r\n return () => { mountedRef.current = false }\r\n }, [props.defaultTeacher]);\r\n\r\n useEffect(() => {\r\n let error = {\r\n courseTitleError: '',\r\n purposeError: '',\r\n courseContentTypeError: '',\r\n teacherOfRecordError: '',\r\n startDateError: '',\r\n endDateError: '',\r\n courseNameDublicateError: ''\r\n\r\n };\r\n error.courseNameDublicateError = props.courseSaveErrorMessage\r\n setErrors(error);\r\n\r\n }, [props.courseSaveErrorMessage]);\r\n\r\n const handleChange = (event: any) => {\r\n const target = event.target //as HTMLSelectElement\r\n setFormValue({ ...formValue, [target.name]: target.value });\r\n\r\n };\r\n const contentTypeChange = (event: DropDownListChangeEvent) => {\r\n const target = event.target //as HTMLSelectElement\r\n setFormValue({ ...formValue, courseContentType: target.value.text });\r\n\r\n };\r\n const teacherChange = (event: DropDownListChangeEvent) => {\r\n const target = event.target //as HTMLSelectElement\r\n setFormValue({ ...formValue, teacherOfRecord: target.value.id });\r\n };\r\n\r\n const [errors, setErrors] = useState({\r\n courseTitleError: '',\r\n purposeError: '',\r\n courseContentTypeError: '',\r\n teacherOfRecordError: '',\r\n startDateError: '',\r\n endDateError: '',\r\n courseNameDublicateError: ''\r\n })\r\n\r\n const validate = () => {\r\n let error = {\r\n courseTitleError: '',\r\n purposeError: '',\r\n courseContentTypeError: '',\r\n teacherOfRecordError: '',\r\n startDateError: '',\r\n endDateError: '',\r\n courseNameDublicateError: ''\r\n\r\n };\r\n if (!formValue.courseName) { error.courseTitleError = \"Course Title is required\"; }\r\n const regex = /[!@#$%^&*~`\\\\]+/;\r\n if (formValue.courseName && regex.test(formValue.courseName)) { error.courseTitleError = \"Some characters are not allowed in course title for example : !@#$%^&*\\\\~` \"; }\r\n if (!formValue.courseContentType) { error.courseContentTypeError = \"Course Content is required\"; }\r\n\r\n if (!formValue.teacherOfRecord) { error.teacherOfRecordError = \"Teacher is required\"; }\r\n if (!formValue.endDate){ error.endDateError = \"Course End date is required.\"}\r\n if (!formValue.startDate){ error.startDateError = \"Course Start date is required.\"}\r\n if (Moment(formValue.endDate).format('YYYY-MM-DD') < Moment(formValue.startDate).format('YYYY-MM-DD')) { error.endDateError = \"End date must not be less than start date.\" }\r\n if (Moment(formValue.endDate).format('YYYY-MM-DD') <= Moment(Date.now()).format('YYYY-MM-DD')) { error.endDateError = \"End date must be greater than today's date.\" }\r\n\r\n\r\n setErrors(error);\r\n if (error.courseTitleError || error.purposeError || error.courseContentTypeError || error.teacherOfRecordError || error.startDateError || error.endDateError) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const onSave = (event: React.MouseEvent<HTMLElement>, actionType: FormMode) => {\r\n let formData: ICourseDetail = {\r\n courseId: Number(formValue.courseId),\r\n schoolDBN: formValue.schoolDBN,\r\n schoolYear: formValue.schoolYear,\r\n courseName: formValue.courseName,\r\n courseSource: formValue.courseSource,\r\n isMerged: Number(formValue.isMerged),\r\n purpose: selectedValue,\r\n mergeCourses: formValue.mergeCourses,\r\n courseContentType: formValue.courseContentType,\r\n teacherOfRecord: formValue.teacherOfRecord,\r\n courseType : courseType,\r\n startDate: formValue.startDate,\r\n endDate: formValue.endDate,\r\n createdBy: formValue.createdBy,\r\n createdOn: formValue.createdOn,\r\n courseStatus: formValue.courseStatus,\r\n oldTeacherId: formValue.oldTeacherId,\r\n courseUniqueId: props.courseDetail.courseUniqueId,\r\n mergedOn: new Date(),\r\n mergedBy: ''\r\n };\r\n let error = {\r\n courseTitleError: '',\r\n purposeError: '',\r\n courseContentTypeError: '',\r\n teacherOfRecordError: '',\r\n startDateError: '',\r\n endDateError: '',\r\n courseNameDublicateError: ''\r\n\r\n };\r\n switch (actionType) {\r\n case FormMode.New:\r\n setFormMode(FormMode.New)\r\n // messageService.edit(message).then(response => {\r\n // // Display Success message\r\n // })\r\n event.preventDefault();\r\n if (validate()) {\r\n props.onSave(event, FormMode.New, formData);\r\n error.courseNameDublicateError = props.courseSaveErrorMessage\r\n setErrors(error);\r\n }\r\n break;\r\n case FormMode.Edit:\r\n setFormMode(FormMode.Edit)\r\n // messageService.edit(message).then(response => {\r\n // // Display Success message\r\n // })\r\n event.preventDefault();\r\n if (validate()) {\r\n props.onSave(event, FormMode.Edit, formData);\r\n error.courseNameDublicateError = props.courseSaveErrorMessage\r\n setErrors(error);\r\n\r\n }\r\n break;\r\n default:\r\n props.onSave(event, FormMode.None, formData);\r\n error.courseNameDublicateError = \"\"\r\n props.setCourseSaveErrorMessage(\"\")\r\n setErrors(error);\r\n break;\r\n\r\n }\r\n }\r\n const defaultItem = {\r\n text: props.courseDetail.courseContentType\r\n };\r\n\r\n const filterData = (filter: any) => {\r\n let data = props.originalTeacherList.slice();\r\n return filterBy(data, filter);\r\n }\r\n\r\n const filterChange = (event: any) => {\r\n let data = filterData(event.filter)\r\n props.onSearch(event, data);\r\n }\r\n\r\n const searchTeacherChange = (event: any) => {\r\n const target = event.target\r\n setSearchTeacherEin(target.value)\r\n };\r\n\r\n const onTeacherSearch = (event: any) => {\r\n if (searchTeacherEin != '') {\r\n props.teacherById(event, searchTeacherEin)\r\n }\r\n }\r\n\r\n const changeCourseType = (e: any) => {\r\n \r\n if(e.value == \"shared\"){\r\n let purposList = excludeDemoPurpos()\r\n setPurposeList(purposList)\r\n }else{\r\n setPurposeList(props.purpose)\r\n }\r\n setSelectedValue(\"Credit Bearing\")\r\n setCourseType(e.value)\r\n }\r\n\r\n return (\r\n <div>\r\n <Dialog title={formMode == FormMode.Edit ? \"Edit Course\" : \"Add Course\"} onClose={(e: any) => onSave(e, FormMode.None)} height={600}>\r\n <Form>\r\n {!(formMode == FormMode.Edit && props.courseDetail.courseSource.toLowerCase() == 'stars') &&\r\n <div style={{ backgroundColor: \"white\", padding: \"10px\" }}>\r\n <Form.Group controlId=\"courseType\">\r\n {courseTypes.map((item) => (\r\n <Form.Label className=\"mr-2\" key={item.key}>\r\n <RadioButton hidden={false} disabled={formMode == FormMode.Edit ? true : false} key={item.key} defaultChecked={item.isDefaultSelected? item.isDefaultSelected : false} name=\"courseType\" value={item.value} label={item.text.toString()} onChange={changeCourseType} ></RadioButton>\r\n </Form.Label>\r\n ))}\r\n <p style={{ color: \"#707782\", fontSize: \"13px\" , margin:\"2px\"}}>\r\n {courseType == 'manual' ? \"Enroll students manually. Student enrollments will not be auto-synced.\" : \"Enroll students from school courses. Student enrollments will be auto-synced.\"}\r\n </p>\r\n </Form.Group>\r\n </div> }\r\n <Form.Group controlId=\"courseName\">\r\n <Form.Label>Course Title</Form.Label>\r\n <Form.Control type=\"text\" name=\"courseName\" value={formValue.courseName ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.courseTitleError}</Form.Text>\r\n <Form.Text className=\"text-danger\">{errors.courseNameDublicateError}</Form.Text>\r\n </Form.Group>\r\n <Form.Label>Purpose</Form.Label>\r\n <Form.Group>\r\n {purposeList.map((purposeOptions) => (\r\n <Form.Label className=\"mr-2\" key={purposeOptions.id}>\r\n <RadioButton hidden={false} disabled={(formMode == FormMode.Edit && props.courseDetail.courseSource.toLowerCase() == 'stars') ? true : false} key={purposeOptions.id} defaultChecked={true} name=\"purpose\" checked={selectedValue === purposeOptions.displayText} value={purposeOptions.displayText} label={purposeOptions.displayText.toString()} onChange={handleRadioChange}></RadioButton>\r\n </Form.Label>\r\n ))}\r\n </Form.Group>\r\n <Form.Group controlId=\"contentType\">\r\n <Form.Label>Course Content Type</Form.Label>\r\n <DropDownList\r\n style={{ width: '100%' }}\r\n defaultValue={defaultItem}\r\n disabled={(formMode == FormMode.Edit && props.courseDetail.courseSource.toLowerCase() == 'stars') ? true : false}\r\n data={props.contentType}\r\n textField=\"text\"\r\n onChange={contentTypeChange}\r\n />\r\n <Form.Text className=\"text-danger\">{errors.courseContentTypeError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"teacherOfRecord\">\r\n <Form.Label>Teacher Of Record</Form.Label>\r\n <DropDownList\r\n style={{ width: '100%' }}\r\n defaultValue={props.defaultTeacher}\r\n disabled={(formMode == FormMode.Edit && props.courseDetail.courseSource.toLowerCase() == 'stars') ? true : false}\r\n data={props.teacher}\r\n textField=\"text\"\r\n value={props.teacher.find(x => x.id == formValue.teacherOfRecord)}\r\n filterable={true}\r\n onFilterChange={filterChange}\r\n onChange={teacherChange}\r\n />\r\n <Form.Text className=\"text-danger\">{errors.teacherOfRecordError}</Form.Text>\r\n </Form.Group>\r\n <InputGroup className=\"mb-3\">\r\n <Form.Control\r\n aria-label=\"Example text with button addon\"\r\n aria-describedby=\"basic-addon1\"\r\n disabled={(formMode == FormMode.Edit && props.courseDetail.courseSource.toLowerCase() == 'stars') ? true : false}\r\n placeholder=\"Teacher EIN\"\r\n onChange={searchTeacherChange}\r\n />\r\n <Button variant=\"outline-secondary\" id=\"button-addon1\" onClick={(e) => onTeacherSearch(e)} >\r\n Search\r\n </Button>\r\n </InputGroup>\r\n <Row>\r\n <Col>\r\n <Form.Group controlId=\"startDate\">\r\n <Form.Label>Start Date</Form.Label>\r\n <Form.Control type=\"date\" name=\"startDate\" value={Moment(formValue.startDate).format('YYYY-MM-DD')} onChange={handleChange}></Form.Control>\r\n <Form.Text className=\"text-danger\">{errors.startDateError}</Form.Text>\r\n </Form.Group>\r\n </Col>\r\n <Col>\r\n <Form.Group controlId=\"endDate\">\r\n <Form.Label>End Date</Form.Label>\r\n <Form.Control type=\"date\" name=\"endDate\" value={Moment(formValue.endDate).format('YYYY-MM-DD')} onChange={handleChange}></Form.Control>\r\n <Form.Text className=\"text-danger\">{errors.endDateError}</Form.Text>\r\n </Form.Group>\r\n </Col>\r\n </Row>\r\n </Form>\r\n <DialogActionsBar>\r\n <Button className=\"m-2\" variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </DialogActionsBar>\r\n </Dialog>\r\n\r\n </div>\r\n )\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Modal, Button, Form, Dropdown, } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridToolbar } from '@progress/kendo-react-grid';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport { RadioButton, RadioButtonChangeEvent } from '@progress/kendo-react-inputs';\r\nimport ICourses from '../../model/ICourses';\r\nimport IMergeCourses from '../../model/IMergeCourses';\r\nimport {IAssignedTeachers} from '../../model/IAssignedTeachers';\r\nimport IMergeCourseSpec from \"../../model/IMergeCourseSpec\";\r\n\r\ninterface ICourseMergeContent {\r\n mergeData: IMergeCourseSpec[]\r\n courses: ICourses[],\r\n formmode: FormMode,\r\n courseCount: Number,\r\n onMergeClose: (data: FormMode) => void,\r\n onMerge: (event: React.MouseEvent<HTMLElement, MouseEvent>, actionType: FormMode, data: IMergeCourseSpec[]) => void\r\n\r\n}\r\n\r\nexport default function MergeCourses(props: ICourseMergeContent) {\r\n const mountedRef = useRef(true);\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [mergeData, setMergeData] = useState<ICourses[]>([]);\r\n const [mergeCourseData, setMergeCourseData] = useState<IMergeCourseSpec[]>([]);\r\n const [selectedValue, setSelectedValue] = useState(props.courses[0].courseId);\r\n\r\n const handleRadioChange = React.useCallback(\r\n (e: any) => {\r\n setSelectedValue(e.value)\r\n },\r\n [setSelectedValue]\r\n );\r\n useEffect(() => {\r\n setFormMode(props.formmode)\r\n setMergeData(props.courses)\r\n setMergeCourseData(props.mergeData)\r\n return () => { mountedRef.current = false }\r\n }, []);\r\n\r\n\r\n const GridColumnCourses = (props: any) => {\r\n return (\r\n <td>\r\n <h5 className=\"mb-0\">{props.dataItem.courseName}</h5>\r\n <div className=\"text-secondary\">\r\n <div>Course Code: {props.dataItem.courseCode}</div>\r\n <div>Assigned Teachers: {props.dataItem.courseTeachers.map((item: IAssignedTeachers) => { return item.teacherInitial }).join(',')}</div>\r\n <div>Students: {props.dataItem.totalStudentEnrolled}</div>\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n const GridColumnButton = (props: any) => {\r\n return (\r\n <td className=\"text-right\" style={{ overflow: 'visible' }}>\r\n\r\n <RadioButton type=\"radio\" label=\"Merge into this course\" key={props.dataItem.courseId} value={props.dataItem.courseId} checked={selectedValue === props.dataItem.courseId} onChange={handleRadioChange}></RadioButton>\r\n </td>\r\n )\r\n }\r\n\r\n const onMerge = (event: React.MouseEvent<HTMLElement>, actionType: FormMode) => {\r\n mergeCourseData.forEach(element => {\r\n if (element.courseId != selectedValue) {\r\n element.isPrimary = false\r\n }\r\n else {\r\n element.isPrimary = true\r\n }\r\n });\r\n\r\n switch (actionType) {\r\n case FormMode.Merge:\r\n setFormMode(FormMode.Merge)\r\n event.preventDefault();\r\n if (validate()) {\r\n props.onMerge(event, FormMode.Merge, mergeCourseData);\r\n }\r\n break;\r\n default:\r\n props.onMerge(event, FormMode.None, []);\r\n break;\r\n\r\n }\r\n }\r\n\r\n const [errors, setErrors] = useState({\r\n mergeError: ''\r\n })\r\n const validate = () => {\r\n let error = {\r\n mergeError: '',\r\n };\r\n if (props.courseCount < 2) { error.mergeError = \"Choose 2 or more courses\"; }\r\n if (props.courseCount > 10) { error.mergeError = \"Choose less than 10 courses\"; }\r\n setErrors(error);\r\n if (error.mergeError) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n return (\r\n <div>\r\n <Modal size=\"lg\" backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Merge} onHide={() => props.onMergeClose(FormMode.None)}>\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Merge Courses</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <Form>\r\n <label>Merge Following {props.courseCount} Courses</label>\r\n <Grid\r\n data={mergeData}\r\n scrollable={\"none\"}\r\n >\r\n <GridColumn field=\"courseName\" title=\"Courses\" cell={GridColumnCourses} />\r\n <GridColumn field=\"\" title=\"\" className=\"text-right\" cell={GridColumnButton} />\r\n </Grid>\r\n <Form.Text className=\"text-danger\">{errors.mergeError}</Form.Text>\r\n </Form>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => onMerge(e, FormMode.None)}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onMerge(e, formMode)}>Merge Courses</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </div>\r\n )\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Modal, Button, Form } from 'react-bootstrap';\r\nimport { FormMode } from '../../services/Utility'\r\nimport IMergeCourseSpec from \"../../model/IMergeCourseSpec\";\r\n\r\ninterface IMergeErrorMessage {\r\n\r\n mergeMessage:string,\r\n formmode: FormMode,\r\n onMergeClose:(data:FormMode)=>void,\r\n onMerge: (event: React.MouseEvent<HTMLElement, MouseEvent>, actionType: FormMode, data: IMergeCourseSpec[]) => void\r\n\r\n}\r\n\r\nexport default function MergeError(props: IMergeErrorMessage) {\r\n const mountedRef = useRef(true);\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n\r\n useEffect(() => {\r\n setFormMode(props.formmode)\r\n return () => { mountedRef.current = false }\r\n }, []);\r\n\r\n\r\n\r\n\r\n const onMerge = (event: React.MouseEvent<HTMLElement>, actionType: FormMode) => {\r\n\r\n\r\n switch (actionType) {\r\n case FormMode.Merge:\r\n setFormMode(FormMode.Merge)\r\n // messageService.edit(message).then(response => {\r\n // // Display Success message\r\n // })\r\n event.preventDefault();\r\n\r\n break;\r\n default:\r\n props.onMerge(event, FormMode.None, []);\r\n break;\r\n\r\n }\r\n }\r\n\r\n const [errors, setErrors] = useState({\r\n mergeError: ''\r\n })\r\n return (\r\n <div>\r\n <Modal backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Error} onHide={() => props.onMergeClose(FormMode.None)}>\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Merge Error</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <Form>\r\n <label>{props.mergeMessage}</label>\r\n </Form>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => onMerge(e, FormMode.None)}>Close</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </div>\r\n )\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Grid, GridColumn, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport ILicenseSummary from '../../model/ILicenseummary';\r\nimport coursesService from '../../services/CoursesService'\r\nimport { CheckIfNYCDOELicense } from '../../helpers/helper';\r\n\r\ninterface ILicenseCourseSummary {\r\n courseId: number\r\n}\r\n\r\nexport default function LicenseSummary(props: ILicenseCourseSummary) {\r\n const mountedRef = useRef(true);\r\n const [data, setRowData] = useState<ILicenseSummary[]>([]);\r\n\r\n const getLicenseSummary = (courseId: number) => {\r\n coursesService.getLicenseSummary(courseId).then((response)=>{\r\n setRowData(response.data)\r\n }) \r\n }\r\n\r\n\r\n useEffect(() => {\r\n getLicenseSummary(props.courseId);\r\n return () => { mountedRef.current = false }\r\n }, [props.courseId]);\r\n\r\n const GridCellRender = (props: any) => {\r\n const licenseModel = props.dataItem.licenseModel;\r\n const availableLicense = props.dataItem.availableLicense;\r\n \r\n // Set the available license text based on the license model\r\n const cellContent = CheckIfNYCDOELicense(licenseModel) ? \"Unlimited\" : availableLicense;\r\n \r\n return <td>{cellContent}</td>;\r\n };\r\n\r\n const rowRender = (trElement:any, props:any) => {\r\n \r\n const hasNotEnoughLicense = props.dataItem.hasNotEnoughLicense \r\n \r\n const red = {\r\n backgroundColor: \"rgb(243, 23, 0, 0.32)\"\r\n };\r\n\r\n const white= {\r\n backgroundColor: \"rgb(255,255,255)\"\r\n }\r\n\r\n const gray ={\r\n backgroundColor: \"rgba(0, 0, 0, 0.08)\"\r\n }\r\n const trProps = {\r\n style: hasNotEnoughLicense ? red : props.isAltRow ? gray : white\r\n };\r\n return React.cloneElement(trElement, { ...trProps\r\n }, trElement.props.children);\r\n };\r\n\r\n\r\n return (\r\n <div>\r\n <div className=\"mt-3\">\r\n <div className=\"card mt-4\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-10\">License Summary</div>\r\n </div>\r\n </div>\r\n <div className=\"card-body\">\r\n <Grid\r\n data={data}\r\n rowRender={rowRender}\r\n >\r\n <GridNoRecords>\r\n No License Available\r\n </GridNoRecords>\r\n <GridColumn field=\"locationCode\" title=\"Location Code\" />\r\n <GridColumn field=\"vendorName\" title=\"Vendor\" />\r\n <GridColumn field=\"availableLicense\" title=\"Available Licenses\" cell={GridCellRender}/>\r\n <GridColumn field=\"requiredLicense\" title=\"License Required\" />\r\n </Grid>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n )\r\n}","import { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n getData: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/codeset',\r\n })\r\n\r\n}","import React, { useState, useEffect, useRef, useContext } from 'react';\r\nimport ICourseDetail from '../../model/ICourseDetail';\r\nimport coursesService from '../../services/CoursesService'\r\nimport { FormMode } from '../../services/Utility';\r\nimport Moment from 'react-moment';\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\n\r\n\r\ninterface ICourseContent {\r\n dataSource: number\r\n sharedCourses : string []\r\n location: string\r\n courseStatus : string\r\n onFormAction: (e: any, data: ICourseDetail, actionType: FormMode,) => void\r\n}\r\n\r\nexport default function CourseDetail(props: ICourseContent) {\r\n const mountedRef = useRef(true);\r\n const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n const { orginalSchoolYear } = useContext(Year);\r\n useEffect(() => {\r\n coursesService.getCourseDetail(props.dataSource, props.location).then(response => {\r\n setCourseDetailData(response.data)\r\n setUserProfile(LocalStorageService.getUserProfile())\r\n })\r\n return () => { mountedRef.current = false }\r\n }, [props.dataSource]);\r\n\r\n useEffect(() => {\r\n \r\n }, [props.courseStatus]);\r\n\r\n const [courseDetailData, setCourseDetailData] = useState<ICourseDetail>({\r\n courseId: 0,\r\n schoolDBN: '',\r\n schoolYear: 0,\r\n courseName: '',\r\n courseSource: '',\r\n isMerged: 0,\r\n purpose: '',\r\n mergeCourses: [],\r\n courseContentType: '',\r\n teacherOfRecord: '',\r\n startDate: new Date(),\r\n endDate: new Date(),\r\n createdBy: '',\r\n createdOn: new Date(),\r\n courseStatus: '',\r\n mergedOn: new Date(),\r\n mergedBy : ''\r\n });\r\n const onFormAction = (e: any, course: ICourseDetail, actionType: FormMode) => {\r\n switch (actionType) {\r\n case FormMode.Edit:\r\n let courseinfo: ICourseDetail = {\r\n courseId: course.courseId,\r\n schoolDBN: course.schoolDBN,\r\n schoolYear: course.schoolYear,\r\n courseName: course.courseName,\r\n courseSource: course.courseSource,\r\n isMerged: course.isMerged,\r\n purpose: course.purpose,\r\n mergeCourses: course.mergeCourses,\r\n courseContentType: course.courseContentType,\r\n teacherOfRecord: course.teacherOfRecord,\r\n startDate: course.startDate,\r\n endDate: course.endDate,\r\n createdBy: course.createdBy,\r\n createdOn: course.createdOn,\r\n courseStatus: course.courseStatus,\r\n oldTeacherId: course.teacherOfRecord,\r\n mergedOn: course.mergedOn,\r\n mergedBy : course.mergedBy,\r\n courseType : course.courseType\r\n }\r\n props.onFormAction(e, courseinfo, FormMode.Edit)\r\n break;\r\n default: {\r\n break;\r\n }\r\n }\r\n e.preventDefault();\r\n }\r\n return (\r\n <div className=\"card\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-7\">Course Detail </div>\r\n {((props.courseStatus && props.courseStatus == \"Closed\") || userProfile?.role?.roleName == 'Central Staff' || orginalSchoolYear.isCurrent == 0) ? \" \" : <div className=\"col-5 text-right\"><button className=\"btn btn-sm btn-primary\" onClick={(e) => { onFormAction(e, courseDetailData, FormMode.Edit) }}>Edit</button></div>}\r\n\r\n </div>\r\n </div>\r\n\r\n <div className=\"card-body\">\r\n <div className=\"row\">\r\n <div className=\"col-lg-4 mb-3 mb-lg-0\">\r\n <div className=\"small text-primary\">Title:</div>\r\n <div>{courseDetailData.courseName}</div>\r\n </div>\r\n <div className=\"col-lg-4 col-6\">\r\n <div className=\"small text-primary\">Purpose:</div>\r\n <div>{courseDetailData.purpose}</div>\r\n </div>\r\n <div className=\"col-lg-4 col-6\">\r\n <div className=\"small text-primary\">Content Type:</div>\r\n <div>{courseDetailData.courseContentType}</div>\r\n </div>\r\n </div>\r\n <div className=\"row mt-3\">\r\n <div className=\"col-lg-4 col-6\">\r\n <div className=\"small text-primary\">Start Date:</div>\r\n <div>\r\n <Moment format=\"MM/DD/YYYY\">\r\n {courseDetailData.startDate}\r\n </Moment>\r\n </div>\r\n </div>\r\n <div className=\"col-lg-4 col-6\">\r\n <div className=\"small text-primary\">End Date:</div>\r\n <div>\r\n <Moment format=\"MM/DD/YYYY\">\r\n {courseDetailData.endDate}\r\n </Moment>\r\n </div>\r\n </div> \r\n <div className=\"col-lg-4 col-sm-6 mt-3 mt-lg-0\">\r\n <div className=\"small text-primary\">Added By:</div>\r\n <div>{courseDetailData?.createdBy}\r\n <span> on </span>\r\n <Moment format=\"MM/DD/YYYY\">\r\n {courseDetailData.createdOn}\r\n </Moment>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"row mt-3\">\r\n <div className=\"col-lg-4 col-6\">\r\n <div className=\"small text-primary\">Course Source:</div>\r\n <div>\r\n {courseDetailData?.courseSource}\r\n </div>\r\n </div>\r\n { courseDetailData.lastSubmittedOnLMS ? \r\n <div className=\"col-lg-4 col-6\">\r\n <div className=\"small text-primary\">Last Published On:</div>\r\n <div>\r\n {courseDetailData.lastSubmittedOnLMS &&\r\n <Moment format=\"MM/DD/YYYY\">\r\n {courseDetailData.lastSubmittedOnLMS}\r\n </Moment>\r\n }\r\n </div>\r\n </div> \r\n : ''\r\n }\r\n \r\n {(courseDetailData.isMerged===1) ?\r\n <div className=\"col-lg-4 mt-3 mt-lg-0\">\r\n <div className=\"small text-primary\">Merged By:</div>\r\n <div>{courseDetailData?.mergedBy}\r\n <span> on </span>\r\n <Moment format=\"MM/DD/YYYY\">\r\n {courseDetailData.mergedOn}\r\n </Moment>\r\n </div>\r\n </div>\r\n : \"\"\r\n }\r\n { courseDetailData?.mergeCourses.length === 0 ? \r\n \"\" : <div className=\"col-12 mt-3\">\r\n <div className=\"small text-primary\">Merged Courses:</div>\r\n <div>\r\n {courseDetailData?.mergeCourses?.map((value: any, index: number) =>\r\n courseDetailData?.mergeCourses?.length > 1 && index != courseDetailData?.mergeCourses?.length - 1 ? value.mergedCourse + ' ' + ',' + ' ' : value.mergedCourse\r\n )}\r\n </div>\r\n </div>\r\n } \r\n { props.sharedCourses.length === 0 ? \r\n \"\" : <div className=\"col-12 mt-3\">\r\n <div className=\"small text-primary\">In {props.sharedCourses.length} SI Courses:</div>\r\n <div>\r\n {props.sharedCourses?.map((value: any, index: number) =>\r\n props.sharedCourses?.length > 1 && index != props.sharedCourses?.length - 1 ? value + ' ' + ',' + ' ' : value\r\n )}\r\n </div>\r\n </div>\r\n } \r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n","import { AxiosInstances as AxiosInstance} from './BaseService'\r\nimport ICourseContent from '../model/VendorContent';\r\nimport IVendor from '../model/VendorContent';\r\n\r\nexport default {\r\n getData: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/VendorContent',\r\n }),\r\n getByLocationCode: (locationCode:string, vendorId : number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/VendorContent/${locationCode}/${vendorId}`, \r\n }),\r\n getVendorContentByLocationCode: (schoolDBN:string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/VendorContentBySchool/${schoolDBN}`, \r\n }),\r\n getByVendorId: (vendorId:number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/vendorcontentbyvendorId/' + vendorId,\r\n }),\r\n getById: (id:number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/VendorContent/' + id,\r\n }),\r\n post: (requestdata: ICourseContent) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/VendorContent',\r\n 'data': requestdata\r\n }),\r\n edit: (requestdata: ICourseContent) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/VendorContent?id=' + requestdata.id,\r\n 'data': requestdata\r\n }),\r\n delete: (id: number) =>\r\n AxiosInstance({\r\n 'method': 'DELETE',\r\n 'url': '/VendorContent?id=' + id,\r\n })\r\n}\r\n","import React, { useState, useEffect,useRef, useContext } from 'react';\r\nimport { Button} from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridNoRecords,GridFilterChangeEvent } from '@progress/kendo-react-grid';\r\nimport { FormMode } from '../../services/Utility'\r\nimport { Year} from '../../services/AppContext';\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { filterBy, CompositeFilterDescriptor } from \"@progress/kendo-data-query\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport IconCourseEnvelop from '../../assets/icons/icon-envelop-course';\r\nimport vendorContentService from '../../services/VendorContentService';\r\nimport CoursesService from '../../services/CoursesService';\r\nimport IAddMultipleCoursesVendorContent from '../../model/IAddMultipleCoursesVendorContent';\r\nimport IMultipleCoursesVendorContent from '../../model/IMultipleCoursesVendorContent';\r\nimport IVendorContent from '../../model/VendorContent';\r\nimport IUnassignedCoursesForVendorContent from '../../model/IUnassignedCoursesForVendorContent';\r\nimport ICourses from '../../model/ICourses';\r\n\r\ninterface Props {\r\n schoolDBN: string\r\n closeCourseForVendorContentModal: (error:string, courseForVendorContentModal: IMultipleCoursesVendorContent) => void\r\n}\r\ninterface IDropDownVendorContentValue {\r\n id: number;\r\n vendorId: number;\r\n text: string;\r\n }\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\n\r\nexport default function AddCoursesForVendorContent(courseProps: Props) {\r\n const mountedRef = useRef(true);\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [errorMsg, setErrorMsg] = useState<string>('');\r\n const [vendorContentDefault, setVendorContentDefault] = useState<IDropDownVendorContentValue>();\r\n const [unassignedCourses, setUnassignedCourses] = useState<IUnassignedCoursesForVendorContent[]>([]);\r\n const [checkedCourses, setCheckedCourses] = useState<ICourses[]>([]);\r\n const [selectedVendorContent, setSelectedVendorContent] = useState<IVendorContent>();\r\n const [vendorContentList, setVendorContentList] = useState<IDropDownVendorContentValue[]>([]);\r\n const [originalVendorContentList, setOriginalVendorContentList] = useState<IDropDownVendorContentValue[]>([]);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n };\r\n const [filter, setFilter] = useState(initialFilter);\r\n\r\n\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const GetStatusBadgeCssClass = (status: string) => {\r\n\r\n if (status.toLowerCase() === \"new\") {\r\n return \"text-gray\"\r\n }\r\n else if (status.toLowerCase() === \"edited\") {\r\n return \"text-secondary\"\r\n }\r\n else if (status.toLowerCase() === \"published\") {\r\n return \"text-success\"\r\n }\r\n else if (status.toLowerCase() === \"closed\") {\r\n return \"text-danger\"\r\n }\r\n \r\n }\r\n\r\n const getVendorContentData = (school:any) => {\r\n vendorContentService.getVendorContentByLocationCode(school).then(response => {\r\n let dropDownData = response.data.map((sl: any) => ({\r\n id: sl.vendorContentId,\r\n vendorId: sl.vendorId,\r\n text: sl.vendorContentName + ' -- ' + sl.vendorName\r\n }));\r\n if(dropDownData){\r\n setVendorContentDefault(dropDownData[0])\r\n }\r\n setVendorContentList(dropDownData)\r\n setOriginalVendorContentList(dropDownData)\r\n });\r\n }\r\n\r\n const filterData = (filter: any) => {\r\n let data = originalVendorContentList.slice();\r\n return filterBy(data, filter);\r\n }\r\n const filterChange = (event: any) => {\r\n let data = filterData(event.filter)\r\n setVendorContentList(data)\r\n }\r\n\r\n const handleChange = (event: any) => {\r\n let selectedVendorContent = event.target.value;\r\n let vendorcontent:IVendorContent={\r\n id: selectedVendorContent.id,\r\n vendorCourseCode: '',\r\n vendorCourseContentName: '',\r\n vendorId: selectedVendorContent.vendorId,\r\n vendorName: '',\r\n TotalCourses: 0,\r\n TotalStudents : 0,\r\n isActive: false,\r\n modifiedBy: ''\r\n }\r\n setCheckedCourses([]);\r\n setSelectedVendorContent(vendorcontent)\r\n getVendorContentUnassignedCourses(courseProps.schoolDBN,selectedVendorContent.id,selectedVendorContent.vendorId);\r\n }\r\n\r\n const getVendorContentUnassignedCourses = (locationCode:string,vendorContentId:number,vendorId:number) => {\r\n CoursesService.getVendorContentUnassignedCourses(locationCode,vendorContentId,vendorId).then(response => {\r\n setUnassignedCourses(response.data)\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n setCheckedCourses([]);\r\n getVendorContentData(courseProps.schoolDBN);\r\n addIndividualCourses();\r\n return () => { mountedRef.current = false }\r\n }, [courseProps.schoolDBN]);\r\n\r\n useEffect(() => {\r\n setCheckedCourses([]);\r\n if(vendorContentDefault){\r\n getVendorContentUnassignedCourses(courseProps.schoolDBN,vendorContentDefault.id,vendorContentDefault?.vendorId)\r\n let vendorcontent:IVendorContent={\r\n id: vendorContentDefault.id,\r\n vendorCourseCode: '',\r\n vendorCourseContentName: '',\r\n vendorId: vendorContentDefault.vendorId,\r\n vendorName: '',\r\n TotalCourses: 0,\r\n TotalStudents : 0,\r\n isActive: false,\r\n modifiedBy: ''\r\n }\r\n setSelectedVendorContent(vendorcontent)\r\n }\r\n }, [vendorContentDefault,courseProps.schoolDBN]);\r\n\r\n\r\n\r\n const addIndividualCourses = () => {\r\n setPage(initialDataState)\r\n }\r\n\r\n const onGridCheckBoxClick = (dataItem: any) => {\r\n dataItem.isSelected = !dataItem.isSelected;\r\n let selectedCourses = checkedCourses\r\n if (dataItem.isSelected) {\r\n selectedCourses.push(dataItem)\r\n\r\n setCheckedCourses(selectedCourses)\r\n } else {\r\n selectedCourses = checkedCourses.filter(item => item.courseId !== dataItem.courseId);\r\n\r\n setCheckedCourses(selectedCourses)\r\n }\r\n }\r\n\r\n const onSave = (event: any, actionType: FormMode) => {\r\n switch (actionType) {\r\n case FormMode.New:\r\n let addMultipleCoursesVendorContent: IAddMultipleCoursesVendorContent = {\r\n //sharedCourseUniqueId: courseProps.courseId,\r\n courseId: checkedCourses.map(i => i.courseId\r\n ),\r\n schoolDBN: courseProps.schoolDBN,\r\n vendorContentId: selectedVendorContent?.id,\r\n vendorId: selectedVendorContent?.vendorId,\r\n schoolYear :+orginalSchoolYear.id,\r\n }\r\n\r\n let multipleCoursesVendorContent: IMultipleCoursesVendorContent = {\r\n //sharedCourseUniqueId: courseProps.courseId,\r\n courseId: addMultipleCoursesVendorContent.courseId,\r\n schoolDBN: addMultipleCoursesVendorContent.schoolDBN,\r\n vendorContentId: addMultipleCoursesVendorContent.vendorContentId,\r\n vendorId: addMultipleCoursesVendorContent.vendorId,\r\n vendorContentName: '',\r\n vendorName: '',\r\n availableLicenses: 0,\r\n totalLicenses: 0,\r\n statusCode : ''\r\n \r\n }\r\n\r\n if (addMultipleCoursesVendorContent.courseId?.length === 0) {\r\n setErrorMsg('Please select courses to add.');\r\n return;\r\n }\r\n\r\n CoursesService.postMultipleCoursesVendorContent(addMultipleCoursesVendorContent).then(res => {\r\n courseProps.closeCourseForVendorContentModal('',multipleCoursesVendorContent)\r\n //setFormMode(FormMode.None);\r\n // courseProps.updateCourseInfo(courseProps.courseId, courseTeachers.flat(), result, \"add\")\r\n })\r\n\r\n break;\r\n default: {\r\n let multipleCoursesVendorContent: IMultipleCoursesVendorContent = {\r\n //sharedCourseUniqueId: courseProps.courseId,\r\n courseId: [],\r\n schoolDBN: '',\r\n vendorContentId: 0,\r\n vendorId: 0,\r\n vendorContentName: '',\r\n vendorName: '',\r\n availableLicenses: 0,\r\n totalLicenses: 0,\r\n statusCode : ''\r\n \r\n }\r\n setCheckedCourses([]);\r\n courseProps.closeCourseForVendorContentModal('',multipleCoursesVendorContent)\r\n break;\r\n\r\n }\r\n }\r\n }\r\n\r\n\r\n return (\r\n <div>\r\n <Dialog title={\"Add Vendor Content To Courses\"} onClose={(e) => onSave(e, FormMode.None)} style={{ width: \"75%\", position: \"fixed\", left: \"15%\", top: \"20%\", height: \"350px\" }} >\r\n <div id=\"dropDownParent\">\r\n <div hidden={errorMsg.length === 0}>\r\n <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n {errorMsg}\r\n <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div className=\"d-flex justify-content-between align-items-center\" >\r\n <div className=\"text-sm-right text-left\">\r\n <DropDownList\r\n data={vendorContentList}\r\n defaultValue={vendorContentDefault}\r\n textField=\"text\"\r\n filterable={true}\r\n onChange={handleChange}\r\n onFilterChange={filterChange}\r\n popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n style={{ maxWidth: '500px', width: \"100%\" }}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"mt-3\" style={{ height: \"400px\" }}>\r\n <Grid\r\n data={filterBy(unassignedCourses,filter).slice(page.skip, page.take + page.skip)}\r\n filter={filter}\r\n filterable={true}\r\n skip={page.skip}\r\n take={page.take}\r\n total={unassignedCourses.length}\r\n pageable={true}\r\n scrollable={\"none\"}\r\n onPageChange={pageChange}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n >\r\n <GridColumn field=\"isSelected\" title=\" \" width=\"40px\" filterable={false} cell={props => (\r\n <td>\r\n <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"UserIcon\" title=\" \" filterable={false} width=\"50px\" cell={\r\n props => (\r\n <td className=\"pr-0\">\r\n <div className=\"d-flex\">\r\n <div className={`svg-app-icon ${props.dataItem.courseStatus.toLowerCase() === \"published\" ? \" text-success\" : \" text-blue-gray\"} mr-3\"`} style={{ height: \"50px\" }}>\r\n <IconCourseEnvelop courseType={props.dataItem.courseType} courseOrginType={props.dataItem.courseSource} merge={0}></IconCourseEnvelop>\r\n </div>\r\n </div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"courseName\" title='Course Name' />\r\n <GridColumn field=\"courseStatus\" title='Course Status'filterable={true} cell={\r\n props => (\r\n <td>\r\n <div ><span className={GetStatusBadgeCssClass(props.dataItem.courseStatus)}> {props.dataItem.courseStatus} </span></div>\r\n </td>\r\n )} />\r\n <GridNoRecords>\r\n There are no courses available to assign to the selected vendor's content.\r\n </GridNoRecords>\r\n </Grid>\r\n </div>\r\n </div>\r\n <DialogActionsBar>\r\n <Button className=\"m-3\" variant=\"secondary\" onClick={(e) => onSave(e, FormMode.None)}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, FormMode.New)}>Add Vendor Content </Button>\r\n </DialogActionsBar>\r\n </Dialog>\r\n </div>\r\n )\r\n}","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Keys, classNames, guid, useDir, getTabIndex, dispatchEvent, createPropsContext, usePropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { messages, checkboxValidation, checkboxOptionalText } from './../messages';\n/**\n * Represents the PropsContext of the `Checkbox` component.\n * Used for global configuration of all `Checkbox` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var CheckboxPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact Checkbox component]({% slug overview_checkbox %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return <Checkbox />;\n * }\n * }\n * ReactDOM.render(<App />, document.querySelector('my-app'));\n * ```\n */\nexport var Checkbox = React.forwardRef(function (directProps, target) {\n validatePackage(packageMetadata);\n var props = usePropsContext(CheckboxPropsContext, directProps);\n var _a = props, ariaDescribedBy = _a.ariaDescribedBy, ariaLabelledBy = _a.ariaLabelledBy, checked = _a.checked, className = _a.className, children = _a.children, defaultChecked = _a.defaultChecked, disabled = _a.disabled, defaultValue = _a.defaultValue, id = _a.id, label = _a.label, labelPlacement = _a.labelPlacement, name = _a.name, labelOptional = _a.labelOptional, onChange = _a.onChange, onFocus = _a.onFocus, onBlur = _a.onBlur, tabIndex = _a.tabIndex, value = _a.value, required = _a.required, valid = _a.valid, validationMessage = _a.validationMessage, validityStyles = _a.validityStyles, \n // Removed to support direct use in Form Field component\n visited = _a.visited, touched = _a.touched, modified = _a.modified, others = __rest(_a, [\"ariaDescribedBy\", \"ariaLabelledBy\", \"checked\", \"className\", \"children\", \"defaultChecked\", \"disabled\", \"defaultValue\", \"id\", \"label\", \"labelPlacement\", \"name\", \"labelOptional\", \"onChange\", \"onFocus\", \"onBlur\", \"tabIndex\", \"value\", \"required\", \"valid\", \"validationMessage\", \"validityStyles\", \"visited\", \"touched\", \"modified\"]);\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n var getImperativeHandle = React.useCallback(function () { return ({\n element: elementRef.current,\n focus: focusElement,\n get name() { return elementRef.current && elementRef.current.name; }\n }); }, [focusElement]);\n React.useImperativeHandle(target, getImperativeHandle);\n var _b = React.useState(defaultChecked), stateChecked = _b[0], setStateChecked = _b[1];\n var _c = React.useState(defaultValue), stateValue = _c[0], setStateValue = _c[1];\n var valueIsBoolean = (typeof value === 'boolean' || value === null);\n var isCheckedControlled = checked !== undefined;\n var isValueControlled = valueIsBoolean;\n var currentValue = isValueControlled ? value : stateValue;\n var currentChecked = isCheckedControlled ? checked : isValueControlled ? undefined : stateChecked;\n var useValueAsChecked = currentChecked === undefined && currentValue;\n var checkedProp = useValueAsChecked ? currentValue : currentChecked;\n var valueProp = (useValueAsChecked || isValueControlled) ? (value === null ? value : undefined) : value || currentValue;\n var indeterminateProp = checkedProp === null || valueProp === null;\n var calculatedId = React.useMemo(function () { return guid(); }, []);\n var localizationService = useLocalization();\n var localizeMessage = function (message) {\n return localizationService.toLanguageString(message, messages[message]);\n };\n var defaultValidationMessage = localizeMessage(checkboxValidation);\n var optionalMessage = localizeMessage(checkboxOptionalText);\n var isValid = valid !== undefined ?\n valid :\n !required ?\n true :\n currentChecked ? true : false;\n React.useEffect(function () {\n if (elementRef.current && elementRef.current.setCustomValidity) {\n elementRef.current.setCustomValidity(isValid\n ? ''\n : (validationMessage || defaultValidationMessage));\n }\n }, [isValid, validationMessage, defaultValidationMessage]);\n var setValue = React.useCallback(function (e, val) {\n if (!isValueControlled && !disabled) {\n setStateValue(val);\n if (!isCheckedControlled && !disabled) {\n setStateChecked(val);\n }\n }\n if (onChange && !disabled) {\n dispatchEvent(onChange, e, __assign({}, getImperativeHandle(), { value: val }), { value: val });\n }\n }, [isCheckedControlled, disabled, onChange, isValueControlled, getImperativeHandle]);\n var handleChange = React.useCallback(function (e) {\n var newValue = e.target.checked;\n setValue(e, newValue);\n }, [setValue, value]);\n var handleKeyDown = React.useCallback(function (e) {\n if (disabled) {\n return;\n }\n var keyCode = e.keyCode;\n var currentVal = e.currentTarget.checked;\n if (keyCode === Keys.space) {\n e.preventDefault();\n e.stopPropagation();\n setValue(e, !currentVal);\n }\n }, [disabled, setValue]);\n var handleKeyUp = React.useCallback(function (e) {\n if (disabled) {\n return;\n }\n var keyCode = e.keyCode;\n if (keyCode === Keys.space) {\n e.preventDefault();\n }\n }, [disabled]);\n var handleFocus = React.useCallback(function (e) {\n if (onFocus && !disabled) {\n dispatchEvent(onFocus, e, getImperativeHandle(), undefined);\n }\n }, [onFocus, disabled, getImperativeHandle]);\n var handleBlur = React.useCallback(function (e) {\n if (onBlur && !disabled) {\n dispatchEvent(onBlur, e, getImperativeHandle(), undefined);\n }\n }, [onBlur, disabled, getImperativeHandle]);\n var dir = useDir(elementRef, props.dir);\n var checkboxClasses = classNames({ 'k-state-disabled': disabled }, className);\n var inputProps = __assign({ type: 'checkbox', className: classNames({\n 'k-checkbox': true,\n 'k-state-indeterminate': indeterminateProp,\n 'k-state-invalid k-invalid': !(isValid || validityStyles !== undefined || validityStyles === true)\n }), ref: elementRef, name: name, id: id || calculatedId, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, checked: Boolean(checkedProp), disabled: disabled, tabIndex: getTabIndex(tabIndex, disabled), role: 'checkbox', required: required !== undefined ? required : false, 'aria-checked': currentChecked || checkedProp ?\n true :\n indeterminateProp ?\n 'mixed' :\n false, 'aria-disabled': disabled || undefined }, others, { onChange: handleChange, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, onFocus: handleFocus, onBlur: handleBlur });\n var checkboxInput = (React.createElement(React.Fragment, null, \n // removing value prop is required due to bug in react where\n // value set to undefined override default submit value\n valueProp === undefined ? (React.createElement(\"input\", __assign({}, inputProps))) : (React.createElement(\"input\", __assign({}, inputProps, { value: valueIsBoolean ? undefined : valueProp === null ? '' : valueProp })))));\n var checkboxLabel = (React.createElement(React.Fragment, null, label !== undefined ? (React.createElement(\"label\", { className: 'k-checkbox-label', htmlFor: id || calculatedId, style: { userSelect: 'none' } },\n label,\n labelOptional && React.createElement(\"span\", { className: \"k-label-optional\" }, optionalMessage))) : null));\n return (React.createElement(React.Fragment, null, (labelPlacement === 'before') ? (React.createElement(\"span\", { className: checkboxClasses, dir: 'rtl' },\n checkboxInput,\n checkboxLabel,\n children)) : (React.createElement(\"span\", { className: checkboxClasses, dir: dir },\n checkboxInput,\n checkboxLabel,\n children))));\n});\nCheckbox.propTypes = {\n checked: PropTypes.bool,\n className: PropTypes.string,\n defaultChecked: PropTypes.bool,\n defaultValue: PropTypes.any,\n dir: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n label: PropTypes.any,\n labelPlacement: PropTypes.string,\n labelOptional: PropTypes.bool,\n name: PropTypes.string,\n tabIndex: PropTypes.number,\n value: PropTypes.any,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n};\nCheckbox.displayName = 'KendoCheckbox';\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport function useDir(elementRef, initialDir, args) {\n // Dir prop is read only on initial rendering due to specifics of getComputedStyles - see below\n var _a = React.useState(initialDir), dir = _a[0], setDir = _a[1];\n React.useEffect(function () {\n if (!dir && window && elementRef.current) {\n // Note: getComputedStyle forces reflow\n var rtlCandidate = window.getComputedStyle(elementRef.current).direction;\n if (rtlCandidate) {\n // rerender is needed as DOM is read after first render\n setDir(rtlCandidate);\n }\n }\n }, args);\n return dir;\n}\n","import React, { useState, useEffect, useReducer, useRef, useContext, useCallback } from 'react';\r\nimport {\r\n Grid, GridColumn\r\n} from '@progress/kendo-react-grid';\r\nimport GridHierarchyExpand from '../../shared/GridHierarchyExpand'\r\nimport { Modal, Button, Dropdown, Card, Tooltip, DropdownButton, OverlayTrigger, InputGroup, FormControl, Row, Col } from 'react-bootstrap';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { FormMode, IDropDownValue } from '../../services/Utility'\r\nimport IndividualCourses from './IndividualCourses'\r\nimport AssignedTeachers from './AssingedTeachers'\r\nimport AssignedAdditionalStaff from './AssignedAdditionalStaff'\r\nimport AddVendorContent from './CourseVendorContent'\r\nimport EnrolledStudent from './EnrolledStudent'\r\nimport AddNewCourse from './AddNewCourse'\r\nimport MergeCourses from './MergeCourses'\r\nimport MergeError from './MergeError'\r\nimport LicenseSummary from './LicenseSummary'\r\nimport codesetService from '../../services/CodesetService';\r\nimport CourseService from '../../services/CoursesService'\r\nimport TeacherService from '../../services/TeacherService'\r\nimport ICodeSet from '../../model/Codeset'\r\nimport ICourses from '../../model/ICourses';\r\nimport ICourseVendorContent from '../../model/ICourseVendorContent';\r\nimport { IAssignedTeachers } from '../../model/IAssignedTeachers';\r\nimport CourseDetail from './CourseDetail';\r\nimport ICourseDetail from '../../model/ICourseDetail';\r\nimport IconCourseEnvelop from '../../assets/icons/icon-envelop-course';\r\nimport IMergeCourses from '../../model/IMergeCourses';\r\nimport IMergeCourseSpec from \"../../model/IMergeCourseSpec\";\r\nimport LocalStorageService from '../../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../../services/AppContext';\r\nimport SplashScreen from '../../shared/SplashScreen'\r\nimport SharedCoursesList from '../../shared/SharedCoursesList';\r\nimport IMultipleCoursesVendorContent from '../../model/IMultipleCoursesVendorContent';\r\nimport AddCoursesForVendorContent from './AddCoursesForVendorContent';\r\nimport { Checkbox } from '@progress/kendo-react-inputs';\r\nimport { filter } from '@progress/kendo-data-query/dist/npm/transducers';\r\n\r\ninterface ILocationCode {\r\n id: string,\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\ninterface CourseFilters {\r\n pageNumber: number,\r\n pageSize: number,\r\n orderBy: string,\r\n searchCourseStatus: string,\r\n searchCourseType: string,\r\n searchCourseName: string,\r\n searchUnpublishedStudents:string,\r\n}\r\n\r\ninterface DataSort {\r\n sort: string,\r\n value: string,\r\n}\r\n\r\ninterface CourseTypes {\r\n courseType: string,\r\n value: string,\r\n}\r\n\r\ninterface CourseStatus {\r\n courseStatus: string,\r\n value: string,\r\n}\r\n\r\nconst initialDataSort: DataSort[] = [\r\n { sort: 'Sort by Date (Newest)', value: 'DateDesc' },\r\n { sort: 'Sort by Date (Oldest)', value: 'DateAsc' },\r\n { sort: 'Sort by Name (A-Z)', value: 'NameAsc' },\r\n { sort: 'Sort by Name (Z-A)', value: 'NameDesc' },\r\n]\r\n\r\nconst initialCourseTypes: CourseTypes[] = [\r\n { courseType: 'Filter By Course Type', value: \"\" },\r\n { courseType: 'Manual Courses', value: 'Manual' },\r\n { courseType: 'Shared Instruction Courses', value: 'Shared' },\r\n { courseType: 'STARS Courses', value: 'STARS' },\r\n]\r\n\r\nconst initialCourseFilters: CourseFilters =\r\n{\r\n pageNumber: 1,\r\n pageSize: initialDataState.take,\r\n orderBy: \"DateDesc\",\r\n searchCourseStatus: \"\",\r\n searchCourseType: \"\",\r\n searchCourseName: \"\",\r\n searchUnpublishedStudents:\"\"\r\n}\r\n\r\n\r\nexport default function Courses(locationCode: ILocationCode) {\r\n const mountedRef = useRef(true);\r\n const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n //Page Load event - Get data from Service\r\n const [data, setDefaultExpand] = useState<ICourses[]>([]);\r\n const [sortValue] = useState<DataSort[]>(initialDataSort);\r\n const [filterCourseTypes] = useState<CourseTypes[]>(initialCourseTypes);\r\n const [filterCourseStatus, setFilterCourseStatus] = useState<CourseStatus[]>([]);\r\n\r\n const [defaultSortValue] = useState<DataSort>({ sort: 'Sort by Date (Newest)', value: 'DateDesc' });\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [courseFilters, setCourseFilters] = useState<CourseFilters>(initialCourseFilters);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isPublishedSelected, setIsPublishedSelected] = useState(false);\r\n const [isUnpublishedStudentsChecked, setIsUnpublishedStudentsChecked] = useState<boolean>(false);\r\n const isUnpublishedStudentsValue ='UnpublishedStudents'\r\n //Force re-render the child component on Expand\r\n const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [courseIdSelected, setCourseId] = useState<number>(0);\r\n const [vendorContentIdSelected, setVendorContentId] = useState<number>(0);\r\n const [checkedCourses, setCheckedCourses] = useState<ICourses[]>([]);\r\n const [mergeCourseData, setMergeCourseData] = useState<IMergeCourseSpec[]>([]);\r\n const today = new Date()\r\n const [refreshSubGrid, setRefreshSubGrid] = useState<boolean>(false)\r\n const tomorrow = new Date(today)\r\n tomorrow.setDate(tomorrow.getDate() + 1)\r\n const [courseDetail, setCourseDetail] = useState<ICourseDetail>({\r\n courseId: 0,\r\n schoolDBN: '',\r\n schoolYear: 0,\r\n courseName: '',\r\n courseSource: '',\r\n isMerged: 0,\r\n courseStatus: '',\r\n purpose: '',\r\n mergeCourses: [],\r\n courseContentType: '',\r\n teacherOfRecord: '',\r\n startDate: new Date(),\r\n endDate: orginalSchoolYear.schoolYearEndDate,\r\n createdBy: '',\r\n createdOn: new Date(),\r\n mergedOn: new Date(),\r\n mergedBy: ''\r\n });\r\n\r\n const [pageAlert, setPageAlert] = useState<string>('');\r\n const [courseSaveErrorMessage, setCourseSaveErrorMessage] = useState<string>('');\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [purposeList, setPurposeList] = useState<ICodeSet[]>([]);\r\n const [contentTypeList, setContentTypeList] = useState<IDropDownValue[]>([]);\r\n const [originalTeacherOfRecordList, setOriginalTeacherOfRecordList] = useState<IDropDownValue[]>([]);\r\n const [teacherOfRecordList, setTeacherOfRecordList] = useState<IDropDownValue[]>([]);\r\n const [defaultTeacher, setDefaultTeacher] = useState<IDropDownValue>({\r\n id: '',\r\n text: ''\r\n });\r\n\r\n const getCourses = () => {\r\n setIsLoading(true);\r\n CourseService.getCourses(locationCode.id, +orginalSchoolYear.id, 1, page.take, defaultSortValue.value).then(response => {\r\n setDefaultExpand(response.data)\r\n setRefreshSubGrid(!refreshSubGrid)\r\n setCheckedCourses([])\r\n setMergeCourseData([])\r\n setPageAlert('')\r\n }).catch((ex) => {\r\n setIsLoading(false);\r\n setPageAlert('Oops!, Something went wrong. Please try again.')\r\n }).finally(() => {\r\n setIsLoading(false);\r\n })\r\n return () => { mountedRef.current = false }\r\n }\r\n\r\n const deleteCourseSaveErrorMessage = () => {\r\n setCourseSaveErrorMessage(\"\")\r\n }\r\n const [courseNameSearch, setCourseNameSearch] = useState<string>(\"\");\r\n\r\n\r\n const onSortValueChange = (e: any) => {\r\n let filters = courseFilters\r\n filters.orderBy = e.target.value.value\r\n setCourseFilters(filters)\r\n filterCourses()\r\n\r\n }\r\n const onUnpublishedStudentChecked=(e:any)=>{\r\n setIsUnpublishedStudentsChecked(e.value)\r\n let filters =courseFilters\r\n filters.searchUnpublishedStudents=''\r\n if(e.value==true)\r\n {filters.searchUnpublishedStudents=isUnpublishedStudentsValue}\r\n else\r\n {filters.searchUnpublishedStudents=''}\r\n filters.pageNumber = 1\r\n setPage({ skip: 0, take: page.take })\r\n setCourseFilters(filters)\r\n filterCourses()\r\n }\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n let currentPage = (event.page.skip / event.page.take) + 1\r\n let filters = courseFilters\r\n filters.pageNumber = currentPage\r\n filters.pageSize = event.page.take\r\n setCourseFilters(filters)\r\n filterCourses()\r\n }\r\n\r\n const onChangeCourseNameSearch = (e: any) => {\r\n if (e.target.value && e.target.value != \"\") {\r\n let filters = courseFilters\r\n filters.searchCourseName = e.target.value\r\n setCourseFilters(filters)\r\n setCourseNameSearch(e.target.value)\r\n } else {\r\n clearCourseNameSearch()\r\n }\r\n }\r\n const clearCourseNameSearch = () => {\r\n let filters = courseFilters\r\n filters.searchCourseName = \"\"\r\n filters.pageNumber = 1\r\n setPage({ skip: 0, take: page.take })\r\n setCourseFilters(filters)\r\n setCourseNameSearch(\"\")\r\n filterCourses();\r\n }\r\n\r\n const searchByCourseName = () => {\r\n if (courseFilters.searchCourseName && courseFilters.searchCourseName != \"\") {\r\n filterCourses();\r\n }\r\n }\r\n\r\n const onSearchClickEnter = (e: any) => {\r\n if (courseNameSearch && courseNameSearch != \"\" && e.charCode == 13) {\r\n searchByCourseName()\r\n }\r\n }\r\n\r\n const getCourseStatus = () => {\r\n if (filterCourseStatus.length == 0) {\r\n CourseService.getCourseStatus().then((res: any) => {\r\n let status: string[] = res.data\r\n let courseStatusFilter = status.map((element) => ({\r\n courseStatus: element + ' ' + \"Courses\",\r\n value: element,\r\n\r\n }));\r\n\r\n courseStatusFilter.unshift({\r\n courseStatus: \"Filter By Course Status\",\r\n value: \"\",\r\n\r\n });\r\n setFilterCourseStatus(courseStatusFilter)\r\n })\r\n }\r\n }\r\n\r\n const onStatusFilterChange = (e: any) => {\r\n setIsPublishedSelected(false)\r\n setIsUnpublishedStudentsChecked(false)\r\n let filters = courseFilters\r\n filters.searchCourseStatus = e.target.value.value\r\n filters.pageNumber = 1\r\n setPage({ skip: 0, take: page.take })\r\n\r\n if(filters.searchCourseStatus=='Published')\r\n {\r\n setIsPublishedSelected(true)\r\n }\r\n else{\r\n setIsPublishedSelected(false)\r\n filters.searchUnpublishedStudents=''\r\n }\r\n setCourseFilters(filters)\r\n filterCourses();\r\n\r\n }\r\n const onCourseTypeFilterChange = (e: any) => {\r\n let filters = courseFilters\r\n filters.searchCourseType = e.target.value.value\r\n filters.pageNumber = 1\r\n setPage({ skip: 0, take: page.take })\r\n setCourseFilters(filters)\r\n filterCourses();\r\n\r\n }\r\n\r\n const filterCourses = () => {\r\n setIsLoading(true);\r\n CourseService.filterCourses(locationCode.id, +orginalSchoolYear.id, courseFilters.pageNumber, courseFilters.pageSize, courseFilters.orderBy, courseFilters.searchCourseName, courseFilters.searchCourseStatus, courseFilters.searchCourseType,courseFilters.searchUnpublishedStudents).then(response => {\r\n setDefaultExpand(response.data)\r\n setRefreshSubGrid(!refreshSubGrid)\r\n setPageAlert('')\r\n }).catch((ex) => {\r\n setIsLoading(false);\r\n setPageAlert('Oops!, Something went wrong. Please try again.')\r\n }).finally(() => {\r\n setIsLoading(false);\r\n })\r\n\r\n\r\n return () => { mountedRef.current = false }\r\n }\r\n\r\n\r\n useEffect(() => {\r\n setDefaultExpand([])\r\n if (locationCode.id != \"\" && orginalSchoolYear.id != \"\") {\r\n getCourses();\r\n }\r\n getCourseStatus()\r\n setUserProfile(LocalStorageService.getUserProfile())\r\n setCourseNameSearch(\"\")\r\n setCourseFilters({\r\n pageNumber: 1,\r\n pageSize: initialDataState.take,\r\n orderBy: \"DateDesc\",\r\n searchCourseStatus: \"\",\r\n searchCourseType: \"\",\r\n searchCourseName: \"\",\r\n searchUnpublishedStudents:\"\"\r\n })\r\n setPage(initialDataState)\r\n setIsPublishedSelected(false)\r\n setIsUnpublishedStudentsChecked(false)\r\n\r\n\r\n }, [locationCode.id, orginalSchoolYear]);\r\n\r\n\r\n\r\n\r\n\r\n const onChangeStudentCount = (count: number, courseId: number) => {\r\n let courseArray = data;\r\n let courseIndex = courseArray.findIndex(o => o.courseId == courseId);\r\n courseArray[courseIndex].totalStudentEnrolled = courseArray[courseIndex].totalStudentEnrolled + count\r\n setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n setRefreshSubGrid(!refreshSubGrid)\r\n\r\n }\r\n\r\n const onAssignTeachers = (teachers: IAssignedTeachers[], courseId: number) => {\r\n let courseArray = data;\r\n let courseIndex = courseArray.findIndex(o => o.courseId == courseId);\r\n courseArray[courseIndex].courseTeachers = courseArray[courseIndex].courseTeachers.concat(teachers)\r\n setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n\r\n }\r\n\r\n const onDeleteTeacher = (teacher: IAssignedTeachers[], courseId: number) => {\r\n let courseArray = data;\r\n let courseIndex = courseArray.findIndex(o => o.courseId == courseId);\r\n courseArray[courseIndex].courseTeachers = teacher\r\n setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n\r\n }\r\n const updateCourseStatus = (courseId: number) => {\r\n let courseArray = data;\r\n let courseIndex = courseArray.findIndex(o => o.courseId == courseId);\r\n if (courseArray[courseIndex].courseStatus != \"New\") {\r\n courseArray[courseIndex].courseStatus = \"Edited\"\r\n }\r\n\r\n setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n }\r\n\r\n const getNewCourseTeachers = (courseTeachers: any[], newCourseTeachers: any[], action: string) => {\r\n if (action == \"add\") {\r\n let newTeachers = [...courseTeachers, ...newCourseTeachers].reduce((courseTeachers, teacher) => {\r\n const duplicateTeacher = courseTeachers.find((courseTeacher: any) => courseTeacher.teacherId === teacher.teacherId);\r\n if (!duplicateTeacher) {\r\n courseTeachers.push(teacher);\r\n }\r\n return courseTeachers;\r\n }, []);\r\n return newTeachers\r\n } else {\r\n let newTeachers = courseTeachers.filter(oldTeacher =>\r\n newCourseTeachers.some(newTeacher => newTeacher === oldTeacher.teacherId)\r\n );\r\n return newTeachers;\r\n }\r\n }\r\n\r\n const updateCourseInfo = (courseId: number, courseTeachers: any[], studentCount: number, action: string) => {\r\n let courseArray = data;\r\n let courseIndex = courseArray.findIndex(o => o.courseId == courseId);\r\n if (courseArray[courseIndex].courseStatus != \"New\") {\r\n courseArray[courseIndex].courseStatus = \"Edited\"\r\n }\r\n\r\n let newCourseTeachers = getNewCourseTeachers(courseArray[courseIndex].courseTeachers, courseTeachers, action)\r\n courseArray[courseIndex].courseTeachers = newCourseTeachers;\r\n courseArray[courseIndex].totalStudentEnrolled = action == \"add\" ? studentCount + courseArray[courseIndex].totalStudentEnrolled : studentCount\r\n setRefreshSubGrid(!refreshSubGrid)\r\n setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n }\r\n\r\n\r\n //On click of expand this function will call\r\n const SubGridHost =\r\n //useMemo(() =>\r\n useCallback((props: any) => {\r\n\r\n return (\r\n <div>\r\n <CourseDetail sharedCourses={props.dataItem.starsSharedCourses} courseStatus={props.dataItem.courseStatus} dataSource={props.dataItem.courseId} location={locationCode.id} onFormAction={onFormAction} />\r\n {props.dataItem.courseType && props.dataItem.courseType.toLowerCase() == \"shared\" && <IndividualCourses courseUniqueId={props.dataItem.courseUniqueId} courseStatus={props.dataItem.courseStatus} updateCourseInfo={updateCourseInfo} courseId={props.dataItem.courseId} locationCode={locationCode.id} />}\r\n <AssignedTeachers courseUniqueId={props.dataItem.courseUniqueId} isSharedCourse={props.dataItem.courseType && props.dataItem.courseType.toLowerCase() == \"shared\" ? true : false} courseStatus={props.dataItem.courseStatus} courseId={props.dataItem.courseId} courseSource={props.dataItem.courseOrginType} isEditable={true}\r\n locationCode={locationCode.id} onAssignTeachers={onAssignTeachers} onDeleteTeacher={onDeleteTeacher} updateCourseStatus={updateCourseStatus} />\r\n {(!props.dataItem.courseType || (props.dataItem.courseType && props.dataItem.courseType.toLowerCase() != \"shared\")) &&\r\n <AssignedAdditionalStaff courseUniqueId={props.dataItem.courseUniqueId} courseStatus={props.dataItem.courseStatus} courseId={props.dataItem.courseId}\r\n courseSource={props.dataItem.courseOrginType} isEditable={true} locationCode={locationCode.id} updateCourseStatus={updateCourseStatus} />}\r\n <EnrolledStudent isSharedCourse={props.dataItem.courseType && props.dataItem.courseType.toLowerCase() == \"shared\" ? true : false} coursePurpose={props.dataItem.coursePurpose} courseStatus={props.dataItem.courseStatus} courseId={props.dataItem.courseId} courseSource={props.dataItem.courseOrginType}\r\n isEditable={true} locationCode={locationCode.id}\r\n onChangeStudentCount={onChangeStudentCount}\r\n\r\n updateCourseStatus={updateCourseStatus}\r\n />\r\n <LicenseSummary courseId={props.dataItem.courseId} />\r\n </div>\r\n )\r\n }\r\n , [refreshSubGrid]\r\n )\r\n\r\n //const onEnrolledStudentSave = () => { }\r\n const GridColumnHierarchyExpand = (props: any) => <GridHierarchyExpand {...props} />\r\n const GridColumnCourses = (props: any) => {\r\n const [editable, setIsEditable] = useState({ 'isEditable': false, 'buttonText': 'Edit' });\r\n const [name, setOnChangeName] = useState(props.dataItem.courseName);\r\n const onChangeName = (event: any) => {\r\n const target = event.target\r\n const regex = /[!@#$%^&*~`\\\\]+/;\r\n if (target.value != '' && !regex.test(target.value)) {\r\n courseNameChangeError.courseNameError = ''\r\n setOnChangeName(target.value);\r\n } else if (regex.test(target.value)) {\r\n setOnChangeName(target.value)\r\n courseNameChangeError.courseNameError = \"Some characters are not allowed in course title for example : !@#$%^&*\\\\~` \"\r\n }\r\n else {\r\n courseNameChangeError.courseNameError = \"Course name is required.\"\r\n setOnChangeName(target.value);\r\n }\r\n }\r\n const [courseNameChangeError, setCourseNameChangeError] = useState({\r\n courseNameError: ''\r\n })\r\n const courseNameValidate = () => {\r\n\r\n if (courseNameChangeError.courseNameError) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const onEditClose = () => {\r\n courseNameChangeError.courseNameError = '';\r\n setOnChangeName(props.dataItem.courseName)\r\n setIsEditable({ 'isEditable': false, 'buttonText': 'Edit' })\r\n }\r\n\r\n const onEditClick = () => {\r\n if (editable.isEditable) {\r\n let editCourseName: ICourses = {\r\n courseId: props.dataItem.courseId,\r\n schoolDBN: locationCode.id,\r\n schoolYear: +orginalSchoolYear.id,\r\n courseName: name,\r\n coursePurpose: '',\r\n courseCode: '',\r\n isMerged: 0,\r\n courseOrginType: '',\r\n courseContentType: '',\r\n courseStatus: '',\r\n totalStudentEnrolled: 0,\r\n totalStudentUnpublished: 0,\r\n courseTeachers: [],\r\n vendorContents: []\r\n }\r\n if (courseNameValidate()) {\r\n\r\n CourseService.edit(editCourseName).then(response => {\r\n if (!response.data.isValidResponse) {\r\n //TODO: Display error message in proper format\r\n courseNameChangeError.courseNameError = response.data.errors.join();\r\n // setOnChangeName(props.dataItem.courseName)\r\n // setTimeout(() => { setPageAlert('') }, 8000);\r\n setIsEditable({ 'isEditable': true, 'buttonText': 'Save' })\r\n }\r\n else {\r\n // Display Success message \r\n setOnChangeName(editCourseName.courseName);\r\n let courseArray = data;\r\n let courseIndex = courseArray.findIndex(o => o.courseId == editCourseName.courseId);\r\n courseArray[courseIndex].courseName = editCourseName.courseName\r\n if (courseArray[courseIndex].courseStatus != \"New\") {\r\n courseArray[courseIndex].courseStatus = \"Edited\"\r\n }\r\n setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n setRefreshSubGrid(!refreshSubGrid)\r\n setIsEditable({ 'isEditable': false, 'buttonText': 'Edit' })\r\n }\r\n })\r\n }\r\n\r\n }\r\n else {\r\n setIsEditable({ 'isEditable': true, 'buttonText': 'Save' })\r\n }\r\n }\r\n\r\n function CourseNameBadge(props: ICourses) {\r\n\r\n return (\r\n\r\n <>\r\n {\r\n <OverlayTrigger\r\n key={props.courseId}\r\n placement='top'\r\n overlay={\r\n <Tooltip id={`tooltip-${props.courseId}`}>\r\n {props.courseName}\r\n </Tooltip>\r\n }\r\n >\r\n {(userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && props.courseStatus != \"Closed\") ? <Button key={props.courseId} className=\"text-dark mb-0 h4 p-0 font-weight-bold btn-lg title-edit text-left\" variant=\"link\" style={{ display: editable.isEditable ? \"none\" : \"block\" }} onClick={() => onEditClick()}>{props.courseName}</Button> :\r\n <Button key={props.courseId} className=\"text-dark mb-0 h4 p-0 font-weight-bold btn-lg text-left\" variant=\"link\" >{props.courseName}</Button>}\r\n </OverlayTrigger>\r\n }\r\n </>\r\n );\r\n }\r\n\r\n function TeacherBadge() {\r\n\r\n return (\r\n\r\n <>\r\n {props.dataItem.courseTeachers.map((item: IAssignedTeachers) => (\r\n <OverlayTrigger\r\n key={item.teacherId}\r\n placement='top'\r\n overlay={\r\n <Tooltip id={`tooltip-${item.teacherId}`}>\r\n {item.firstName + item.lastName + '(' + item.role + ')'}\r\n </Tooltip>\r\n }\r\n >\r\n <Button key={item.teacherId} className={item.role.toLowerCase() == \"teacher of record\" ? \"btn badge badge-warning badge-teacher-record border-0 mr-1\" : \"btn badge badge-warning border-0 mr-1\"}>{item.teacherInitial ? item.teacherInitial : item.firstName?.charAt(0) + item.lastName?.charAt(0)}</Button>\r\n </OverlayTrigger>\r\n ))}\r\n </>\r\n );\r\n }\r\n\r\n\r\n\r\n return (\r\n <td className='td-course-title'>\r\n <div>\r\n <div className=\"input-group\" style={{ display: editable.isEditable ? \"flex\" : \"none\" }}>\r\n <input type=\"text\" name=\"description\" className=\"form form-control form-control-sm text-ellipse\" value={name} onChange={onChangeName} maxLength={128} />\r\n <button type=\"button\" onClick={(e) => onEditClose()} className=\"close\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n <div className=\"input-group-append\">\r\n <Button className=\"btn btn-primary btn-sm\" onClick={(e) => onEditClick()}>{editable.buttonText}</Button>\r\n </div>\r\n </div>\r\n <div className=\"text-danger small\">{courseNameChangeError.courseNameError}</div>\r\n <CourseNameBadge {...props.dataItem} />\r\n <div className=\"text-secondary\">\r\n {props.dataItem.courseOrginType.toLowerCase() === 'lmi' ? '' :\r\n <div>Course Code: {props.dataItem.courseCode}</div>}\r\n <div>Assigned Teachers: <TeacherBadge /> </div>\r\n {/* <div className=\"d-flex flex-row\"> */}\r\n <div className='mr-1'><span >Students: {props.dataItem.totalStudentEnrolled}</span>\r\n {props.dataItem.starsSharedCourses.length != 0 &&\r\n <SharedCoursesList\r\n sharedCourses={props.dataItem.starsSharedCourses}\r\n width='70%'\r\n\r\n />\r\n }</div>\r\n {props.dataItem.courseStatus=='Published' && props.dataItem.totalStudentUnpublished>0 &&\r\n\r\n <div className='mr-1 text-danger'>\r\n\r\n <OverlayTrigger\r\n placement='bottom'\r\n overlay={\r\n <Tooltip id={`tooltip}`}>\r\n Unpublished students were not sent to LMS due to missing username.\r\n Republish course once available.\r\n </Tooltip>\r\n }\r\n >\r\n <span><i className='fas fa-exclamation-triangle mr-1'></i>Unpublished Students:</span></OverlayTrigger>\r\n \r\n {props.dataItem.totalStudentUnpublished}\r\n </div>\r\n }\r\n {/* </div> */}\r\n\r\n </div>\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n const GridColumnButton = (props: any) => {\r\n let propsData = props.dataItem as ICourseDetail\r\n const overlayTarget = useRef(null);\r\n const [showConfirmation, setShowConfirmation] = useState({\r\n canShow: false,\r\n title: '',\r\n action: ''\r\n });\r\n\r\n const onConfirmation = (e: any, title: string, action: string) => {\r\n setShowConfirmation({ canShow: true, title: title, action: action })\r\n e.preventDefault();\r\n }\r\n\r\n const onCourseAction = (e: any, action: string) => {\r\n setIsLoading(true);\r\n let courseDetail = props.dataItem as ICourseDetail\r\n courseDetail.schoolDBN = locationCode.id\r\n switch (action) {\r\n case 'Publish':\r\n CourseService.publishCourse(courseDetail).then(response => {\r\n\r\n if (!response.data.isValidResponse) {\r\n //TODO: Display error message in proper format\r\n setPageAlert(response.data.errors.join())\r\n // setTimeout(() => { setPageAlert('') }, 8000);\r\n\r\n }\r\n else {\r\n\r\n filterCourses()\r\n setPageAlert('')\r\n }\r\n }).finally(() => {\r\n setIsLoading(false);\r\n setTimeout(() => { setPageAlert('') }, 8000);\r\n })\r\n break;\r\n case 'Delete':\r\n CourseService.deleteCourse(courseDetail).then(response => {\r\n\r\n filterCourses()\r\n }).finally(() => {\r\n setIsLoading(false);\r\n setPageAlert('')\r\n })\r\n break;\r\n case 'Close':\r\n setIsLoading(true)\r\n CourseService.closeCourse(courseDetail).then(response => {\r\n let courseArray = data;\r\n let courseIndex = courseArray.findIndex(o => o.courseId == courseDetail.courseId);\r\n courseArray[courseIndex].courseStatus = 'Closed'\r\n setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n }).finally(() => {\r\n setIsLoading(false);\r\n setPageAlert('')\r\n })\r\n break;\r\n case 'Reopen':\r\n CourseService.reOpenCourse(courseDetail).then(response => {\r\n let courseArray = data;\r\n let courseIndex = courseArray.findIndex(o => o.courseId == courseDetail.courseId);\r\n courseArray[courseIndex].courseStatus = 'Published'\r\n setDefaultExpand([...courseArray.slice(0, courseIndex), courseArray[courseIndex], ...courseArray.slice(courseIndex + 1)])\r\n }).finally(() => {\r\n setIsLoading(false)\r\n setPageAlert('')\r\n })\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n e.preventDefault();\r\n }\r\n\r\n const getVendorContent = (props: any) => (\r\n props.dataItem.vendorContents?.map((value: any, i: number) => (\r\n <span>test</span>\r\n ))\r\n )\r\n\r\n const hasIlearnNYCContent = (props: any) => {\r\n return (showConfirmation.action == \"Publish\" && (props.dataItem.totalStudentEnrolled > 0 && !(props.dataItem as ICourses).vendorContents.some(x => x.vendorContentName ==='iLearnNYC Student License')))\r\n }\r\n return (\r\n <>\r\n {/* <Confirmation showConfirmation={showConfirmation} ref={overlayTarget}></Confirmation> */}\r\n <Modal size=\"lg\"\r\n show={showConfirmation.canShow}\r\n onHide={() => { setShowConfirmation({ canShow: false, title: '', action: '' }) }}\r\n animation={false}\r\n backdrop=\"static\"\r\n keyboard={false}>\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>\r\n {showConfirmation.action == 'Close' && \"Close course\"}\r\n {showConfirmation.action == 'Delete' && \"Delete course\"}\r\n {showConfirmation.action == 'Reopen' && \"Reopen course\"}\r\n {(showConfirmation.action != 'Close' && showConfirmation.action != 'Delete' && showConfirmation.action != 'Reopen') && \"Publish to iLearn\"}\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n\r\n <b> {showConfirmation.action != 'Publish' && showConfirmation.title} </b>\r\n {(showConfirmation.action == 'Publish' && props.dataItem.vendorContents.length == 0 && props.dataItem.starsSharedCourses.length == 0) ?\r\n <div>\r\n You are publishing <b> {showConfirmation.title} </b> course. Are you sure you want to proceed?\r\n\r\n </div> : (showConfirmation.action == 'Publish' && props.dataItem.vendorContents.length != 0 && props.dataItem.starsSharedCourses.length == 0) ?\r\n <div>\r\n You are publishing <b> {showConfirmation.title} </b> course with the following vendor content.\r\n <Card className=\"mt-3 mb-3\">\r\n <Card.Body>\r\n {props.dataItem.vendorContents.length != 0 &&\r\n <div>\r\n <div className=\"text-muted small\">Vendor Content:</div>\r\n <div className=\"font-weight-bold\">\r\n {props.dataItem.vendorContents?.map((value: any, i: number) => (\r\n <span>{value.vendorContentName} {i != props.dataItem.vendorContents.length - 1 ? ',' : ' '} </span>\r\n ))}\r\n </div></div>}\r\n\r\n </Card.Body>\r\n </Card>\r\n <div className=\"font-weight-normal\">Are you sure you want to proceed? You will not be able to change this.</div>\r\n </div> : (showConfirmation.action == 'Publish' && props.dataItem.vendorContents.length == 0 && props.dataItem.starsSharedCourses.length != 0) ?\r\n <div>\r\n You are publishing <b> {showConfirmation.title} </b> course that is part of these shared instruction courses\r\n <Card className=\"mt-3 mb-3\">\r\n <Card.Body>\r\n {props.dataItem.starsSharedCourses.length != 0 &&\r\n <div>\r\n <div className=\"text-muted small\">Shared Instruction Courses:</div>\r\n <div className=\"font-weight-bold\">\r\n {props.dataItem.starsSharedCourses?.map((value: any, i: number) => (\r\n <span>{value} {i != props.dataItem.starsSharedCourses.length - 1 ? ',' : ' '} </span>\r\n ))}\r\n </div></div>}\r\n\r\n </Card.Body>\r\n </Card>\r\n <div className=\"font-weight-normal\">Are you sure you want to proceed?</div>\r\n </div> : (showConfirmation.action == 'Publish' && props.dataItem.vendorContents.length != 0 && props.dataItem.starsSharedCourses.length != 0) &&\r\n <div>\r\n You are publishing <b> {showConfirmation.title} </b> course with the following vendor content.\r\n <Card className=\"mt-3 mb-3\">\r\n <Card.Body>\r\n {props.dataItem.vendorContents.length != 0 &&\r\n <div>\r\n <div className=\"text-muted small\">Vendor Content:</div>\r\n <div className=\"font-weight-bold\">\r\n {props.dataItem.vendorContents?.map((value: any, i: number) => (\r\n <span>{value.vendorContentName} {i != props.dataItem.vendorContents.length - 1 ? ',' : ' '} </span>\r\n ))}\r\n </div></div>}\r\n\r\n </Card.Body>\r\n </Card>\r\n And part of these shared instruction courses\r\n <Card className=\"mt-3 mb-3\">\r\n <Card.Body>\r\n {props.dataItem.starsSharedCourses.length != 0 &&\r\n <div>\r\n <div className=\"text-muted small\">Shared Instruction Courses:</div>\r\n <div className=\"font-weight-bold\">\r\n {props.dataItem.starsSharedCourses?.map((value: any, i: number) => (\r\n <span>{value} {i != props.dataItem.starsSharedCourses.length - 1 ? ',' : ' '} </span>\r\n ))}\r\n </div></div>}\r\n\r\n </Card.Body>\r\n </Card>\r\n <div className=\"font-weight-normal\">Are you sure you want to proceed? You will not be able to change this.</div>\r\n </div>\r\n }\r\n\r\n </Modal.Body>\r\n <Modal.Footer>\r\n\r\n <Button variant=\"secondary\" onClick={(e) => { setShowConfirmation({ canShow: false, title: '', action: '' }) }}>Cancel</Button>\r\n {\r\n ((props.dataItem.courseStatus == \"Edited\" && (showConfirmation.action == \"Delete\" || showConfirmation.action == \"Close\")) )\r\n ? ''\r\n : <Button variant=\"primary\" onClick={(e) => { onCourseAction(e, showConfirmation.action) }}>{showConfirmation.action}</Button>\r\n }\r\n \r\n {/* {(props.dataItem.courseStatus == \"Edited\" && (showConfirmation.action == \"Delete\" || showConfirmation.action == \"Close\")) ? '' : <Button variant=\"primary\" onClick={(e) => { onCourseAction(e, showConfirmation.action) }}>{showConfirmation.action}</Button>} */}\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n\r\n <td className=\"text-right td-course-btn\" style={{ overflow: 'visible' }}>\r\n {(isLoading && overlayTarget?.current) ? <SplashScreen /> :\r\n <DropdownButton\r\n menuAlign=\"right\"\r\n title={<i className='fas fa-bars'></i>}\r\n id=\"dropdown-menu-align-right\"\r\n size=\"sm\"\r\n variant=\"outline-primary\"\r\n className=\"menu-bars\"\r\n >\r\n {(props.dataItem.courseStatus != \"Closed\" && props.dataItem.courseStatus != \"Published\") &&\r\n <Dropdown.Item onClick={(e) => {\r\n onConfirmation(e, \"\" + propsData.courseName + \"\"\r\n , 'Publish')\r\n }}>Publish</Dropdown.Item>}\r\n {(props.dataItem.courseStatus == \"Closed\" || (props.dataItem.courseStatus == \"New\" || (props.dataItem.courseOrginType == \"STARS\" && props.dataItem.courseStatus != \"Published\" && props.dataItem.courseStatus != \"Edited\"))) ? '' : <Dropdown.Item onClick={(e) => { onConfirmation(e, props.dataItem.courseStatus == \"Edited\" ? ` Course has been modified. Please publish to iLearn, before the course ${propsData.courseName} can be closed.` : `Are you sure you want to Close the course ${propsData.courseName} ?`, 'Close') }}>Close</Dropdown.Item>}\r\n {/* {(props.dataItem.courseStatus == \"New\" && props.dataItem.courseOrginType == \"STARS\") && <Dropdown.Item onClick={(e) => { mergeCourses() }}>Merge {checkedCourses.length === 0 ? '' : checkedCourses.length} Courses </Dropdown.Item>} */}\r\n {(props.dataItem.courseOrginType == \"STARS\" || (props.dataItem.courseType && props.dataItem.courseType.toLowerCase() == \"shared\" && props.dataItem.courseStatus != \"Closed\")) ? '' : <Dropdown.Item onClick={(e) => { onConfirmation(e, props.dataItem.courseStatus == \"Edited\" ? ` Course has been modified. Please publish to iLearn, before the course ${propsData.courseName} can be deleted. ` : `Are you sure you want to Delete the course ${propsData.courseName} ?`, 'Delete') }}>Delete</Dropdown.Item>}\r\n {props.dataItem.courseStatus == \"Closed\" && <Dropdown.Item onClick={(e) => { onConfirmation(e, `Are you sure you want to Reopen the course ${propsData.courseName} ?`, 'Reopen') }}>Reopen</Dropdown.Item>}\r\n </DropdownButton>\r\n\r\n }\r\n </td >\r\n </>\r\n )\r\n }\r\n\r\n const [showVendorContent, setShowVendorContent] = useState(FormMode.None);\r\n const [showCoursesForSelectedVendorContent, setShowCoursesForSelectedVendorContent] = useState(FormMode.None);\r\n\r\n\r\n const GetStatusBadgeCssClass = (status: string) => {\r\n\r\n if (status.toLowerCase() === \"new\") {\r\n return \"badge badge-blue-gray\"\r\n }\r\n else if (status.toLowerCase() === \"edited\") {\r\n return \"badge badge-secondary\"\r\n }\r\n else if (status.toLowerCase() === \"published\") {\r\n return \"badge badge-success\"\r\n }\r\n else if (status.toLowerCase() === \"closed\") {\r\n return \"badge badge-danger\"\r\n }\r\n else if (status.toLowerCase() === \"reopened\") {\r\n return \"badge badge-info\"\r\n }\r\n }\r\n\r\n const GridColumnVendorContent = (props: any) => {\r\n let vendorContents: Array<ICourseVendorContent> = props.dataItem.vendorContents;\r\n let onDeleteVendorContent = (VendorContentId: number) => {\r\n setCourseId(props.dataItem.courseId)\r\n setVendorContentId(VendorContentId)\r\n setShowVendorContent(FormMode.Delete)\r\n }\r\n let onAddVendorContent = () => {\r\n setCourseId(props.dataItem.courseId)\r\n setShowVendorContent(FormMode.New)\r\n }\r\n\r\n function VendorContentBadge(props: ICourseVendorContent) {\r\n\r\n return (\r\n\r\n <>\r\n <OverlayTrigger\r\n key={props.vendorContentId}\r\n placement='top'\r\n overlay={\r\n <Tooltip id={`tooltip-${props.vendorContentId}`}>\r\n {props.vendorContentName}\r\n </Tooltip>\r\n }\r\n >\r\n <div className=\"form form-control form-control-sm\" key={props.vendorContentId}>{props.vendorContentName}</div>\r\n </OverlayTrigger>\r\n\r\n </>\r\n );\r\n }\r\n\r\n let vendorList = vendorContents.map((value, i) =>\r\n\r\n <div className=\"input-group\" key={i}>\r\n <VendorContentBadge {...value} />\r\n {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && props.dataItem.courseContentType != 'Content to be Teacher-Created' &&\r\n <div className=\"input-group-append\">\r\n {value?.statusCode?.toLowerCase() == 's' || props.dataItem.courseStatus.toLowerCase() === 'closed' || props.dataItem.courseStatus.toLowerCase() === 'published' || props.dataItem.courseStatus.toLowerCase() === 'reopened' ? ' ' :\r\n <Button size=\"sm\" variant=\"outline-secondary\" onClick={(e) => { onDeleteVendorContent(value.vendorContentId) }}><i className=\"fas fa-trash-alt\"></i></Button>\r\n }\r\n {(vendorContents.length - 1 == i && userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && props.dataItem.courseStatus.toLowerCase() != 'closed') && (\r\n <Button size=\"sm\" variant=\"outline-primary\" onClick={(e) => { onAddVendorContent() }}><i className=\"fas fa-plus\"></i></Button>\r\n )}\r\n </div>\r\n }\r\n </div>\r\n );\r\n return (\r\n <td className=\"td-vendor-content\">\r\n <div className=\"input-group-space\">\r\n {vendorList}\r\n <div style={{ display: vendorContents.length == 0 ? \"flex\" : \"none\" }} >\r\n {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && props.dataItem.courseStatus.toLowerCase() != 'closed' && props.dataItem.courseContentType != 'Content to be Teacher-Created' && <Button size=\"sm\" variant=\"outline-primary\" onClick={(e) => { onAddVendorContent() }}><i className=\"fas fa-plus\"></i></Button>}\r\n </div>\r\n </div>\r\n </td>)\r\n }\r\n\r\n const GridStatusCell = (props: any) => {\r\n return (\r\n <td className='td-course-status'>\r\n <div className={GetStatusBadgeCssClass(props.dataItem.courseStatus)}>{props.dataItem.courseStatus}</div>\r\n </td>\r\n )\r\n }\r\n\r\n const onGridCheckBoxClick = (dataItem: any) => {\r\n dataItem.isSelected = !dataItem.isSelected;\r\n if (dataItem.isSelected) {\r\n let items: ICourses = {\r\n courseId: dataItem.courseId,\r\n schoolDBN: dataItem.schoolDBN,\r\n schoolYear: +orginalSchoolYear.id,\r\n courseName: dataItem.courseName,\r\n coursePurpose: dataItem.coursePurpose,\r\n courseCode: dataItem.courseCode,\r\n isMerged: dataItem.isMerged,\r\n courseOrginType: dataItem.courseOrginType,\r\n courseContentType: dataItem.courseContentType,\r\n courseStatus: dataItem.courseStatus,\r\n totalStudentEnrolled: dataItem.totalStudentEnrolled,\r\n totalStudentUnpublished: dataItem.totalStudentUnpublished,\r\n courseTeachers: dataItem.courseTeachers,\r\n vendorContents: dataItem.vendorContents\r\n }\r\n let mergeData: IMergeCourseSpec = {\r\n courseId: dataItem.courseId,\r\n isPrimary: false\r\n }\r\n\r\n setCheckedCourses([...checkedCourses, items])\r\n setMergeCourseData([...mergeCourseData, mergeData]\r\n )\r\n }\r\n else {\r\n const items = checkedCourses.filter(item => item.courseId !== dataItem.courseId);\r\n const mergeItems = mergeCourseData.filter(item => item.courseId !== dataItem.courseId);\r\n setCheckedCourses(items)\r\n setMergeCourseData(mergeItems)\r\n }\r\n forceUpdate();\r\n }\r\n\r\n const [courseNameChangeError, setCourseNameChangeError] = useState({\r\n courseNameError: ''\r\n })\r\n\r\n const [errors, setErrors] = useState({\r\n mergeError: ''\r\n })\r\n const validate = () => {\r\n let vendorCheck: any = checkedCourses.filter(item => { return item.vendorContents.length > 0 });\r\n let newCourseCheck: any = checkedCourses.filter(item => item.courseStatus.toLowerCase() !== 'new');\r\n let mergeCourseCheck: any = checkedCourses.filter(item => item.isMerged === 1);\r\n let coursesOriginCheck: any = checkedCourses.filter(item => item.courseOrginType.toLowerCase() !== 'stars');\r\n let error = {\r\n mergeError: '',\r\n };\r\n if (vendorCheck.length > 0) { error.mergeError = \"Please remove all vendor contents before merging the course.\"; }\r\n if (coursesOriginCheck != '') { error.mergeError = \"Only Stars course can be merged.\"; }\r\n if (newCourseCheck != '') { error.mergeError = \"Only New courses can be merged. Deselect Published courses.\"; }\r\n if (checkedCourses.length < 2) { error.mergeError = \"Please choose 2 or more courses in order to merge\"; }\r\n if (checkedCourses.length > 10) { error.mergeError = \"Cannot merge more than 10 courses. Please deselect.\"; }\r\n if (mergeCourseCheck != '') { error.mergeError = \"Merged courses can't be merged again\"; }\r\n setErrors(error);\r\n if (error.mergeError) {\r\n setFormMode(FormMode.Error)\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n // Header Checkbox Template.. Binds the CheckBox in the Header\r\n const [headerCheckBoxValue, setHeaderCheckBox] = useState(false);\r\n const onHeaderCheckBoxClick = (event: any, products?: any) => {\r\n let checked = event.target.checked;\r\n setHeaderCheckBox(checked)\r\n }\r\n\r\n const closeCourseVendorContentModal = (error: string) => {\r\n if (error != \"\") {\r\n //TODO: Display error message in proper format\r\n setPageAlert(error)\r\n setTimeout(() => { setPageAlert('') }, 8000);\r\n\r\n }\r\n CourseService.getVendorContentData(courseIdSelected, locationCode.id).then(response => {\r\n let vendorContents = response.data as ICourseVendorContent[];\r\n let courseArray = data;\r\n let courseIndex = courseArray.findIndex(o => o.courseId == courseIdSelected);\r\n courseArray[courseIndex].vendorContents = vendorContents;\r\n setDefaultExpand(courseArray);\r\n let courses = checkedCourses\r\n if (courses.length > 0) {\r\n let index = courses.findIndex(o => o.courseId == courseIdSelected);\r\n courses[index].vendorContents = vendorContents;\r\n setCheckedCourses(courses);\r\n }\r\n setRefreshSubGrid(!refreshSubGrid)\r\n setShowVendorContent(FormMode.None)\r\n\r\n });\r\n }\r\n\r\n\r\n const closeCourseForVendorContentModal = (error: string, vendorInfo: IMultipleCoursesVendorContent) => {\r\n if (error != \"\") {\r\n //TODO: Display error message in proper format\r\n setPageAlert(error)\r\n setTimeout(() => { setPageAlert('') }, 8000);\r\n\r\n };\r\n if (vendorInfo.courseId.length !== 0) {\r\n getCourses();\r\n }\r\n setShowCoursesForSelectedVendorContent(FormMode.None);\r\n }\r\n const deleteVendorContent = () => {\r\n let deleteCourseVendorContent: ICourseVendorContent = {\r\n courseId: courseIdSelected,\r\n schoolDBN: locationCode.id,\r\n vendorContentId: vendorContentIdSelected,\r\n vendorId: 0,\r\n vendorContentName: '',\r\n vendorName: '',\r\n availableLicenses: 0,\r\n totalLicenses: 0,\r\n statusCode: ''\r\n }\r\n CourseService.delete(deleteCourseVendorContent).then(response => {\r\n // Display Success message \r\n let courseArray = data;\r\n let courseIndex = courseArray.findIndex(o => o.courseId == courseIdSelected);\r\n var vendorContentArray = courseArray[courseIndex].vendorContents\r\n let vendorContentIndex = vendorContentArray.findIndex(o => o.vendorContentId == vendorContentIdSelected);\r\n vendorContentArray.splice(vendorContentIndex, 1);\r\n courseArray[courseIndex].vendorContents = vendorContentArray\r\n if (courseArray[courseIndex].courseStatus != \"New\") {\r\n courseArray[courseIndex].courseStatus = \"Edited\"\r\n }\r\n setDefaultExpand(courseArray);\r\n\r\n let courses = checkedCourses\r\n if (courses.length > 0) {\r\n let index = courses.findIndex(o => o.courseId == courseIdSelected);\r\n var ContentArray = courses[index].vendorContents\r\n let ContentIndex = ContentArray.findIndex(o => o.vendorContentId == vendorContentIdSelected);\r\n ContentArray.splice(ContentIndex, 1);\r\n courses[index].vendorContents = ContentArray\r\n setCheckedCourses(courses);\r\n }\r\n setRefreshSubGrid(!refreshSubGrid)\r\n setShowVendorContent(FormMode.None)\r\n })\r\n\r\n }\r\n const onGridExpand = (event: any) => {\r\n // dataItem.expanded = !dataItem.expanded;\r\n let courseArray = data;\r\n courseArray.map((item: any) => {\r\n if (event.dataItem.courseId === item.courseId) {\r\n item.expanded = !event.dataItem.expanded;\r\n } else {\r\n item.expanded = false;\r\n }\r\n })\r\n setDefaultExpand(courseArray);\r\n forceUpdate();\r\n }\r\n\r\n const onLicensesClick = () => {\r\n setShowCoursesForSelectedVendorContent(FormMode.New)\r\n }\r\n\r\n const onFormAction = (e: any, course: ICourseDetail, actionType: FormMode) => {\r\n\r\n switch (actionType) {\r\n case FormMode.New:\r\n setFormMode(FormMode.New)\r\n setDefaultTeacher({ id: '', text: '' })\r\n setCourseDetail({\r\n courseId: 0,\r\n schoolDBN: '',\r\n schoolYear: 0,\r\n courseName: '',\r\n courseSource: '',\r\n isMerged: 0,\r\n courseStatus: '',\r\n purpose: '',\r\n mergeCourses: [],\r\n courseContentType: '',\r\n teacherOfRecord: '',\r\n startDate: new Date(),\r\n endDate: orginalSchoolYear.schoolYearEndDate,\r\n createdBy: '',\r\n createdOn: new Date(),\r\n mergedOn: new Date(),\r\n mergedBy: ''\r\n });\r\n TeacherService.getTeachersBySchoolDBN(locationCode.id).then(response => {\r\n let data = response.data as IAssignedTeachers[]\r\n let teacherList = data.map((tl: any) => ({\r\n id: tl.teacherId,\r\n text: tl.teacherId + ' | ' + tl.firstName + ' ' + tl.lastName\r\n }));\r\n setTeacherOfRecordList(teacherList)\r\n setOriginalTeacherOfRecordList(teacherList)\r\n\r\n });\r\n codesetService.getData().then(response => {\r\n let data = response.data as ICodeSet[];\r\n let purposeList = data.filter(x => x.codeSetName.toLowerCase().includes('coursepurpose'));\r\n let contentTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('coursecontenttype')).map((cl: any) => ({\r\n id: cl.id,\r\n text: cl.displayText\r\n }));\r\n setPurposeList(purposeList);\r\n setContentTypeList(contentTypeList);\r\n });\r\n break;\r\n case FormMode.Edit:\r\n setDefaultTeacher({ id: '', text: '' })\r\n let courseUniqueId = data.find(c => c.courseId == course.courseId);\r\n if (courseUniqueId) {\r\n course.courseUniqueId = courseUniqueId.courseUniqueId\r\n }\r\n\r\n setCourseDetail(course)\r\n TeacherService.getTeachersBySchoolDBN(locationCode.id).then(response => {\r\n let data = response.data as IAssignedTeachers[]\r\n let teacherList = data.map((tl: any) => ({\r\n id: tl.teacherId,\r\n text: tl.teacherId + ' | ' + tl.firstName + ' ' + tl.lastName\r\n }));\r\n setTeacherOfRecordList(teacherList)\r\n setOriginalTeacherOfRecordList(teacherList)\r\n let teacher = teacherList.find(x => (x.id) === course.teacherOfRecord) as IDropDownValue\r\n if (teacher != null) {\r\n setDefaultTeacher(teacher)\r\n }\r\n else {\r\n TeacherService.getTeacherById(course.teacherOfRecord).then(response => {\r\n let teacher = {\r\n id: response.data.teacherId,\r\n text: response.data.teacherId + ' | ' + response.data.firstName + ' ' + response.data.lastName\r\n }\r\n setDefaultTeacher(teacher)\r\n })\r\n }\r\n });\r\n\r\n codesetService.getData().then(response => {\r\n let data = response.data as ICodeSet[];\r\n let purposeList = data.filter(x => x.codeSetName.toLowerCase().includes('coursepurpose'));\r\n\r\n let contentTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('coursecontenttype')).map((cl: any) => ({\r\n id: cl.id,\r\n text: cl.displayText\r\n }));\r\n setPurposeList(purposeList);\r\n setContentTypeList(contentTypeList);\r\n });\r\n setFormMode(FormMode.Edit)\r\n\r\n break;\r\n default: {\r\n\r\n break;\r\n }\r\n }\r\n e.preventDefault();\r\n }\r\n const onCourseSave = (event: any, actionType: FormMode, data: ICourseDetail) => {\r\n // let courseUniqueId = data.find(c=>c.)\r\n switch (actionType) {\r\n case FormMode.New:\r\n event.preventDefault();\r\n CourseService.postCourse(data).then(response => {\r\n // Display Success message\r\n if (!response.data.isValidResponse) {\r\n //TODO: Display error message in proper format\r\n // setPageAlert(response.data.errors.join())\r\n setCourseSaveErrorMessage(response.data.errors.join())\r\n // setTimeout(() => { setPageAlert('') }, 8000);\r\n\r\n } else {\r\n getCourses();\r\n setCourseSaveErrorMessage(\"\")\r\n setFormMode(FormMode.None)\r\n }\r\n }\r\n );\r\n //Clear Existing vlues\r\n break;\r\n case FormMode.Edit:\r\n event.preventDefault();\r\n CourseService.editCourse(data).then(response => {\r\n // Display Success message\r\n if (!response.data.isValidResponse) {\r\n //TODO: Display error message in proper format\r\n // setPageAlert(response.data.errors.join())\r\n setCourseSaveErrorMessage(response.data.errors.join())\r\n // setTimeout(() => { setPageAlert('') }, 8000);\r\n\r\n }\r\n else {\r\n getCourses();\r\n setCourseSaveErrorMessage(\"\")\r\n setFormMode(FormMode.None)\r\n }\r\n }\r\n );\r\n //Clear Existing vlues\r\n break;\r\n default: {\r\n setCourseSaveErrorMessage(\"\")\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n const onTeacherSearch = (event: any, data: IDropDownValue[]) => {\r\n setTeacherOfRecordList(data)\r\n }\r\n\r\n const onTeacherById = (event: any, teacherEin: string) => {\r\n TeacherService.getTeacherById(teacherEin).then(response => {\r\n let teacher = {\r\n id: response.data.teacherId,\r\n text: response.data.teacherId + ' | ' + response.data.firstName + ' ' + response.data.lastName\r\n }\r\n if (teacher.id != null) {\r\n let teacherExist = originalTeacherOfRecordList.find(x => x.id === teacher.id)\r\n if (!teacherExist) {\r\n setTeacherOfRecordList(\r\n teacherOfRecordList.concat(teacher))\r\n setOriginalTeacherOfRecordList(\r\n originalTeacherOfRecordList.concat(teacher))\r\n }\r\n setDefaultTeacher(teacher)\r\n }\r\n })\r\n }\r\n\r\n const onMergeClose = (data: FormMode) => {\r\n setFormMode(data)\r\n\r\n }\r\n\r\n const onMergeSave = (event: any, actionType: FormMode, data: IMergeCourseSpec[]) => {\r\n let mergeCourses: IMergeCourses = { mergeCourses: data };\r\n switch (actionType) {\r\n case FormMode.Merge:\r\n event.preventDefault();\r\n CourseService.merge(mergeCourses).then(response => {\r\n // Display Success message\r\n getCourses();\r\n setFormMode(FormMode.None)\r\n }\r\n );\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n const mergeCourses = () => {\r\n if (validate()) {\r\n setFormMode(FormMode.Merge)\r\n }\r\n else {\r\n setFormMode(FormMode.Error)\r\n }\r\n }\r\n\r\n const el = document.querySelector(\".loader-container\");\r\n\r\n return (\r\n <div>\r\n <div style={{ display: 'inline', color: \"red\" }} ></div>\r\n <Modal\r\n size=\"lg\"\r\n show={showVendorContent == FormMode.New}\r\n onHide={() => { setShowVendorContent(FormMode.None) }}\r\n animation={false}\r\n backdrop=\"static\"\r\n keyboard={false}>\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Vendor Content</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <AddVendorContent updateCourseStatus={updateCourseStatus} courseId={courseIdSelected} schoolDBN={locationCode.id} closeCourseVendorContentModal={closeCourseVendorContentModal} />\r\n </Modal.Body>\r\n </Modal>\r\n <Modal\r\n show={showVendorContent == FormMode.Delete}\r\n onHide={() => { setShowVendorContent(FormMode.None) }}\r\n animation={false}\r\n backdrop=\"static\"\r\n keyboard={false}>\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Delete Vendor Content</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n Are you sure you want to delete the Vendor Content ?\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => { setShowVendorContent(FormMode.None) }}>Cancel</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => { deleteVendorContent() }}>Delete</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n {showCoursesForSelectedVendorContent == FormMode.New && <AddCoursesForVendorContent schoolDBN={locationCode.id} closeCourseForVendorContentModal={closeCourseForVendorContentModal} />}\r\n {formMode == FormMode.New && <AddNewCourse courseDetail={courseDetail} schoolYear={+orginalSchoolYear.id} location={locationCode.id} formmode={formMode} purpose={purposeList} contentType={contentTypeList} originalTeacherList={originalTeacherOfRecordList} defaultTeacher={defaultTeacher} teacher={teacherOfRecordList} teacherById={onTeacherById} onSearch={onTeacherSearch} onSave={onCourseSave} courseSaveErrorMessage={courseSaveErrorMessage} setCourseSaveErrorMessage={deleteCourseSaveErrorMessage} />}\r\n {formMode == FormMode.Edit && <AddNewCourse courseDetail={courseDetail} schoolYear={+orginalSchoolYear.id} location={locationCode.id} formmode={formMode} purpose={purposeList} contentType={contentTypeList} originalTeacherList={originalTeacherOfRecordList} defaultTeacher={defaultTeacher} teacher={teacherOfRecordList} teacherById={onTeacherById} onSearch={onTeacherSearch} onSave={onCourseSave} courseSaveErrorMessage={courseSaveErrorMessage} setCourseSaveErrorMessage={deleteCourseSaveErrorMessage} />}\r\n {formMode == FormMode.Merge && <MergeCourses mergeData={mergeCourseData} courses={checkedCourses} courseCount={checkedCourses.length} formmode={formMode} onMergeClose={onMergeClose} onMerge={onMergeSave} />}\r\n {formMode == FormMode.Error && <MergeError mergeMessage={errors.mergeError} formmode={formMode} onMergeClose={onMergeClose} onMerge={onMergeSave} />}\r\n {pageAlert && pageAlert != \"\" && <div className=\"alert alert-danger\" role=\"alert\">\r\n {pageAlert}\r\n </div>}\r\n <Row className=\"mb-3\">\r\n <Col></Col>\r\n <Col sm=\"12\" xl=\"5\" xs=\"12\" className='text-right order-first order-xl-last mb-3 mb-xl-0 mt-n5 mt-xl-0'>\r\n {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 &&\r\n <button type=\"button\" className=\"btn btn-primary ml-2\" onClick={(e) => { onFormAction(e, courseDetail, FormMode.New) }}>\r\n <i className=\"fas fa-plus\"> </i>\r\n <a> Courses</a>\r\n </button>\r\n }\r\n\r\n {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 &&\r\n <OverlayTrigger\r\n placement='top'\r\n overlay={\r\n <Tooltip id={`tooltip}`}>\r\n Add the same vendor content to multiple courses at once.\r\n </Tooltip>\r\n }\r\n >\r\n <button type=\"button\" className=\"btn btn-primary ml-1\" onClick={(e) => { onLicensesClick() }}>\r\n <i className=\"fas fa-plus\"> </i>\r\n <a> Vendor Content to Courses</a>\r\n </button>\r\n </OverlayTrigger>\r\n }</Col>\r\n </Row>\r\n <Row className=\"mb-3\">\r\n <Col xl=\"3\" xs=\"10\" style={{ zIndex: 1 }}>\r\n <InputGroup className=\"input-group\">\r\n <FormControl\r\n placeholder=\"Course name\"\r\n onChange={onChangeCourseNameSearch}\r\n className=\"form form-control form-control-md text-ellipse\"\r\n maxLength={128}\r\n value={courseNameSearch}\r\n onKeyPress={onSearchClickEnter}\r\n />\r\n {courseFilters.searchCourseName && courseFilters.searchCourseName != \"\" &&\r\n <button type=\"button\" className=\"close mr-3\" onClick={clearCourseNameSearch} aria-label=\"Close\">\r\n <span aria-hidden=\"false\">×</span>\r\n </button>\r\n }\r\n <div className=\"input-group-append\">\r\n <Button className=\"btn btn-primary btn-md \" onClick={searchByCourseName} >\r\n Search\r\n </Button>\r\n </div>\r\n </InputGroup>\r\n </Col>\r\n <Col xl=\"9\" className='text-right'>\r\n <Row>\r\n <Col md=\"4\" xl=\"4\" className='text-right mb-1 mb-md-0'>\r\n <DropDownList\r\n data={sortValue}\r\n value={sortValue.find(i => i.value == courseFilters.orderBy)}\r\n textField=\"sort\"\r\n onChange={onSortValueChange}\r\n style={{ width: \"100%\" }}\r\n /></Col>\r\n <Col md=\"4\" xl=\"4\" className='text-right'>\r\n <DropDownList\r\n data={filterCourseStatus}\r\n textField=\"courseStatus\"\r\n value={filterCourseStatus.find(i => i.value == courseFilters.searchCourseStatus)}\r\n onChange={onStatusFilterChange}\r\n style={{ width: \"100%\" }}\r\n />\r\n </Col>\r\n <Col md=\"4\" xl=\"4\" className='text-right'>\r\n <DropDownList\r\n data={filterCourseTypes}\r\n textField=\"courseType\"\r\n onChange={onCourseTypeFilterChange}\r\n value={filterCourseTypes.find(i => i.value == courseFilters.searchCourseType)}\r\n style={{ width: \"100%\" }}\r\n /></Col>\r\n\r\n </Row>\r\n </Col>\r\n </Row>\r\n <Row className=\"mb-3 text-right\">\r\n <Col></Col>\r\n <Col>\r\n {isPublishedSelected&& \r\n <Checkbox className='text-danger' value={isUnpublishedStudentsValue}checked={isUnpublishedStudentsChecked} onChange={onUnpublishedStudentChecked} labelPlacement={'after'}> Show Courses with Unpublished Students Only</Checkbox>}\r\n </Col> \r\n </Row>\r\n {isLoading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n <Grid\r\n data={data.slice(0, page.take)}\r\n detail={SubGridHost}\r\n expandField={'expanded'}\r\n scrollable={\"none\"}\r\n onExpandChange={onGridExpand}\r\n skip={page.skip}\r\n take={page.take}\r\n total={(data.length > 0 && data[0].totalPages) ? data[0].totalPages : 0}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n onPageChange={pageChange}\r\n className=\"courses-grid\"\r\n >\r\n\r\n {/* <GridColumn field=\"isSelected\" filterable={false} width=\"40px\" title=\" \" cell={props => (\r\n <td className=\"pl-0 pr-lg-0 text-center\">\r\n {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 &&\r\n <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n }</td>\r\n )} /> */}\r\n\r\n <GridColumn filterable={false} field=\"expanded\" title=' ' cell={props => (\r\n <td className=\"pr-0 td-course-icon\">\r\n <div className={`svg-app-icon ${props.dataItem.courseStatus.toLowerCase() === \"published\" ? \" text-success\" : \" text-blue-gray\"} mr-3\"`}>\r\n <IconCourseEnvelop courseType={props.dataItem.courseType} courseOrginType={props.dataItem.courseOrginType} merge={props.dataItem.isMerged}></IconCourseEnvelop>\r\n </div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"courseName\" title=\"Courses\" cell={GridColumnCourses} className=\"align-top\" />\r\n <GridColumn field=\"vendorContent\" title=\"Vendor Content\" cell={GridColumnVendorContent} filterable={false} />\r\n <GridColumn field=\"courseStatus\" title=\"Status\" cell={GridStatusCell} />\r\n {userProfile?.role?.roleName != 'Central Staff' && orginalSchoolYear.isCurrent != 0 && <GridColumn field=\"buttons\" title=\" \" filterable={false} className=\"text-right pl-0\" cell={GridColumnButton} />}\r\n </Grid>\r\n </div>\r\n )\r\n}","import { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n getBySchoolDBN: (locationCode: string , schoolYear : number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Schools/${locationCode}/PurchaseOrders/${schoolYear}`\r\n }),\r\n getByProductId: (id:number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/PurchaseOrder/Product/${id}`\r\n }),\r\n post: (requestdata: any) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': `PurchaseOrder/create`,\r\n 'data': requestdata\r\n })\r\n}","import axios from 'axios'\r\nimport IVendor from '../model/Vendor';\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n getData: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/Vendor',\r\n }),\r\n getAllByLocationCode: function (locationCode: string) {\r\n return AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/getallbylocationcode/' + locationCode,\r\n });\r\n },\r\n getStates: function () {\r\n return AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/States',\r\n });\r\n },\r\n getById: (id: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/vendor/' + id,\r\n }),\r\n post: (requestdata: IVendor) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/Vendor',\r\n 'data': requestdata\r\n }),\r\n edit: (requestdata: IVendor) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/Vendor?id=' + requestdata.id,\r\n 'data': requestdata\r\n }),\r\n delete: (id: number) =>\r\n AxiosInstance({\r\n 'method': 'DELETE',\r\n 'url': '/Vendor?id=' + id,\r\n })\r\n}\r\n","import IProduct from '../model/Product';\r\nimport { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n getData: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/product',\r\n }),\r\n getById: (id: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/product/' + id,\r\n }),\r\n getByVendorId: (vendorId: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': '/productByVendorId/' + vendorId,\r\n }),\r\n post: (requestdata: IProduct) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/product',\r\n 'data': requestdata\r\n }),\r\n edit: (requestdata: IProduct) =>\r\n AxiosInstance({\r\n 'method': 'PUT',\r\n 'url': '/product?id=' + requestdata.id,\r\n 'data': requestdata\r\n }),\r\n delete: (id: number) =>\r\n AxiosInstance({\r\n 'method': 'DELETE',\r\n 'url': '/product?id=' + id,\r\n })\r\n}\r\n","import React, { useState, useEffect, useRef, useContext } from 'react';\r\nimport purchaseOrderService from '../services/PurchaseOrderService';\r\nimport IPurchaseOrder from '../model/IPurchaseOrder'\r\nimport IPurchaseOrderProduct from '../model/IPurchaseOrderProduct'\r\nimport { Modal, Button, Row, Form, Col } from 'react-bootstrap';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid'\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport schoolListService from '../services/SchoolListService';\r\nimport vendorService from '../services/VendorService'\r\nimport productService from '../services/ProductService'\r\nimport licenseAllocationService from '../services/LicenseAllocation'\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { FormMode, IDropDownValue } from '../services/Utility'\r\nimport Moment from 'moment';\r\nimport { AuthContextDefault, UserProfileType, Year } from '../services/AppContext';\r\nimport LocalStorageService from '../services/LocalStorage'\r\n\r\ninterface ILocation {\r\n id: string\r\n}\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 25,\r\n};\r\n\r\nexport default function PurchaseOrder(location: ILocation) {\r\n\r\n const mountedRef = useRef(true);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n const [orginalVendorList, setOrginalVendorList] = useState<IDropDownValue[]>([]);\r\n const [vendorList, setVendorList] = useState<IDropDownValue[]>([]);\r\n const [vendorListCopy, setVendorListCopy] = useState<IDropDownValue[]>([]);\r\n const [productList, setProductList] = useState<IDropDownValue[]>([]);\r\n const [product, setProduct] = useState<IPurchaseOrderProduct>({\r\n locationCode: '',\r\n productSKU: '',\r\n price: 0,\r\n note: '',\r\n priceType: '',\r\n productName: '',\r\n vendorName: '',\r\n id: 0,\r\n vendorId: 0\r\n });\r\n const [formCascade, setFormCascade] = useState({\r\n vendors: vendorList,\r\n products: productList,\r\n vendor: null,\r\n product: null\r\n })\r\n\r\n useEffect(() => {\r\n vendorService.getData().then(response => {\r\n let vendorDropDownData = response.data.map((vl: any) => ({\r\n id: vl.id,\r\n text: vl.vendorName\r\n }));\r\n setVendorList(vendorDropDownData)\r\n setVendorListCopy(vendorDropDownData)\r\n })\r\n setUserProfile(LocalStorageService.getUserProfile())\r\n return () => { mountedRef.current = false }\r\n\r\n }, []);\r\n\r\n const vendorChange = (event: any) => {\r\n setFormCascade({\r\n vendors: [],\r\n products: [],\r\n vendor: null,\r\n product: null\r\n });\r\n const vendor = event.target.value;\r\n\r\n const target = event.target //as HTMLSelectElement\r\n\r\n setFormValue({ ...formValue, [target.name]: target.value.text });\r\n const vendorId = Number(vendor.id)\r\n\r\n productService.getByVendorId(vendorId).then(response => {\r\n let productDropDownData = response.data.map((pl: any) => ({\r\n id: pl.id,\r\n text: pl.productName\r\n }));\r\n setProductList(productDropDownData)\r\n })\r\n\r\n setProduct({\r\n locationCode: '',\r\n productSKU: '',\r\n price: 0,\r\n note: '',\r\n priceType: '',\r\n productName: '',\r\n vendorName: '',\r\n id: 0,\r\n vendorId: 0\r\n });\r\n setFormCascade({\r\n vendors: vendorList,\r\n products: productList,\r\n vendor: vendor,\r\n product: null\r\n });\r\n }\r\n\r\n const productChange = (event: any) => {\r\n setProduct({\r\n locationCode: '',\r\n productSKU: '',\r\n price: 0,\r\n note: '',\r\n priceType: '',\r\n productName: '',\r\n vendorName: '',\r\n id: 0,\r\n vendorId: 0\r\n });\r\n const product = event.target.value;\r\n const target = event.target //as HTMLSelectElement\r\n setFormValue({ ...formValue, [target.name]: target.value.text });\r\n\r\n const productId = Number(product.id)\r\n purchaseOrderService.getByProductId(productId).then(response => {\r\n setProduct(response.data)\r\n })\r\n\r\n setFormCascade({\r\n vendors: vendorList,\r\n products: productList,\r\n vendor: formCascade.vendor,\r\n product: product\r\n })\r\n }\r\n\r\n\r\n const [rowData, setRowData] = useState<IPurchaseOrder[]>([]);\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [formValue, setFormValue] = useState({\r\n locationCode: '',\r\n productSKU: '',\r\n quantityPurchased: 0,\r\n unitPrice: 0,\r\n purchaseOrderNumber: '',\r\n productName: '',\r\n vendorId: 0,\r\n vendorName: ''\r\n });\r\n\r\n const [errors, setErrors] = useState({\r\n vendorNameError: '',\r\n productNameError: '',\r\n quantityPurchasedError: '',\r\n purchaseOrderNumberError: '',\r\n serverSideError: ''\r\n })\r\n const validate = () => {\r\n let error = {\r\n vendorNameError: '',\r\n productNameError: '',\r\n quantityPurchasedError: '',\r\n purchaseOrderNumberError: '',\r\n serverSideError: ''\r\n };\r\n\r\n if (formMode == FormMode.New) {\r\n if (!formCascade.vendor) { error.vendorNameError = \"Vendor Name is required\"; }\r\n\r\n if (!formCascade.product) { error.productNameError = \"Product is required\"; }\r\n\r\n if (!formValue.quantityPurchased || formValue.quantityPurchased <= 0) { error.quantityPurchasedError = \"Enter Quantity Purchased\"; }\r\n if (!formValue.purchaseOrderNumber) { error.purchaseOrderNumberError = \"Purchase Order is required\"; }\r\n setErrors(error);\r\n if (error.vendorNameError || error.productNameError || error.quantityPurchasedError || error.purchaseOrderNumberError) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n\r\n };\r\n\r\n const handleChange = (event: any) => {\r\n const target = event.target //as HTMLSelectElement\r\n setFormValue({ ...formValue, [target.name]: target.value });\r\n };\r\n\r\n\r\n const onFormAction = (purchaseOrderId: number, actionType: FormMode) => {\r\n setErrors({\r\n vendorNameError: '',\r\n productNameError: '',\r\n quantityPurchasedError: '',\r\n purchaseOrderNumberError: '',\r\n serverSideError: ''\r\n });\r\n setFormValue({\r\n locationCode: '',\r\n productSKU: '',\r\n quantityPurchased: 0,\r\n unitPrice: 0,\r\n purchaseOrderNumber: '',\r\n productName: '',\r\n vendorId: 0,\r\n vendorName: ''\r\n });\r\n setFormCascade({\r\n vendors: vendorList,\r\n products: productList,\r\n vendor: null,\r\n product: null\r\n });\r\n\r\n setProduct({\r\n locationCode: '',\r\n productSKU: '',\r\n price: 0,\r\n note: '',\r\n priceType: '',\r\n productName: '',\r\n vendorName: '',\r\n id: 0,\r\n vendorId: 0\r\n });\r\n switch (actionType) {\r\n\r\n case FormMode.New:\r\n setFormMode(FormMode.New)\r\n\r\n vendorService.getData().then(response => {\r\n let vendorDropDownData = response.data.map((vl: any) => ({\r\n id: vl.id,\r\n text: vl.vendorName\r\n }));\r\n setVendorList(vendorDropDownData)\r\n setVendorListCopy(vendorDropDownData)\r\n return () => { mountedRef.current = false }\r\n })\r\n\r\n //Clear Existing vlues\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const onSave = (event: any, actionType: FormMode) => {\r\n let purchaseOrder = {\r\n productSKU: product.productSKU,\r\n vendorId: product.vendorId,\r\n vendorName: formValue.vendorName,\r\n locationCode: location.id,\r\n productName: formValue.productName,\r\n quantityPurchased: Number(formValue.quantityPurchased),\r\n unitPrice: Number(product.price),\r\n purchaseOrderNumber: formValue.purchaseOrderNumber,\r\n schoolYear: +orginalSchoolYear.id\r\n };\r\n switch (actionType) {\r\n case FormMode.New:\r\n event.preventDefault();\r\n\r\n if (validate()) {\r\n\r\n purchaseOrderService.post(purchaseOrder).then(response => {\r\n if (response.data.isValidResponse) {\r\n getPurchaseOrder()\r\n // Display Success purchaseOrder\r\n setFormMode(FormMode.None)\r\n } else {\r\n let error = {\r\n vendorNameError: '',\r\n productNameError: '',\r\n quantityPurchasedError: '',\r\n purchaseOrderNumberError: '',\r\n serverSideError: response.data.errors[0]\r\n };\r\n setErrors(error)\r\n }\r\n\r\n\r\n })\r\n\r\n\r\n }\r\n //Clear Existing vlues\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const filterData = (filter: any) => {\r\n let data = vendorListCopy.slice();\r\n return filterBy(data, filter);\r\n }\r\n\r\n const filterChange = (event: any) => {\r\n let data = filterData(event.filter)\r\n setVendorList(data)\r\n }\r\n\r\n useEffect(() => {\r\n purchaseOrderService.getBySchoolDBN(location.id, +orginalSchoolYear.id).then(response => {\r\n setRowData(response.data)\r\n })\r\n }, [location.id, orginalSchoolYear.id]);\r\n\r\n const getPurchaseOrder = () => {\r\n purchaseOrderService.getBySchoolDBN(location.id, +orginalSchoolYear.id).then(response => {\r\n setRowData(response.data)\r\n })\r\n }\r\n\r\n const format_purchaseOrder = (props: any) => {\r\n return (\r\n <td>\r\n <div className=\"d-flex align-items-center\">\r\n <i className=\"fas fa-shopping-cart mr-2 text-blue-gray\" style={{ \"fontSize\": \"30px\" }}></i>\r\n <div>\r\n <div className=\"text-dark mb-0 h4 p-0 font-weight-bold\">{props.dataItem.orderID}</div>\r\n </div>\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n const format_Price = (props: any) => {\r\n return (\r\n <td>\r\n ${props.dataItem.unitPrice.toLocaleString()}\r\n </td>\r\n )\r\n }\r\n\r\n const format_Date = (props: any) => {\r\n { Moment.locale('en') }\r\n return (\r\n <td>\r\n {Moment(props.dataItem.purchaseDate).format('MMM D, YYYY')}\r\n </td>\r\n )\r\n }\r\n\r\n return (\r\n <div>\r\n {formMode != FormMode.None && <Dialog title={\"Add Purchase Order\"} onClose={() => { setFormMode(FormMode.None) }} style={{ width: \"75%\", position: \"fixed\", left: \"15%\", top: \"20%\", height: \"350px\" }} >\r\n <div id=\"dropDownParent\">\r\n {errors.serverSideError && <div className=\"alert alert-danger\">{errors.serverSideError}</div>}\r\n <Form>\r\n \r\n <Form.Group controlId=\"vendorName\">\r\n <Form.Label>Vendor</Form.Label>\r\n <DropDownList\r\n style={{ width: '100%' }}\r\n defaultValue={null}\r\n data={vendorList}\r\n name='vendorName'\r\n textField=\"text\"\r\n value={formCascade.vendor ?? ''}\r\n onChange={vendorChange}\r\n filterable={true}\r\n onFilterChange={filterChange}\r\n popupSettings={{ appendTo: document.getElementById(\"dropDownParent\") as HTMLElement }}\r\n />\r\n <Form.Text className=\"text-danger\">{errors.vendorNameError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"productName\">\r\n <Form.Label>Product</Form.Label>\r\n <DropDownList\r\n style={{ width: '100%' }}\r\n defaultValue={null}\r\n data={productList}\r\n name='productName'\r\n textField=\"text\"\r\n value={formCascade.product ?? ''}\r\n onChange={productChange}\r\n />\r\n <Form.Text className=\"text-danger\">{errors.productNameError}</Form.Text>\r\n </Form.Group>\r\n\r\n <Form.Group controlId=\"purchaseOrderNumber\">\r\n <Form.Label>PO #</Form.Label>\r\n <Form.Control type=\"text\" name=\"purchaseOrderNumber\" value={formValue.purchaseOrderNumber?.toString() ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.purchaseOrderNumberError}</Form.Text>\r\n </Form.Group>\r\n <Row>\r\n <Col sm=\"6\">\r\n <Form.Group controlId=\"quantityPurchased\">\r\n <Form.Label>Quantity Purchased</Form.Label>\r\n <Form.Control type=\"number\" name=\"quantityPurchased\" value={formValue.quantityPurchased ?? 0} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.quantityPurchasedError}</Form.Text>\r\n </Form.Group>\r\n </Col>\r\n <Col sm=\"6\">\r\n <Form.Group controlId=\"unitPrice\">\r\n <Form.Label>Unit Price</Form.Label>\r\n <Form.Text>${product?.price} {product?.priceType}</Form.Text>\r\n </Form.Group>\r\n </Col>\r\n </Row>\r\n\r\n </Form>\r\n\r\n </div>\r\n <DialogActionsBar>\r\n <Button className=\"m-3\" variant=\"secondary\" onClick={() => { setFormMode(FormMode.None) }}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </DialogActionsBar>\r\n </Dialog>}\r\n {\r\n (userProfile?.role?.roleName == 'System Administrator' && orginalSchoolYear.isCurrent != 0) ?\r\n <div className=\"text-right mb-2\">\r\n <button type=\"button\" className=\"btn btn-primary\" onClick={(e) => { onFormAction(0, FormMode.New) }}>\r\n <i className=\"fas fa-plus\"></i>\r\n </button>\r\n </div> : <div></div>\r\n }\r\n <Grid\r\n data={rowData.slice(page.skip, page.take + page.skip)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageable={true}\r\n scrollable={\"none\"}\r\n onPageChange={pageChange}>\r\n <GridColumn field=\"orderID\" title=\"Purchase Order #\" cell={format_purchaseOrder}></GridColumn>\r\n <GridColumn field=\"recordSource\" title=\"Type\"></GridColumn>\r\n <GridColumn field=\"vendorName\" title=\"Vendor\"></GridColumn>\r\n <GridColumn field=\"quantityPurchased\" title=\"Quantity\"></GridColumn>\r\n <GridColumn field=\"unitPrice\" title=\"Price\" cell={format_Price}></GridColumn>\r\n <GridColumn field=\"purchaseDate\" title=\"Date\" cell={format_Date}></GridColumn>\r\n </Grid>\r\n\r\n </div>\r\n )\r\n}","import axios from 'axios'\r\nimport { AxiosInstances as AxiosInstance } from './BaseService'\r\n\r\nexport default {\r\n GetStatusWiseReport: (schoolYear: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Reports/${schoolYear}/StatusWiseReport`,\r\n }),\r\n\r\n GetLicenseUsageReport: (schoolYear: number, licenseType: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Reports/${schoolYear}/LicenseUsageReport/${licenseType}`,\r\n }),\r\n\r\n\r\n GetPublishedCoursesReport: (schoolYear: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Reports/${schoolYear}/PublishedCoursesReport`,\r\n }),\r\n GetCourseEnrollmentSummaryReport: (schoolYear: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Reports/${schoolYear}/StudentsCountReport`,\r\n }),\r\n\r\n GetSharedInstructionCoursesReport: (schoolYear: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Reports/${schoolYear}/SharedInstructionCoursesReport`,\r\n }),\r\n\r\n GetLicenseTransferHistoryReport: (schoolYear: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Reports/${schoolYear}/LicenseTransferReport`,\r\n }),\r\n\r\n GetTotalCountsReport: (schoolYear: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Reports/${schoolYear}/TotalCountsReport`,\r\n }),\r\n\r\n GetTeacherCreatedCourseReport: (schoolYear: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Reports/${schoolYear}/TeacherCreatedCourse`,\r\n }),\r\n\r\n GetDailyReport: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Reports/DailyReport`,\r\n }),\r\n\r\n GetAllReports: () =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Reports`,\r\n }),\r\n\r\n GetMissingTORReport: (schoolYear: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Reports/${schoolYear}/MissingTORReport`,\r\n }),\r\n}","export function saveAs(data, fileName, options) {\n if ( options === void 0 ) options = {};\n\n var save = postToProxy;\n\n if (options.forceProxy && !options.proxyURL) {\n throw new Error('No proxyURL is set, but forceProxy is true');\n }\n\n if (!options.forceProxy) {\n if (canDownload()) {\n save = saveAsDataURI;\n }\n\n if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(data, fileName, options);\n}\n\nvar anchor = function () { return document.createElement('a'); };\nvar canDownload = function () { return 'download' in anchor(); };\n\nfunction saveAsBlob(data, fileName) {\n var blob = data; // could be a Blob object\n\n if (typeof data === 'string') {\n var parts = data.split(';base64,');\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n\n blob = new Blob([ array.buffer ], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n}\n\nfunction saveAsDataURI(data, fileName) {\n var dataURI = data;\n if (window.Blob && data instanceof Blob) {\n dataURI = URL.createObjectURL(data);\n }\n\n var fileSaver = anchor();\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n var e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(function () { return URL.revokeObjectURL(dataURI); });\n}\n\nfunction postToProxy(dataURI, fileName, options) {\n if (!options.proxyURL) {\n return;\n }\n\n var form = document.createElement('form');\n form.setAttribute('action', options.proxyURL);\n form.setAttribute('method', 'POST');\n form.setAttribute('target', options.proxyTarget || '_self');\n\n var formData = options.proxyData || {};\n formData.fileName = fileName;\n\n var parts = dataURI.split(\";base64,\");\n formData.contentType = parts[0].replace(\"data:\", \"\");\n formData.base64 = parts[1];\n\n for (var name in formData) {\n if (formData.hasOwnProperty(name)) {\n var input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', name);\n input.setAttribute('value', formData[name]);\n\n form.appendChild(input);\n }\n }\n\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}\n\n","var KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar fromCharCode = String.fromCharCode;\n\nexport function encodeBase64(plainText) {\n var input = encodeUTF8(plainText);\n var output = \"\";\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}\n\nfunction encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n\n if (c < 0x80) {\n // One byte\n output += fromCharCode(c);\n } else if (c < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (c >>> 6));\n output += fromCharCode(0x80 | (c & 0x3f));\n } else if (c < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (c >>> 12));\n output += fromCharCode(0x80 | (c >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (c & 0x3f));\n }\n }\n\n return output;\n}\n","var current = {\n compile: function(template) {\n return template;\n }\n};\n\nvar TemplateService = function TemplateService () {};\n\nTemplateService.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nTemplateService.compile = function compile (template) {\n return current.compile(template);\n};\n\nexport default TemplateService;","var FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nvar getterCache = {};\nvar UNDEFINED = 'undefined';\n\ngetterCache[UNDEFINED] = function(obj) {\n return obj;\n};\n\nexport default function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n fields.push(typeof index !== UNDEFINED ? index : (indexAccessor || field));\n });\n\n getterCache[field] = function(obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n\n return result;\n };\n\n return getterCache[field];\n}","export default function map(array, func) {\n return array.reduce(function (result, el, i) {\n var val = func(el, i);\n if (val != null) {\n result.push(val);\n }\n return result;\n }, []);\n}","import TemplateService from './services/template-service';\nimport getter from './utils/getter';\nimport map from './utils/map';\n\nfunction defaultGroupHeaderTemplate(data) {\n return ((data.title) + \": \" + (data.value));\n}\n\nfunction createArray(length, callback) {\n var result = [];\n\n for (var idx = 0; idx < length; idx++) {\n result.push(callback(idx));\n }\n\n return result;\n}\n\nfunction defaultItemId(item) {\n return item.id;\n}\n\nvar ExcelExporter = function ExcelExporter(options) {\n options.columns = this._trimColumns(options.columns || []);\n\n this.allColumns = map(this._leafColumns(options.columns || []), this._prepareColumn);\n\n this.columns = this._visibleColumns(this.allColumns);\n\n this.options = options;\n this.data = options.data || [];\n this.aggregates = options.aggregates || {};\n this.groups = [].concat(options.groups || []);\n this.hasGroups = this.groups.length > 0;\n this.hierarchy = options.hierarchy;\n this.hasGroupHeaderColumn = this.columns.some(function (column) { return column.groupHeaderColumnTemplate; });\n this.collapsible = this.options.collapsible;\n};\n\nExcelExporter.prototype.workbook = function workbook () {\n var workbook = {\n sheets: [ {\n columns: this._columns(),\n rows: this.hierarchy ? this._hierarchyRows() : this._rows(),\n freezePane: this._freezePane(),\n filter: this._filter()\n } ]\n };\n\n return workbook;\n};\n\nExcelExporter.prototype._trimColumns = function _trimColumns (columns) {\n var this$1 = this;\n\n return columns.filter(function (column) {\n var result = Boolean(column.field);\n\n if (!result && column.columns) {\n result = this$1._trimColumns(column.columns).length > 0;\n }\n\n return result;\n });\n};\n\nExcelExporter.prototype._leafColumns = function _leafColumns (columns) {\n var this$1 = this;\n\n var result = [];\n\n for (var idx = 0; idx < columns.length; idx++) {\n if (!columns[idx].columns) {\n result.push(columns[idx]);\n } else {\n result = result.concat(this$1._leafColumns(columns[idx].columns));\n }\n }\n\n return result;\n};\n\nExcelExporter.prototype._prepareColumn = function _prepareColumn (column) {\n if (!column.field) {\n return null;\n }\n\n var value = function(dataItem) {\n return getter(column.field, true)(dataItem);\n };\n\n var values = null;\n\n if (column.values) {\n values = {};\n\n column.values.forEach(function(item) {\n values[item.value] = item.text;\n });\n\n value = function(dataItem) {\n return values[getter(column.field, true)(dataItem)];\n };\n }\n\n return Object.assign({}, column, {\n value: value,\n values: values,\n groupHeaderTemplate: column.groupHeaderTemplate ? TemplateService.compile(column.groupHeaderTemplate) : defaultGroupHeaderTemplate,\n groupHeaderColumnTemplate: column.groupHeaderColumnTemplate ? TemplateService.compile(column.groupHeaderColumnTemplate) : null,\n groupFooterTemplate: column.groupFooterTemplate ? TemplateService.compile(column.groupFooterTemplate) : null,\n footerTemplate: column.footerTemplate ? TemplateService.compile(column.footerTemplate) : null\n });\n};\n\nExcelExporter.prototype._filter = function _filter () {\n if (!this.options.filterable) {\n return null;\n }\n\n var depth = this._depth();\n\n return {\n from: depth,\n to: depth + this.columns.length - 1\n };\n};\n\nExcelExporter.prototype._createPaddingCells = function _createPaddingCells (length) {\n var this$1 = this;\n\n return createArray(length, function () { return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, this$1.options.paddingCellOptions); });\n};\n\nExcelExporter.prototype._dataRow = function _dataRow (dataItem, level, depth) {\n var this$1 = this;\n\n var cells = this._createPaddingCells(level);\n\n // grouped\n if (this.hasGroups && depth && dataItem.items) {\n cells = cells.concat(this._groupHeaderCells(dataItem, level, depth));\n var rows = this._dataRows(dataItem.items, level + 1);\n\n rows.unshift({\n type: \"group-header\",\n cells: cells,\n level: this.collapsible ? level : null\n });\n\n return rows.concat(this._footer(dataItem, level));\n }\n\n var dataCells = [];\n\n for (var cellIdx = 0; cellIdx < this.columns.length; cellIdx++) {\n dataCells[cellIdx] = this$1._cell(dataItem, this$1.columns[cellIdx]);\n }\n\n if (this.hierarchy) {\n dataCells[0].colSpan = depth - level + 1;\n }\n\n return [ {\n type: \"data\",\n cells: cells.concat(dataCells),\n level: this.collapsible ? level : null\n } ];\n};\n\nExcelExporter.prototype._groupHeaderCells = function _groupHeaderCells (dataItem, level, depth) {\n var cells = [];\n\n var column = this.allColumns.filter(function(column) {\n return column.field === dataItem.field;\n })[0] || {};\n\n var title = column && column.title ? column.title : dataItem.field;\n var template = column ? column.groupHeaderTemplate || column.groupHeaderColumnTemplate : null;\n var group = Object.assign({\n title: title,\n field: dataItem.field,\n value: column && column.values ? column.values[dataItem.value] : dataItem.value,\n aggregates: dataItem.aggregates,\n items: dataItem.items\n }, dataItem.aggregates[dataItem.field]);\n\n var value = template ? template(group) : (title + \": \" + (dataItem.value));\n\n cells.push(Object.assign({\n value: value,\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: (this.hasGroupHeaderColumn ? 1 : this.columns.length) + depth - level\n }, column.groupHeaderCellOptions));\n\n if (this.hasGroupHeaderColumn) {\n this.columns.forEach(function(column, index) {\n if (index > 0) {\n cells.push(Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.groupHeaderColumnTemplate ?\n column.groupHeaderColumnTemplate(Object.assign({ group: group }, group, dataItem.aggregates[column.field])) :\n undefined\n }, column.groupHeaderCellOptions));\n }\n });\n }\n\n return cells;\n};\n\nExcelExporter.prototype._dataRows = function _dataRows (dataItems, level) {\n var this$1 = this;\n\n var depth = this._depth();\n var rows = [];\n\n for (var idx = 0; idx < dataItems.length; idx++) {\n rows.push.apply(rows, this$1._dataRow(dataItems[idx], level, depth));\n }\n\n return rows;\n};\n\nExcelExporter.prototype._hierarchyRows = function _hierarchyRows () {\n var this$1 = this;\n\n var depth = this._depth();\n var data = this.data;\n var itemLevel = this.hierarchy.itemLevel;\n var itemId = this.hierarchy.itemId || defaultItemId;\n var hasFooter = this._hasFooterTemplate();\n var rows = [];\n var parents = [];\n var previousLevel = 0;\n var previousItemId;\n\n if (!hasFooter) {\n this.collapsible = false;\n }\n\n for (var idx = 0; idx < data.length; idx++) {\n var item = data[idx];\n var level = itemLevel(item, idx);\n\n if (hasFooter) {\n if (level > previousLevel) {\n parents.push({ id: previousItemId, level: previousLevel });\n } else if (level < previousLevel) {\n rows.push.apply(rows, this$1._hierarchyFooterRows(parents, level, depth));\n }\n\n previousLevel = level;\n previousItemId = itemId(item, idx);\n }\n\n rows.push.apply(rows, this$1._dataRow(item, level + 1, depth));\n }\n\n if (hasFooter) {\n rows.push.apply(rows, this._hierarchyFooterRows(parents, 0, depth));\n\n var rootAggregate = data.length ? this.aggregates[data[0].parentId] : {};\n rows.push(this._hierarchyFooter(rootAggregate, 0, depth));\n }\n\n this._prependHeaderRows(rows);\n\n return rows;\n};\n\nExcelExporter.prototype._hierarchyFooterRows = function _hierarchyFooterRows (parents, currentLevel, depth) {\n var this$1 = this;\n\n var rows = [];\n while (parents.length && parents[parents.length - 1].level >= currentLevel) {\n var parent = parents.pop();\n rows.push(this$1._hierarchyFooter(this$1.aggregates[parent.id], parent.level + 1, depth));\n }\n\n return rows;\n};\n\nExcelExporter.prototype._hasFooterTemplate = function _hasFooterTemplate () {\n var columns = this.columns;\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].footerTemplate) {\n return true;\n }\n }\n};\n\nExcelExporter.prototype._hierarchyFooter = function _hierarchyFooter (aggregates, level, depth) {\n var cells = this.columns.map(function(column, index) {\n var colSpan = index ? 1 : depth - level + 1;\n if (column.footerTemplate) {\n var fieldAggregates = (aggregates || {})[column.field];\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: colSpan,\n value: column.footerTemplate(Object.assign({ aggregates: aggregates }, fieldAggregates))\n }, column.footerCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: colSpan\n }, column.footerCellOptions);\n });\n\n return {\n type: \"footer\",\n cells: this._createPaddingCells(level).concat(cells),\n level: this.collapsible ? level : null\n };\n};\n\nExcelExporter.prototype._footer = function _footer (dataItem, level) {\n var rows = [];\n var footer = this.columns.some(function (column) { return column.groupFooterTemplate; });\n\n var templateData, group;\n if (footer) {\n group = {\n group: { items: dataItem.items,\n field: dataItem.field,\n value: dataItem.value }\n };\n templateData = {};\n Object.keys(dataItem.aggregates).forEach(function (key) {\n templateData[key] = Object.assign({}, dataItem.aggregates[key], group);\n });\n }\n\n var cells = this.columns.map(function (column) {\n if (column.groupFooterTemplate) {\n var data = Object.assign({}, templateData, dataItem.aggregates[column.field], group);\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.groupFooterTemplate(data)\n }, column.groupFooterCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, column.groupFooterCellOptions);\n });\n\n if (footer) {\n rows.push({\n type: \"group-footer\",\n cells: this._createPaddingCells(this.groups.length).concat(cells),\n level: this.collapsible ? level : null\n });\n }\n\n return rows;\n};\n\nExcelExporter.prototype._isColumnVisible = function _isColumnVisible (column) {\n return this._visibleColumns([ column ]).length > 0 && (column.field || column.columns);\n};\n\nExcelExporter.prototype._visibleColumns = function _visibleColumns (columns) {\n var this$1 = this;\n\n return columns.filter(function (column) {\n var exportable = column.exportable;\n if (typeof exportable === 'object') {\n exportable = column.exportable.excel;\n }\n\n var visibleInExport = !column.hidden && exportable !== false;\n var visibleInExportOnly = column.hidden && exportable === true;\n var visible = visibleInExport || visibleInExportOnly;\n if (visible && column.columns) {\n visible = this$1._visibleColumns(column.columns).length > 0;\n }\n return visible;\n });\n};\n\nExcelExporter.prototype._headerRow = function _headerRow (row, groups) {\n var this$1 = this;\n\n var headers = row.cells.map(function(cell) {\n return Object.assign(cell, {\n colSpan: cell.colSpan > 1 ? cell.colSpan : 1,\n rowSpan: row.rowSpan > 1 && !cell.colSpan ? row.rowSpan : 1\n });\n });\n\n if (this.hierarchy && headers[0].firstCell) {\n headers[0].colSpan += this._depth();\n }\n\n return {\n type: \"header\",\n cells: createArray(groups.length, function () { return Object.assign({\n background: \"#7a7a7a\",\n color: \"#fff\"\n }, this$1.options.headerPaddingCellOptions); }).concat(headers)\n };\n};\n\nExcelExporter.prototype._prependHeaderRows = function _prependHeaderRows (rows) {\n var this$1 = this;\n\n var groups = this.groups;\n\n var headerRows = [ { rowSpan: 1, cells: [], index: 0 } ];\n\n this._prepareHeaderRows(headerRows, this.options.columns);\n\n for (var idx = headerRows.length - 1; idx >= 0; idx--) {\n rows.unshift(this$1._headerRow(headerRows[idx], groups));\n }\n};\n\nExcelExporter.prototype._prepareHeaderRows = function _prepareHeaderRows (rows, columns, parentCell, parentRow) {\n var this$1 = this;\n\n var row = parentRow || rows[rows.length - 1];\n var childRow = rows[row.index + 1];\n var totalColSpan = 0;\n\n for (var idx = 0; idx < columns.length; idx++) {\n var column = columns[idx];\n if (this$1._isColumnVisible(column)) {\n\n var cell = Object.assign({\n background: \"#7a7a7a\",\n color: \"#fff\",\n value: column.title || column.field,\n colSpan: 0,\n firstCell: idx === 0 && (!parentCell || parentCell.firstCell)\n }, column.headerCellOptions);\n row.cells.push(cell);\n\n if (column.columns && column.columns.length) {\n if (!childRow) {\n childRow = { rowSpan: 0, cells: [], index: rows.length };\n rows.push(childRow);\n }\n cell.colSpan = this$1._trimColumns(this$1._visibleColumns(column.columns)).length;\n this$1._prepareHeaderRows(rows, column.columns, cell, childRow);\n totalColSpan += cell.colSpan - 1;\n row.rowSpan = rows.length - row.index;\n }\n }\n }\n\n if (parentCell) {\n parentCell.colSpan += totalColSpan;\n }\n};\n\nExcelExporter.prototype._rows = function _rows () {\n var this$1 = this;\n\n var rows = this._dataRows(this.data, 0);\n\n if (this.columns.length) {\n this._prependHeaderRows(rows);\n var footer = false;\n\n var cells = this.columns.map(function (column) {\n if (column.footerTemplate) {\n footer = true;\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.footerTemplate(Object.assign({}, this$1.aggregates, this$1.aggregates[column.field]))\n }, column.footerCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, column.footerCellOptions);\n });\n\n if (footer) {\n rows.push({\n type: \"footer\",\n cells: this._createPaddingCells(this.groups.length).concat(cells)\n });\n }\n }\n\n return rows;\n};\n\nExcelExporter.prototype._headerDepth = function _headerDepth (columns) {\n var this$1 = this;\n\n var result = 1;\n var max = 0;\n\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].columns) {\n var temp = this$1._headerDepth(columns[idx].columns);\n if (temp > max) {\n max = temp;\n }\n }\n }\n return result + max;\n};\n\nExcelExporter.prototype._freezePane = function _freezePane () {\n var columns = this._visibleColumns(this.options.columns || []);\n\n var colSplit = this._visibleColumns(this._trimColumns(this._leafColumns(columns.filter(function(column) {\n return column.locked;\n })))).length;\n\n return {\n rowSplit: this._headerDepth(columns),\n colSplit: colSplit ? colSplit + this.groups.length : 0\n };\n};\n\nExcelExporter.prototype._cell = function _cell (dataItem, column) {\n return Object.assign({\n value: column.value(dataItem)\n }, column.cellOptions);\n};\n\nExcelExporter.prototype._depth = function _depth () {\n var depth = 0;\n\n if (this.hierarchy) {\n depth = this.hierarchy.depth;\n } else {\n depth = this.groups.length;\n }\n\n return depth;\n};\n\nExcelExporter.prototype._columns = function _columns () {\n var depth = this._depth();\n var columns = createArray(depth, function () { return ({ width: 20 }); });\n\n return columns.concat(this.columns.map(function(column) {\n return {\n width: parseInt(column.width, 10),\n autoWidth: column.width ? false : true\n };\n }));\n};\n\nexport default ExcelExporter;\n","/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\nvar Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n/* Return codes for the compression/decompression functions. Negative values\n* are errors, positive values are used for special but normal events.\n*/\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\nvar Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//export var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//export var Z_VERSION_ERROR = -6;\n\n/* compression levels */\nvar Z_NO_COMPRESSION = 0;\nvar Z_BEST_SPEED = 1;\nvar Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//export var Z_ASCII = 1; // = Z_TEXT (deprecated)\nvar Z_UNKNOWN = 2;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n//export var Z_NULL = null // Use -1 or null inline; depending on var type\n\n/* eslint-disable */\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n}\n\n\n// reduce buffer size, avoiding mem copy\nfunction shrinkBuf(buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n}\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n },\n Buf8: function(size) {\n return new Uint8Array(size);\n },\n Buf16: function(size) {\n return new Uint16Array(size);\n },\n Buf32: function(size) {\n return new Int32Array(size);\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n },\n Buf8: function(size) {\n return new Array(size);\n },\n Buf16: function(size) {\n return new Array(size);\n },\n Buf32: function(size) {\n return new Array(size);\n }\n};\n\nvar typedOK = function () {\n var supported =\n (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n typedOK = function () { return supported; };\n return supported;\n};\n\nvar arraySet = function (dest, src, src_offs, len, dest_offs) {\n arraySet = typedOK() ?\n fnTyped.arraySet : fnUntyped.arraySet;\n\n return arraySet(dest, src, src_offs, len, dest_offs);\n};\n\nvar flattenChunks = function (chunks) {\n flattenChunks = typedOK() ?\n fnTyped.flattenChunks : fnUntyped.flattenChunks;\n\n return flattenChunks(chunks);\n};\n\nvar Buf8 = function (size) {\n Buf8 = typedOK() ? fnTyped.Buf8 : fnUntyped.Buf8;\n return Buf8(size);\n};\n\nvar Buf16 = function (size) {\n Buf16 = typedOK() ? fnTyped.Buf16 : fnUntyped.Buf16;\n return Buf16(size);\n};\n\nvar Buf32 = function (size) {\n Buf32 = typedOK() ? fnTyped.Buf32 : fnUntyped.Buf32;\n return Buf32(size);\n};\n\n/* eslint-disable */\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\nvar strApplyOK = function() {\n var result = true;\n try {\n String.fromCharCode.apply(null, [ 0 ]);\n } catch (_) {\n result = false;\n }\n\n strApplyOK = function () { return result; };\n return result;\n};\n\nvar strApplyUintOK = function() {\n var result = true;\n try {\n String.fromCharCode.apply(null, new Uint8Array(1));\n } catch (_) {\n result = false;\n }\n\n strApplyUintOK = function () { return result; };\n return result;\n};\n\nvar utf8len = function(c) {\n // Table with utf8 lengths (calculated by first byte of sequence)\n // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n // because max possible codepoint is 0x10ffff\n var table = Buf8(256);\n for (var q = 0; q < 256; q++) {\n table[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n }\n table[254] = table[254] = 1; // Invalid sequence start\n\n utf8len = function (arg) { return table[arg]; };\n return table[c];\n};\n\n// convert string to array (typed, when possible)\nfunction string2buf(str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n}\n\n// Helper (used in 2 places)\nfunction _buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && strApplyUintOK()) || (!buf.subarray && strApplyOK())) {\n return String.fromCharCode.apply(null, shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nfunction buf2binstring(buf) {\n return _buf2binstring(buf, buf.length);\n}\n\n\n// Convert binary string (typed, when possible)\nfunction binstring2buf(str) {\n var buf = new Uint8Array(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n}\n\n\n// convert array to string\nfunction buf2string(buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = utf8len(c);\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return _buf2binstring(utf16buf, out);\n}\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nfunction utf8border(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n}\n\n/* eslint-disable */\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n/* eslint-disable */\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\nvar crcTable = function() {\n var table = makeTable();\n crcTable = function () { return table; };\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable(),\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nfunction inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n}\n\n/* eslint-disable */\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nfunction inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n}\n\n/* eslint-disable */\n\nvar CODES$1 = 0;\nvar LENS$1 = 1;\nvar DISTS$1 = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH$1 = 4;\nvar Z_BLOCK$1 = 5;\nvar Z_TREES$1 = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK$1 = 0;\nvar Z_STREAM_END$1 = 1;\nvar Z_NEED_DICT$1 = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR$1 = -2;\nvar Z_DATA_ERROR$1 = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR$1 = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED$1 = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD$1 = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS$1 = 852;\nvar ENOUGH_DISTS$1 = 592;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = Buf16(320); /* temporary storage for code lengths */\n this.work = Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = Buf32(ENOUGH_LENS$1);\n state.distcode = state.distdyn = Buf32(ENOUGH_DISTS$1);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = Buf32(512);\n distfix = Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS$1, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS$1, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE$1) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD$1;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD$1;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE$1;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD$1;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE$1;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE$1;\n /* falls through */\n case TYPE$1:\n if (flush === Z_BLOCK$1 || flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES$1) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD$1;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD$1;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE$1;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES$1, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD$1) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD$1;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS$1, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD$1;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS$1, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE$1) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE$1;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD$1:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD$1 &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE$1 ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR$1;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR$1;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n}\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar msg = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\n/* eslint-disable */\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nvar Inflate = function Inflate(options) {\n if (!(this instanceof Inflate)) { return new Inflate(options); }\n\n this.options = assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended= false;// used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status= inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n};\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);// push last chunk\n * ```\n **/\nInflate.prototype.push = function push (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate(strm, Z_NO_FLUSH); /* no bad return value */\n\n if (status === Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === Z_BUF_ERROR && allowBufError === true) {\n status = Z_OK;\n allowBufError = false;\n }\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n if (status === Z_STREAM_END) {\n _mode = Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function onData (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function onEnd (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\nvar ungzip = inflate$1;\n\n/* eslint-disable */\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree;\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree;\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code;\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code;\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length;\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist;\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n // \"inconsistent bit counts\");\n //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n for (n = 0; n <= max_code; n++) {\n var len = tree[n * 2 + 1]/*.Len*/;\n if (len === 0) { continue; }\n /* Now reverse the bits */\n tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n // n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n }\n}\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nfunction tr_static_init() {\n var n; /* iterates over tree elements */\n var bits; /* bit counter */\n var length; /* length value */\n var code; /* code value */\n var dist; /* distance index */\n var bl_count = new Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n static_ltree = new Array((L_CODES + 2) * 2);\n zero(static_ltree);\n\n static_dtree = new Array(D_CODES * 2);\n zero(static_dtree);\n\n _dist_code = new Array(DIST_CODE_LEN);\n zero(_dist_code);\n\n _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\n zero(_length_code);\n\n base_length = new Array(LENGTH_CODES);\n zero(base_length);\n\n base_dist = new Array(D_CODES);\n zero(base_dist);\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s) {\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block, or NULL if too old */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc) {\n // deflate_state *s;\n // unsigned dist; /* distance of matched string */\n // unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\n/* eslint-disable */\n\nvar MAX_MEM_LEVEL = 9;\n\n\nvar LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES$1 = 30;\n/* number of distance codes */\nvar BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\nvar MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH$1 = 3;\nvar MAX_MATCH$1 = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH$1 + MIN_MATCH$1 + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero$1(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH$1;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH$1 - (strend - scan);\n scan = strend - MAX_MATCH$1;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH$1) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH$1) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH$1) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH$1) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH$1 - 1)) ? s.strstart : MIN_MATCH$1 - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH$1 - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH$1 && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH$1 - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH$1 && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH$1;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH$1);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH$1 - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH$1 - 1 ? s.strstart : MIN_MATCH$1 - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH$1) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH$1 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH$1 && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH$1;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH$1 - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH$1) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configurationTable = function() {\n var table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n \n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n ];\n\n configurationTable = function () { return table; };\n return table;\n};\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n\n var table = configurationTable();\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = table[s.level].max_lazy;\n s.good_match = table[s.level].good_length;\n s.nice_match = table[s.level].nice_length;\n s.max_chain_length = table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = Buf16(HEAP_SIZE$1 * 2);\n this.dyn_dtree = Buf16((2 * D_CODES$1 + 1) * 2);\n this.bl_tree = Buf16((2 * BL_CODES$1 + 1) * 2);\n zero$1(this.dyn_ltree);\n zero$1(this.dyn_dtree);\n zero$1(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = Buf16(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = Buf16(2 * L_CODES$1 + 1); /* heap used to build the Huffman trees */\n zero$1(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = Buf16(2 * L_CODES$1 + 1); //uch depth[2*L_CODES+1];\n zero$1(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n _tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH$1 - 1) / MIN_MATCH$1);\n\n s.window = Buf8(s.w_size * 2);\n s.head = Buf16(s.hash_size);\n s.prev = Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configurationTable()[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero$1(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = Buf8(s.w_size);\n arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH$1) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH$1 - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH$1 - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n/* eslint-disable */\n\nvar toString$1 = Object.prototype.toString;\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nvar Deflate = function Deflate(options) {\n this.options = assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended= false;// used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n};\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);// push last chunk\n * ```\n **/\nDeflate.prototype.push = function push (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(buf2binstring(shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function onData (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function onEnd (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\nexport { Deflate, Inflate, Z_BEST_COMPRESSION, Z_BEST_SPEED, Z_BINARY, Z_BLOCK, Z_BUF_ERROR, Z_DATA_ERROR, Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY, Z_DEFLATED, Z_ERRNO, Z_FILTERED, Z_FINISH, Z_FIXED, Z_FULL_FLUSH, Z_HUFFMAN_ONLY, Z_NEED_DICT, Z_NO_COMPRESSION, Z_NO_FLUSH, Z_OK, Z_PARTIAL_FLUSH, Z_RLE, Z_STREAM_END, Z_STREAM_ERROR, Z_SYNC_FLUSH, Z_TEXT, Z_TREES, Z_UNKNOWN, deflate$1 as deflate, deflateRaw, gzip, inflate$1 as inflate, inflateRaw, ungzip };\n","import { Deflate, Inflate } from '@progress/pako-esm';\n\n/**\n * Let the user use/change some implementations.\n */\nvar external = {\n Promise: Promise\n};\n\nvar support = {\n base64: true,\n array: true,\n string: true,\n nodebuffer: false,\n nodestream: false,\n\n get arraybuffer() {\n return typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n },\n\n // Returns true if JSZip can read/generate Uint8Array, false otherwise.\n get uint8array() {\n return typeof Uint8Array !== \"undefined\";\n },\n\n get blob() {\n return blob();\n }\n};\n\nvar blob = function() {\n var supported;\n\n if (typeof ArrayBuffer === \"undefined\") {\n supported = false;\n } else {\n var buffer = new ArrayBuffer(0);\n try {\n supported = new Blob([ buffer ], {\n type: \"application/zip\"\n }).size === 0;\n } catch (e) {\n supported = false;\n }\n }\n\n blob = function () { return supported; };\n return supported;\n};\n\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n// public method for encoding\nvar encode = function(input) {\n var output = [];\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0, len = input.length, remainingBytes = len;\n\n var isArray = typeof input !== \"string\";\n while (i < input.length) {\n remainingBytes = len - i;\n\n if (!isArray) {\n chr1 = input.charCodeAt(i++);\n chr2 = i < len ? input.charCodeAt(i++) : 0;\n chr3 = i < len ? input.charCodeAt(i++) : 0;\n } else {\n chr1 = input[i++];\n chr2 = i < len ? input[i++] : 0;\n chr3 = i < len ? input[i++] : 0;\n }\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n }\n\n return output.join(\"\");\n};\n\n// public method for decoding\nvar decode = function(input) {\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0, resultIndex = 0;\n\n var dataUrlPrefix = \"data:\";\n\n if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n // This is a common error: people give a data url\n // (data:image/png;base64,iVBOR...) with a {base64: true} and\n // wonders why things don't work.\n // We can detect that the string input looks like a data url but we\n // *can't* be sure it is one: removing everything up to the comma would\n // be too dangerous.\n throw new Error(\"Invalid base64 input, it looks like a data url.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n var totalLength = input.length * 3 / 4;\n if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 letiant (base64url for example)\n throw new Error(\"Invalid base64 input, bad content length.\");\n }\n var output;\n if (support.uint8array) {\n output = new Uint8Array(totalLength|0);\n } else {\n output = new Array(totalLength|0);\n }\n\n while (i < input.length) {\n\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output[resultIndex++] = chr1;\n\n if (enc3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (enc4 !== 64) {\n output[resultIndex++] = chr3;\n }\n\n }\n\n return output;\n};\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n var result = null;\n if (support.uint8array) {\n result = new Uint8Array(str.length);\n } else {\n result = new Array(str.length);\n }\n return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nvar newBlob = function(part, type) {\n checkSupport(\"blob\");\n\n // Blob constructor\n return new Blob([part], {\n type: type\n });\n};\n\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * Transform an array of int into a string, chunk by chunk.\n * See the performances notes on arrayLikeToString.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @param {String} type the type of the array.\n * @param {Integer} chunk the chunk size.\n * @return {String} the resulting string.\n * @throws Error if the chunk is too big for the stack.\n */\nfunction stringifyByChunk(array, type, chunk) {\n var result = [], k = 0, len = array.length;\n // shortcut\n if (len <= chunk) {\n return String.fromCharCode.apply(null, array);\n }\n while (k < len) {\n if (type === \"array\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n return result.join(\"\");\n}\n\n/**\n * Call String.fromCharCode on every item in the array.\n * This is the naive implementation, which generate A LOT of intermediate string.\n * This should be used when everything else fail.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction stringifyByChar(array) {\n var resultStr = \"\";\n for(var i = 0; i < array.length; i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n}\n\n/**\n * true if the browser accepts to use String.fromCharCode on Uint8Array\n */\nvar fromCharCodeSupportsTypedArrays = function () {\n var supported;\n try {\n supported = support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n } catch (e) {\n supported = false;\n }\n\n fromCharCodeSupportsTypedArrays = function () { return supported; };\n return supported;\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n // TODO : we now have workers that split the work. Do we still need that ?\n var chunk = 65536,\n type = getTypeOf(array),\n canUseApply = true;\n if (type === \"uint8array\") {\n canUseApply = fromCharCodeSupportsTypedArrays();\n }\n\n if (canUseApply) {\n while (chunk > 1) {\n try {\n return stringifyByChunk(array, type, chunk);\n } catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n }\n\n // no apply or chunk error : slow and painful algorithm\n // default browser on android 4.*\n return stringifyByChar(array);\n}\n\nvar applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {\n // string to ?\n \"string\": {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n }\n },\n\n // array to ?\n \"array\": {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n }\n },\n\n // arraybuffer to ?\n \"arraybuffer\": {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n }\n },\n\n // uint8array to ?\n \"uint8array\": {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return input.buffer;\n },\n \"uint8array\": identity\n }\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nvar transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n checkSupport(outputType);\n var inputType = getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Resolve all relative path components, \".\" and \"..\", in a path. If these relative components\n * traverse above the root then the resulting path will only contain the final path component.\n *\n * All empty components, e.g. \"//\", are removed.\n * @param {string} path A path with / or \\ separators\n * @returns {string} The path with all relative path components resolved.\n */\nvar resolve = function(path) {\n var parts = path.split(\"/\");\n var result = [];\n for (var index = 0; index < parts.length; index++) {\n var part = parts[index];\n // Allow the first and last component to be empty for trailing slashes.\n if (part === \".\" || (part === \"\" && index !== 0 && index !== parts.length - 1)) {\n continue;\n } else if (part === \"..\") {\n result.pop();\n } else {\n result.push(part);\n }\n }\n return result.join(\"/\");\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nvar getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nvar checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this platform\");\n }\n};\n\nvar MAX_VALUE_16BITS = 65535;\nvar MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nvar pretty = function(str) {\n var res = '',\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nvar delay = function(callback, args, self) {\n setTimeout(function() {\n callback.apply(self || null, args || []);\n }, 0);\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nvar extend = function() {\n var arguments$1 = arguments;\n\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (Object.hasOwnProperty.call(arguments$1[i], attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments$1[i][attr];\n }\n }\n }\n return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nvar prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n // if inputData is already a promise, this flatten it.\n var promise = external.Promise.resolve(inputData).then(function(data) {\n\n\n var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n if (isBlob && typeof FileReader !== \"undefined\") {\n return new external.Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function(e) {\n resolve(e.target.result);\n };\n reader.onerror = function(e) {\n reject(e.target.error);\n };\n reader.readAsArrayBuffer(data);\n });\n } else {\n return data;\n }\n });\n\n return promise.then(function(data) {\n var dataType = getTypeOf(data);\n\n if (!dataType) {\n return external.Promise.reject(\n new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n );\n }\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = transformTo(\"uint8array\", data);\n } else if (dataType === \"string\") {\n if (isBase64) {\n data = decode(data);\n }\n else if (isBinary) {\n // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n if (isOptimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = string2binary(data);\n }\n }\n }\n return data;\n });\n};\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nvar GenericWorker = function GenericWorker(name) {\n // the name of the worker\n this.name = name || \"default\";\n // an object containing metadata about the workers chain\n this.streamInfo = {};\n // an error which happened when the worker was paused\n this.generatedError = null;\n // an object containing metadata to be merged by this worker into the general metadata\n this.extraStreamInfo = {};\n // true if the stream is paused (and should not do anything), false otherwise\n this.isPaused = true;\n // true if the stream is finished (and should not do anything), false otherwise\n this.isFinished = false;\n // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n this.isLocked = false;\n // the event listeners\n this._listeners = {\n 'data':[],\n 'end':[],\n 'error':[]\n };\n // the previous worker, if any\n this.previous = null;\n};\n\n/**\n * Push a chunk to the next workers.\n * @param {Object} chunk the chunk to push\n */\nGenericWorker.prototype.push = function push (chunk) {\n this.emit(\"data\", chunk);\n};\n\n/**\n * End the stream.\n * @return {Boolean} true if this call ended the worker, false otherwise.\n */\nGenericWorker.prototype.end = function end () {\n if (this.isFinished) {\n return false;\n }\n\n this.flush();\n try {\n this.emit(\"end\");\n this.cleanUp();\n this.isFinished = true;\n } catch (e) {\n this.emit(\"error\", e);\n }\n return true;\n};\n\n/**\n * End the stream with an error.\n * @param {Error} e the error which caused the premature end.\n * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n */\nGenericWorker.prototype.error = function error (e) {\n if (this.isFinished) {\n return false;\n }\n\n if(this.isPaused) {\n this.generatedError = e;\n } else {\n this.isFinished = true;\n\n this.emit(\"error\", e);\n\n // in the workers chain exploded in the middle of the chain,\n // the error event will go downward but we also need to notify\n // workers upward that there has been an error.\n if(this.previous) {\n this.previous.error(e);\n }\n\n this.cleanUp();\n }\n return true;\n};\n\n/**\n * Add a callback on an event.\n * @param {String} name the name of the event (data, end, error)\n * @param {Function} listener the function to call when the event is triggered\n * @return {GenericWorker} the current object for chainability\n */\nGenericWorker.prototype.on = function on (name, listener) {\n this._listeners[name].push(listener);\n return this;\n};\n\n/**\n * Clean any references when a worker is ending.\n */\nGenericWorker.prototype.cleanUp = function cleanUp () {\n this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n this._listeners = [];\n};\n\n/**\n * Trigger an event. This will call registered callback with the provided arg.\n * @param {String} name the name of the event (data, end, error)\n * @param {Object} arg the argument to call the callback with.\n */\nGenericWorker.prototype.emit = function emit (name, arg) {\n if (this._listeners[name]) {\n for(var i = 0; i < this._listeners[name].length; i++) {\n this._listeners[name][i].call(this, arg);\n }\n }\n};\n\n/**\n * Chain a worker with an other.\n * @param {Worker} next the worker receiving events from the current one.\n * @return {worker} the next worker for chainability\n */\nGenericWorker.prototype.pipe = function pipe (next) {\n return next.registerPrevious(this);\n};\n\n/**\n * Same as `pipe` in the other direction.\n * Using an API with `pipe(next)` is very easy.\n * Implementing the API with the point of view of the next one registering\n * a source is easier, see the ZipFileWorker.\n * @param {Worker} previous the previous worker, sending events to this one\n * @return {Worker} the current worker for chainability\n */\nGenericWorker.prototype.registerPrevious = function registerPrevious (previous) {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n\n // sharing the streamInfo...\n this.streamInfo = previous.streamInfo;\n // ... and adding our own bits\n this.mergeStreamInfo();\n this.previous = previous;\n var self = this;\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.end();\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n};\n\n/**\n * Pause the stream so it doesn't send events anymore.\n * @return {Boolean} true if this call paused the worker, false otherwise.\n */\nGenericWorker.prototype.pause = function pause () {\n if(this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = true;\n\n if(this.previous) {\n this.previous.pause();\n }\n return true;\n};\n\n/**\n * Resume a paused stream.\n * @return {Boolean} true if this call resumed the worker, false otherwise.\n */\nGenericWorker.prototype.resume = function resume () {\n if(!this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = false;\n\n // if true, the worker tried to resume but failed\n var withError = false;\n if(this.generatedError) {\n this.error(this.generatedError);\n withError = true;\n }\n if(this.previous) {\n this.previous.resume();\n }\n\n return !withError;\n};\n\n/**\n * Flush any remaining bytes as the stream is ending.\n */\nGenericWorker.prototype.flush = function flush () {};\n\n/**\n * Process a chunk. This is usually the method overridden.\n * @param {Object} chunk the chunk to process.\n */\nGenericWorker.prototype.processChunk = function processChunk (chunk) {\n this.push(chunk);\n};\n\n/**\n * Add a key/value to be added in the workers chain streamInfo once activated.\n * @param {String} key the key to use\n * @param {Object} value the associated value\n * @return {Worker} the current worker for chainability\n */\nGenericWorker.prototype.withStreamInfo = function withStreamInfo (key, value) {\n this.extraStreamInfo[key] = value;\n this.mergeStreamInfo();\n return this;\n};\n\n/**\n * Merge this worker's streamInfo into the chain's streamInfo.\n */\nGenericWorker.prototype.mergeStreamInfo = function mergeStreamInfo () {\n for(var key in this.extraStreamInfo) {\n if (!this.extraStreamInfo.hasOwnProperty(key)) {\n continue;\n }\n this.streamInfo[key] = this.extraStreamInfo[key];\n }\n};\n\n/**\n * Lock the stream to prevent further updates on the workers chain.\n * After calling this method, all calls to pipe will fail.\n */\nGenericWorker.prototype.lock = function lock () {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n this.isLocked = true;\n if (this.previous) {\n this.previous.lock();\n }\n};\n\n/**\n *\n * Pretty print the workers chain.\n */\nGenericWorker.prototype.toString = function toString () {\n var me = \"Worker \" + this.name;\n if (this.previous) {\n return this.previous + \" -> \" + me;\n } else {\n return me;\n }\n};\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Returns the utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar utf8len = function(c) {\n var _utf8len = new Array(256);\n for (var i = 0; i < 256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n }\n _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n // Memoize table after first call\n utf8len = function(c) {\n return _utf8len[c];\n };\n\n return _utf8len[c];\n};\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i<len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = utf8len(c);\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nvar utf8encode = function utf8encode(str) {\n return string2buf(str);\n};\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nvar utf8decode = function utf8decode(buf) {\n buf = transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nvar Utf8DecodeWorker = /*@__PURE__*/(function (GenericWorker) {\n function Utf8DecodeWorker() {\n GenericWorker.call(this, \"utf-8 decode\");\n\n // the last bytes if a chunk didn't end with a complete codepoint.\n this.leftOver = null;\n }\n\n Utf8DecodeWorker.__proto__ = GenericWorker;\n Utf8DecodeWorker.prototype = Object.create( GenericWorker.prototype );\n Utf8DecodeWorker.prototype.constructor = Utf8DecodeWorker;\n\n /**\n * @see GenericWorker.processChunk\n */\n Utf8DecodeWorker.prototype.processChunk = function processChunk (chunk) {\n var data = transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n // 1st step, re-use what's left of the previous chunk\n if (this.leftOver && this.leftOver.length) {\n if(support.uint8array) {\n var previousData = data;\n data = new Uint8Array(previousData.length + this.leftOver.length);\n data.set(this.leftOver, 0);\n data.set(previousData, this.leftOver.length);\n } else {\n data = this.leftOver.concat(data);\n }\n this.leftOver = null;\n }\n\n var nextBoundary = utf8border(data);\n var usableData = data;\n if (nextBoundary !== data.length) {\n if (support.uint8array) {\n usableData = data.subarray(0, nextBoundary);\n this.leftOver = data.subarray(nextBoundary, data.length);\n } else {\n usableData = data.slice(0, nextBoundary);\n this.leftOver = data.slice(nextBoundary, data.length);\n }\n }\n\n this.push({\n data : utf8decode(usableData),\n meta : chunk.meta\n });\n };\n\n /**\n * @see GenericWorker.flush\n */\n Utf8DecodeWorker.prototype.flush = function flush () {\n if (this.leftOver && this.leftOver.length) {\n this.push({\n data : utf8decode(this.leftOver),\n meta : {}\n });\n this.leftOver = null;\n }\n };\n\n return Utf8DecodeWorker;\n}(GenericWorker));\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nvar Utf8EncodeWorker = /*@__PURE__*/(function (GenericWorker) {\n function Utf8EncodeWorker() {\n GenericWorker.call(this, \"utf-8 encode\");\n }\n\n Utf8EncodeWorker.__proto__ = GenericWorker;\n Utf8EncodeWorker.prototype = Object.create( GenericWorker.prototype );\n Utf8EncodeWorker.prototype.constructor = Utf8EncodeWorker;\n\n /**\n * @see GenericWorker.processChunk\n */\n Utf8EncodeWorker.prototype.processChunk = function processChunk (chunk) {\n this.push({\n data: utf8encode(chunk.data),\n meta: chunk.meta\n });\n };\n\n return Utf8EncodeWorker;\n}(GenericWorker));\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nvar ConvertWorker = /*@__PURE__*/(function (GenericWorker) {\n function ConvertWorker(destType) {\n GenericWorker.call(this, \"ConvertWorker to \" + destType);\n this.destType = destType;\n }\n\n ConvertWorker.__proto__ = GenericWorker;\n ConvertWorker.prototype = Object.create( GenericWorker.prototype );\n ConvertWorker.prototype.constructor = ConvertWorker;\n\n /**\n * @see GenericWorker.processChunk\n */\n ConvertWorker.prototype.processChunk = function processChunk (chunk) {\n this.push({\n data: transformTo(this.destType, chunk.data),\n meta: chunk.meta\n });\n };\n\n return ConvertWorker;\n}(GenericWorker));\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n switch(type) {\n case \"blob\" :\n return newBlob(transformTo(\"arraybuffer\", content), mimeType);\n case \"base64\" :\n return encode(content);\n default :\n return transformTo(type, content);\n }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n var i, index = 0, res = null, totalLength = 0;\n for(i = 0; i < dataArray.length; i++) {\n totalLength += dataArray[i].length;\n }\n switch(type) {\n case \"string\":\n return dataArray.join(\"\");\n case \"array\":\n return Array.prototype.concat.apply([], dataArray);\n case \"uint8array\":\n res = new Uint8Array(totalLength);\n for(i = 0; i < dataArray.length; i++) {\n res.set(dataArray[i], index);\n index += dataArray[i].length;\n }\n return res;\n default:\n throw new Error(\"concat : unsupported type '\" + type + \"'\");\n }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n return new external.Promise(function (resolve, reject){\n var dataArray = [];\n var chunkType = helper._internalType,\n resultType = helper._outputType,\n mimeType = helper._mimeType;\n helper\n .on('data', function (data, meta) {\n dataArray.push(data);\n if(updateCallback) {\n updateCallback(meta);\n }\n })\n .on('error', function(err) {\n dataArray = [];\n reject(err);\n })\n .on('end', function (){\n try {\n var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n dataArray = [];\n })\n .resume();\n });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nvar StreamHelper = function StreamHelper (worker, outputType, mimeType) {\n var internalType = outputType;\n switch(outputType) {\n case \"blob\":\n case \"arraybuffer\":\n internalType = \"uint8array\";\n break;\n case \"base64\":\n internalType = \"string\";\n break;\n }\n\n try {\n // the type used internally\n this._internalType = internalType;\n // the type used to output results\n this._outputType = outputType;\n // the mime type\n this._mimeType = mimeType;\n checkSupport(internalType);\n this._worker = worker.pipe(new ConvertWorker(internalType));\n // the last workers can be rewired without issues but we need to\n // prevent any updates on previous workers.\n worker.lock();\n } catch(e) {\n this._worker = new GenericWorker(\"error\");\n this._worker.error(e);\n }\n};\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {Function} updateCb the update callback.\n * @return Promise the promise for the accumulation.\n */\nStreamHelper.prototype.accumulate = function accumulate$1 (updateCb) {\n return accumulate(this, updateCb);\n};\n\n/**\n * Add a listener on an event triggered on a stream.\n * @param {String} evt the name of the event\n * @param {Function} fn the listener\n * @return {StreamHelper} the current helper.\n */\nStreamHelper.prototype.on = function on (evt, fn) {\n var self = this;\n\n if(evt === \"data\") {\n this._worker.on(evt, function (chunk) {\n fn.call(self, chunk.data, chunk.meta);\n });\n } else {\n this._worker.on(evt, function () {\n delay(fn, arguments, self);\n });\n }\n return this;\n};\n\n/**\n * Resume the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\nStreamHelper.prototype.resume = function resume () {\n delay(this._worker.resume, [], this._worker);\n return this;\n};\n\n/**\n * Pause the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\nStreamHelper.prototype.pause = function pause () {\n this._worker.pause();\n return this;\n};\n\nvar base64 = false;\nvar binary = false;\nvar dir = false;\nvar createFolders = true;\nvar date = null;\nvar compression = null;\nvar compressionOptions = null;\nvar comment = null;\nvar unixPermissions = null;\nvar dosPermissions = null;\n\nvar defaults = /*#__PURE__*/Object.freeze({\n __proto__: null,\n base64: base64,\n binary: binary,\n comment: comment,\n compression: compression,\n compressionOptions: compressionOptions,\n createFolders: createFolders,\n date: date,\n dir: dir,\n dosPermissions: dosPermissions,\n unixPermissions: unixPermissions\n});\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nvar DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nvar DataWorker = /*@__PURE__*/(function (GenericWorker) {\n function DataWorker(dataP) {\n GenericWorker.call(this, \"DataWorker\");\n var self = this;\n this.dataIsReady = false;\n this.index = 0;\n this.max = 0;\n this.data = null;\n this.type = \"\";\n\n this._tickScheduled = false;\n\n dataP.then(function (data) {\n self.dataIsReady = true;\n self.data = data;\n self.max = data && data.length || 0;\n self.type = getTypeOf(data);\n if(!self.isPaused) {\n self._tickAndRepeat();\n }\n }, function (e) {\n self.error(e);\n });\n }\n\n DataWorker.__proto__ = GenericWorker;\n DataWorker.prototype = Object.create( GenericWorker.prototype );\n DataWorker.prototype.constructor = DataWorker;\n\n /**\n * @see GenericWorker.cleanUp\n */\n DataWorker.prototype.cleanUp = function cleanUp () {\n GenericWorker.prototype.cleanUp.call(this);\n this.data = null;\n };\n\n /**\n * @see GenericWorker.resume\n */\n DataWorker.prototype.resume = function resume () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if (!this._tickScheduled && this.dataIsReady) {\n this._tickScheduled = true;\n delay(this._tickAndRepeat, [], this);\n }\n return true;\n };\n\n /**\n * Trigger a tick a schedule an other call to this function.\n */\n DataWorker.prototype._tickAndRepeat = function _tickAndRepeat () {\n this._tickScheduled = false;\n if(this.isPaused || this.isFinished) {\n return;\n }\n this._tick();\n if(!this.isFinished) {\n delay(this._tickAndRepeat, [], this);\n this._tickScheduled = true;\n }\n };\n /**\n * Read and push a chunk.\n */\n DataWorker.prototype._tick = function _tick () {\n\n if(this.isPaused || this.isFinished) {\n return false;\n }\n\n var size = DEFAULT_BLOCK_SIZE;\n var data = null, nextIndex = Math.min(this.max, this.index + size);\n if (this.index >= this.max) {\n // EOF\n return this.end();\n } else {\n switch(this.type) {\n case \"string\":\n data = this.data.substring(this.index, nextIndex);\n break;\n case \"uint8array\":\n data = this.data.subarray(this.index, nextIndex);\n break;\n case \"array\":\n data = this.data.slice(this.index, nextIndex);\n break;\n }\n this.index = nextIndex;\n return this.push({\n data : data,\n meta : {\n percent : this.max ? this.index / this.max * 100 : 0\n }\n });\n }\n };\n\n return DataWorker;\n}(GenericWorker));\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nvar DataLengthProbe = /*@__PURE__*/(function (GenericWorker) {\n function DataLengthProbe(propName) {\n GenericWorker.call(this, \"DataLengthProbe for \" + propName);\n this.propName = propName;\n this.withStreamInfo(propName, 0);\n }\n\n DataLengthProbe.__proto__ = GenericWorker;\n DataLengthProbe.prototype = Object.create( GenericWorker.prototype );\n DataLengthProbe.prototype.constructor = DataLengthProbe;\n\n /**\n * @see GenericWorker.processChunk\n */\n DataLengthProbe.prototype.processChunk = function processChunk (chunk) {\n if (chunk) {\n var length = this.streamInfo[this.propName] || 0;\n this.streamInfo[this.propName] = length + chunk.data.length;\n }\n GenericWorker.prototype.processChunk.call(this, chunk);\n };\n\n return DataLengthProbe;\n}(GenericWorker));\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\nvar makeTable = function() {\n // Use ordinary array, since untyped makes no boost here\n var table = [];\n\n for (var n =0; n < 256; n++){\n var c = n;\n for(var k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n // Memoize table on first call.\n makeTable = function() {\n return table;\n };\n\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n var t = makeTable();\n var end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n var t = makeTable();\n var end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\nfunction crc32wrapper(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n var isArray = getTypeOf(input) !== \"string\";\n\n if (isArray) {\n return crc32(crc | 0, input, input.length, 0);\n } else {\n return crc32str(crc | 0, input, input.length, 0);\n }\n}\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nvar Crc32Probe = /*@__PURE__*/(function (GenericWorker) {\n function Crc32Probe() {\n GenericWorker.call(this, \"Crc32Probe\");\n this.withStreamInfo(\"crc32\", 0);\n }\n\n Crc32Probe.__proto__ = GenericWorker;\n Crc32Probe.prototype = Object.create( GenericWorker.prototype );\n Crc32Probe.prototype.constructor = Crc32Probe;\n\n /**\n * @see GenericWorker.processChunk\n */\n Crc32Probe.prototype.processChunk = function processChunk (chunk) {\n this.streamInfo.crc32 = crc32wrapper(chunk.data, this.streamInfo.crc32 || 0);\n this.push(chunk);\n };\n\n return Crc32Probe;\n}(GenericWorker));\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nvar CompressedObject = function CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {\n this.compressedSize = compressedSize;\n this.uncompressedSize = uncompressedSize;\n this.crc32 = crc32;\n this.compression = compression;\n this.compressedContent = data;\n};\n\n/**\n * Create a worker to get the uncompressed content.\n * @return {GenericWorker} the worker.\n */\nCompressedObject.prototype.getContentWorker = function getContentWorker () {\n var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n .pipe(this.compression.uncompressWorker())\n .pipe(new DataLengthProbe(\"data_length\"));\n\n var that = this;\n worker.on(\"end\", function () {\n if(this.streamInfo['data_length'] !== that.uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n });\n return worker;\n};\n\n/**\n * Create a worker to get the compressed content.\n * @return {GenericWorker} the worker.\n */\nCompressedObject.prototype.getCompressedWorker = function getCompressedWorker () {\n return new DataWorker(external.Promise.resolve(this.compressedContent))\n .withStreamInfo(\"compressedSize\", this.compressedSize)\n .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n .withStreamInfo(\"crc32\", this.crc32)\n .withStreamInfo(\"compression\", this.compression)\n ;\n};\n\n/**\n * Chain the given worker with other workers to compress the content with the\n * given compression.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\nCompressedObject.createWorkerFrom = function createWorkerFrom (uncompressedWorker, compression, compressionOptions) {\n return uncompressedWorker\n .pipe(new Crc32Probe())\n .pipe(new DataLengthProbe(\"uncompressedSize\"))\n .pipe(compression.compressWorker(compressionOptions))\n .pipe(new DataLengthProbe(\"compressedSize\"))\n .withStreamInfo(\"compression\", compression);\n};\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function ZipObject(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n this.unixPermissions = options.unixPermissions;\n this.dosPermissions = options.dosPermissions;\n\n this._data = data;\n this._dataBinary = options.binary;\n // keep only the compression\n this.options = {\n compression : options.compression,\n compressionOptions : options.compressionOptions\n };\n};\n\n/**\n * Create an internal stream for the content of this object.\n * @param {String} type the type of each chunk.\n * @return StreamHelper the stream.\n */\nZipObject.prototype.internalStream = function internalStream (type) {\n var result = null, outputType = \"string\";\n try {\n if (!type) {\n throw new Error(\"No output type specified.\");\n }\n outputType = type.toLowerCase();\n var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n if (outputType === \"binarystring\" || outputType === \"text\") {\n outputType = \"string\";\n }\n result = this._decompressWorker();\n\n var isUnicodeString = !this._dataBinary;\n\n if (isUnicodeString && !askUnicodeString) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n if (!isUnicodeString && askUnicodeString) {\n result = result.pipe(new Utf8DecodeWorker());\n }\n } catch (e) {\n result = new GenericWorker(\"error\");\n result.error(e);\n }\n\n return new StreamHelper(result, outputType, \"\");\n};\n\n/**\n * Prepare the content in the asked type.\n * @param {String} type the type of the result.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Promise the promise of the result.\n */\nZipObject.prototype.async = function async (type, onUpdate) {\n return this.internalStream(type).accumulate(onUpdate);\n};\n\n/**\n * Return a worker for the compressed content.\n * @private\n * @param {Object} compression the compression object to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return Worker the worker.\n */\nZipObject.prototype._compressWorker = function _compressWorker (compression, compressionOptions) {\n if (\n this._data instanceof CompressedObject &&\n this._data.compression.magic === compression.magic\n ) {\n return this._data.getCompressedWorker();\n } else {\n var result = this._decompressWorker();\n if(!this._dataBinary) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n }\n};\n\n/**\n * Return a worker for the decompressed content.\n * @private\n * @return Worker the worker.\n */\nZipObject.prototype._decompressWorker = function _decompressWorker () {\n if (this._data instanceof CompressedObject) {\n return this._data.getContentWorker();\n } else if (this._data instanceof GenericWorker) {\n return this._data;\n } else {\n return new DataWorker(this._data);\n }\n};\n\nvar arrayType = function() {\n var useTypedArray = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n var resolved = useTypedArray ? \"uint8array\" : \"array\";\n\n arrayType = function() {\n return resolved;\n };\n};\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nvar FlateWorker = /*@__PURE__*/(function (GenericWorker) {\n function FlateWorker(action, options) {\n GenericWorker.call(this, \"FlateWorker/\" + action);\n\n this._pako = null;\n this._pakoAction = action;\n this._pakoOptions = options;\n // the `meta` object from the last chunk received\n // this allow this worker to pass around metadata\n this.meta = {};\n }\n\n FlateWorker.__proto__ = GenericWorker;\n FlateWorker.prototype = Object.create( GenericWorker.prototype );\n FlateWorker.prototype.constructor = FlateWorker;\n\n /**\n * @see GenericWorker.processChunk\n */\n FlateWorker.prototype.processChunk = function processChunk (chunk) {\n this.meta = chunk.meta;\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push(transformTo(arrayType(), chunk.data), false);\n };\n\n /**\n * @see GenericWorker.flush\n */\n FlateWorker.prototype.flush = function flush () {\n GenericWorker.prototype.flush.call(this);\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push([], true);\n };\n /**\n * @see GenericWorker.cleanUp\n */\n FlateWorker.prototype.cleanUp = function cleanUp () {\n GenericWorker.prototype.cleanUp.call(this);\n this._pako = null;\n };\n\n /**\n * Create the _pako object.\n * TODO: lazy-loading this object isn't the best solution but it's the\n * quickest. The best solution is to lazy-load the worker list. See also the\n * issue #446.\n */\n FlateWorker.prototype._createPako = function _createPako () {\n var this$1$1 = this;\n\n var params = {\n raw: true,\n level: this._pakoOptions.level || -1 // default compression\n };\n this._pako = this._pakoAction === 'Deflate' ? new Deflate(params) : new Inflate(params);\n this._pako.onData = function (data) {\n this$1$1.push({\n data: data,\n meta: this$1$1.meta\n });\n };\n };\n\n return FlateWorker;\n}(GenericWorker));\n\nvar DEFLATE = {\n magic: \"\\x08\\x00\",\n compressWorker: function(compressionOptions) {\n return new FlateWorker(\"Deflate\", compressionOptions);\n },\n\n uncompressWorker: function() {\n return new FlateWorker(\"Inflate\", {});\n }\n};\n\nvar STORE = {\n magic: \"\\x00\\x00\",\n compressWorker: function() {\n return new GenericWorker(\"STORE compression\");\n },\n uncompressWorker: function() {\n return new GenericWorker(\"STORE decompression\");\n }\n};\n\nvar compressions = {\n STORE: STORE,\n DEFLATE: DEFLATE\n};\n\nvar LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nvar CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nvar CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nvar ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nvar ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nvar DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\", i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n * ^^^_________________________ setuid, setgid, sticky\n * ^^^^^^^^^________________ permissions\n * ^^^^^^^^^^______ not used ?\n * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n var result = unixPermissions;\n if (!unixPermissions) {\n // I can't use octal values in strict mode, hence the hexa.\n // 040775 => 0x41fd\n // 0100664 => 0x81b4\n result = isDir ? 0x41fd : 0x81b4;\n }\n return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0 Read-Only\n * Bit 1 Hidden\n * Bit 2 System\n * Bit 3 Volume Label\n * Bit 4 Directory\n * Bit 5 Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n // the dir flag is already set for compatibility\n return (dosPermissions || 0) & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with information about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n var file = streamInfo['file'],\n compression = streamInfo['compression'],\n useCustomEncoding = encodeFileName !== utf8encode,\n encodedFileName = transformTo(\"string\", encodeFileName(file.name)),\n utfEncodedFileName = transformTo(\"string\", utf8encode(file.name)),\n comment = file.comment,\n encodedComment = transformTo(\"string\", encodeFileName(comment)),\n utfEncodedComment = transformTo(\"string\", utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir = file.dir,\n date = file.date;\n\n\n var dataInfo = {\n crc32 : 0,\n compressedSize : 0,\n uncompressedSize : 0\n };\n\n // if the content is streamed, the sizes/crc32 are only available AFTER\n // the end of the stream.\n if (!streamedContent || streamingEnded) {\n dataInfo.crc32 = streamInfo['crc32'];\n dataInfo.compressedSize = streamInfo['compressedSize'];\n dataInfo.uncompressedSize = streamInfo['uncompressedSize'];\n }\n\n var bitflag = 0;\n if (streamedContent) {\n // Bit 3: the sizes/crc32 are set to zero in the local header.\n // The correct values are put in the data descriptor immediately\n // following the compressed data.\n bitflag |= 0x0008;\n }\n if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n // Bit 11: Language encoding flag (EFS).\n bitflag |= 0x0800;\n }\n\n\n var extFileAttr = 0;\n var versionMadeBy = 0;\n if (dir) {\n // dos or unix, we set the dos dir flag\n extFileAttr |= 0x00010;\n }\n if(platform === \"UNIX\") {\n versionMadeBy = 0x031E; // UNIX, version 3.0\n extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n } else { // DOS or other, fallback to DOS\n versionMadeBy = 0x0014; // DOS, version 2.0\n extFileAttr |= generateDosExternalFileAttr(file.dosPermissions);\n }\n\n // date\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n dosTime = date.getUTCHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getUTCMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getUTCSeconds() / 2;\n\n dosDate = date.getUTCFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getUTCMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getUTCDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32wrapper(encodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(crc32wrapper(encodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n header += decToHex(bitflag, 2);\n // compression method\n header += compression.magic;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(dataInfo.crc32, 4);\n // compressed size\n header += decToHex(dataInfo.compressedSize, 4);\n // uncompressed size\n header += decToHex(dataInfo.uncompressedSize, 4);\n // file name length\n header += decToHex(encodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n var dirRecord = CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n decToHex(versionMadeBy, 2) +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(encodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n decToHex(extFileAttr, 4) +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n encodedFileName +\n // extra field\n extraFields +\n // file comment\n encodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord\n };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n var dirEnd = \"\";\n var encodedComment = transformTo(\"string\", encodeFileName(comment));\n\n // end of central dir signature\n dirEnd = CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(entriesCount, 2) +\n // total number of entries in the central directory\n decToHex(entriesCount, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(encodedComment.length, 2) +\n // .ZIP file comment\n encodedComment;\n\n return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing information\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n var descriptor = \"\";\n descriptor = DATA_DESCRIPTOR +\n // crc-32 4 bytes\n decToHex(streamInfo['crc32'], 4) +\n // compressed size 4 bytes\n decToHex(streamInfo['compressedSize'], 4) +\n // uncompressed size 4 bytes\n decToHex(streamInfo['uncompressedSize'], 4);\n\n return descriptor;\n};\n\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nvar ZipFileWorker = /*@__PURE__*/(function (GenericWorker) {\n function ZipFileWorker(streamFiles, comment, platform, encodeFileName) {\n GenericWorker.call(this, \"ZipFileWorker\");\n // The number of bytes written so far. This doesn't count accumulated chunks.\n this.bytesWritten = 0;\n // The comment of the zip file\n this.zipComment = comment;\n // The platform \"generating\" the zip file.\n this.zipPlatform = platform;\n // the function to encode file names and comments.\n this.encodeFileName = encodeFileName;\n // Should we stream the content of the files ?\n this.streamFiles = streamFiles;\n // If `streamFiles` is false, we will need to accumulate the content of the\n // files to calculate sizes / crc32 (and write them *before* the content).\n // This boolean indicates if we are accumulating chunks (it will change a lot\n // during the lifetime of this worker).\n this.accumulate = false;\n // The buffer receiving chunks when accumulating content.\n this.contentBuffer = [];\n // The list of generated directory records.\n this.dirRecords = [];\n // The offset (in bytes) from the beginning of the zip file for the current source.\n this.currentSourceOffset = 0;\n // The total number of entries in this zip file.\n this.entriesCount = 0;\n // the name of the file currently being added, null when handling the end of the zip file.\n // Used for the emitted metadata.\n this.currentFile = null;\n\n this._sources = [];\n }\n\n ZipFileWorker.__proto__ = GenericWorker;\n ZipFileWorker.prototype = Object.create( GenericWorker.prototype );\n ZipFileWorker.prototype.constructor = ZipFileWorker;\n\n /**\n * @see GenericWorker.push\n */\n ZipFileWorker.prototype.push = function push (chunk) {\n\n var currentFilePercent = chunk.meta.percent || 0;\n var entriesCount = this.entriesCount;\n var remainingFiles = this._sources.length;\n\n if(this.accumulate) {\n this.contentBuffer.push(chunk);\n } else {\n this.bytesWritten += chunk.data.length;\n\n GenericWorker.prototype.push.call(this, {\n data : chunk.data,\n meta : {\n currentFile : this.currentFile,\n percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n }\n });\n }\n };\n\n /**\n * The worker started a new source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the new source.\n */\n ZipFileWorker.prototype.openedSource = function openedSource (streamInfo) {\n this.currentSourceOffset = this.bytesWritten;\n this.currentFile = streamInfo['file'].name;\n\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n\n // don't stream folders (because they don't have any content)\n if(streamedContent) {\n var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n } else {\n // we need to wait for the whole file before pushing anything\n this.accumulate = true;\n }\n };\n\n /**\n * The worker finished a source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the finished source.\n */\n ZipFileWorker.prototype.closedSource = function closedSource (streamInfo) {\n this.accumulate = false;\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n this.dirRecords.push(record.dirRecord);\n if(streamedContent) {\n // after the streamed file, we put data descriptors\n this.push({\n data : generateDataDescriptors(streamInfo),\n meta : {percent:100}\n });\n } else {\n // the content wasn't streamed, we need to push everything now\n // first the file record, then the content\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n while(this.contentBuffer.length) {\n this.push(this.contentBuffer.shift());\n }\n }\n this.currentFile = null;\n };\n\n /**\n * @see GenericWorker.flush\n */\n ZipFileWorker.prototype.flush = function flush () {\n\n var localDirLength = this.bytesWritten;\n for(var i = 0; i < this.dirRecords.length; i++) {\n this.push({\n data : this.dirRecords[i],\n meta : {percent:100}\n });\n }\n var centralDirLength = this.bytesWritten - localDirLength;\n\n var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n this.push({\n data : dirEnd,\n meta : {percent:100}\n });\n };\n\n /**\n * Prepare the next source to be read.\n */\n ZipFileWorker.prototype.prepareNextSource = function prepareNextSource () {\n this.previous = this._sources.shift();\n this.openedSource(this.previous.streamInfo);\n if (this.isPaused) {\n this.previous.pause();\n } else {\n this.previous.resume();\n }\n };\n\n /**\n * @see GenericWorker.registerPrevious\n */\n ZipFileWorker.prototype.registerPrevious = function registerPrevious (previous) {\n this._sources.push(previous);\n var self = this;\n\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.closedSource(self.previous.streamInfo);\n if(self._sources.length) {\n self.prepareNextSource();\n } else {\n self.end();\n }\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n };\n\n /**\n * @see GenericWorker.resume\n */\n ZipFileWorker.prototype.resume = function resume () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if (!this.previous && this._sources.length) {\n this.prepareNextSource();\n return true;\n }\n if (!this.previous && !this._sources.length && !this.generatedError) {\n this.end();\n return true;\n }\n };\n\n /**\n * @see GenericWorker.error\n */\n ZipFileWorker.prototype.error = function error (e) {\n var sources = this._sources;\n if(!GenericWorker.prototype.error.call(this, e)) {\n return false;\n }\n for(var i = 0; i < sources.length; i++) {\n try {\n sources[i].error(e);\n } catch(e$1) {\n // the `error` exploded, nothing to do\n }\n }\n return true;\n };\n\n /**\n * @see GenericWorker.lock\n */\n ZipFileWorker.prototype.lock = function lock () {\n GenericWorker.prototype.lock.call(this);\n var sources = this._sources;\n for(var i = 0; i < sources.length; i++) {\n sources[i].lock();\n }\n };\n\n return ZipFileWorker;\n}(GenericWorker));\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n\n var compressionName = fileCompression || zipCompression;\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nvar generateWorker = function (zip, options, comment) {\n\n var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n var entriesCount = 0;\n try {\n\n zip.forEach(function (relativePath, file) {\n entriesCount++;\n var compression = getCompression(file.options.compression, options.compression);\n var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n var dir = file.dir, date = file.date;\n\n file._compressWorker(compression, compressionOptions)\n .withStreamInfo(\"file\", {\n name : relativePath,\n dir : dir,\n date : date,\n comment : file.comment || \"\",\n unixPermissions : file.unixPermissions,\n dosPermissions : file.dosPermissions\n })\n .pipe(zipFileWorker);\n });\n zipFileWorker.entriesCount = entriesCount;\n } catch (e) {\n zipFileWorker.error(e);\n }\n\n return zipFileWorker;\n};\n\nvar DataReader = function DataReader(data) {\n this.data = data; // type : see implementation\n this.length = data.length;\n this.index = 0;\n this.zero = 0;\n};\n\n/**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\nDataReader.prototype.checkOffset = function checkOffset (offset) {\n this.checkIndex(this.index + offset);\n};\n\n/**\n * Check that the specified index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\nDataReader.prototype.checkIndex = function checkIndex (newIndex) {\n if (this.length < this.zero + newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n};\n\n/**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\nDataReader.prototype.setIndex = function setIndex (newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n};\n\n/**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\nDataReader.prototype.skip = function skip (n) {\n this.setIndex(this.index + n);\n};\n\n/**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\nDataReader.prototype.byteAt = function byteAt (i) {\n // see implementations\n};\n\n/**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\nDataReader.prototype.readInt = function readInt (size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n};\n\n/**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\nDataReader.prototype.readString = function readString (size) {\n return transformTo(\"string\", this.readData(size));\n};\n\n/**\n * Get raw data without conversion, <size> bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\nDataReader.prototype.readData = function readData (size) {\n // see implementations\n};\n\n/**\n * Find the last occurrence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurrence, -1 if not found.\n */\nDataReader.prototype.lastIndexOfSignature = function lastIndexOfSignature (sig) {\n // see implementations\n};\n\n/**\n * Read the signature (4 bytes) at the current position and compare it with sig.\n * @param {string} sig the expected signature\n * @return {boolean} true if the signature matches, false otherwise.\n */\nDataReader.prototype.readAndCheckSignature = function readAndCheckSignature (sig) {\n // see implementations\n};\n\n/**\n * Get the next date.\n * @return {Date} the date.\n */\nDataReader.prototype.readDate = function readDate () {\n var dostime = this.readInt(4);\n return new Date(Date.UTC(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1)); // second\n};\n\nvar ArrayReader = /*@__PURE__*/(function (DataReader) {\n function ArrayReader(data) {\n DataReader.call(this, data);\n for(var i = 0; i < this.data.length; i++) {\n data[i] = data[i] & 0xFF;\n }\n }\n\n ArrayReader.__proto__ = DataReader;\n ArrayReader.prototype = Object.create( DataReader.prototype );\n ArrayReader.prototype.constructor = ArrayReader;\n\n /**\n * @see DataReader.byteAt\n */\n ArrayReader.prototype.byteAt = function byteAt (i) {\n return this.data[this.zero + i];\n };\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n ArrayReader.prototype.lastIndexOfSignature = function lastIndexOfSignature (sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i - this.zero;\n }\n }\n\n return -1;\n };\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n ArrayReader.prototype.readAndCheckSignature = function readAndCheckSignature (sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3),\n data = this.readData(4);\n return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n };\n\n /**\n * @see DataReader.readData\n */\n ArrayReader.prototype.readData = function readData (size) {\n this.checkOffset(size);\n if(size === 0) {\n return [];\n }\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n };\n\n return ArrayReader;\n}(DataReader));\n\nvar StringReader = /*@__PURE__*/(function (DataReader) {\n function StringReader(data) {\n DataReader.call(this, data);\n }\n\n StringReader.__proto__ = DataReader;\n StringReader.prototype = Object.create( DataReader.prototype );\n StringReader.prototype.constructor = StringReader;\n\n /**\n * @see DataReader.byteAt\n */\n StringReader.prototype.byteAt = function byteAt (i) {\n return this.data.charCodeAt(this.zero + i);\n };\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n StringReader.prototype.lastIndexOfSignature = function lastIndexOfSignature (sig) {\n return this.data.lastIndexOf(sig) - this.zero;\n };\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n StringReader.prototype.readAndCheckSignature = function readAndCheckSignature (sig) {\n var data = this.readData(4);\n return sig === data;\n };\n\n /**\n * @see DataReader.readData\n */\n StringReader.prototype.readData = function readData (size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n };\n\n return StringReader;\n}(DataReader));\n\nvar Uint8ArrayReader = /*@__PURE__*/(function (ArrayReader) {\n function Uint8ArrayReader(data) {\n ArrayReader.call(this, data);\n }\n\n Uint8ArrayReader.__proto__ = ArrayReader;\n Uint8ArrayReader.prototype = Object.create( ArrayReader.prototype );\n Uint8ArrayReader.prototype.constructor = Uint8ArrayReader;\n\n /**\n * @see DataReader.readData\n */\n Uint8ArrayReader.prototype.readData = function readData (size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n };\n\n return Uint8ArrayReader;\n}(ArrayReader));\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nfunction readerFor(data) {\n var type = getTypeOf(data);\n checkSupport(type);\n if (type === \"string\" && !support.uint8array) {\n return new StringReader(data);\n }\n if (support.uint8array) {\n return new Uint8ArrayReader(transformTo(\"uint8array\", data));\n }\n return new ArrayReader(transformTo(\"array\", data));\n}\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nvar ZipEntry = function ZipEntry(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n};\n\n/**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\nZipEntry.prototype.isEncrypted = function isEncrypted () {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n};\n\n/**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\nZipEntry.prototype.useUTF8 = function useUTF8 () {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n};\n\n/**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.readLocalPart = function readLocalPart (reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n this.fileName = reader.readData(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n\n if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n }\n\n compression = findCompression(this.compressionMethod);\n if (compression === null) { // no compression found\n throw new Error(\"Corrupted zip : compression \" + pretty(this.compressionMethod) + \" unknown (inner file : \" + transformTo(\"string\", this.fileName) + \")\");\n }\n this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n};\n\n/**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.readCentralPart = function readCentralPart (reader) {\n this.versionMadeBy = reader.readInt(2);\n reader.skip(2);\n // this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n var fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n // will be read in the local part, see the comments there\n reader.skip(fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readData(this.fileCommentLength);\n};\n\n/**\n * Parse the external file attributes and get the unix/dos permissions.\n */\nZipEntry.prototype.processAttributes = function processAttributes () {\n this.unixPermissions = null;\n this.dosPermissions = null;\n var madeBy = this.versionMadeBy >> 8;\n\n // Check if we have the DOS directory flag set.\n // We look for it in the DOS and UNIX permissions\n // but some unknown platform could set it as a compatibility flag.\n this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n if(madeBy === MADE_BY_DOS) {\n // first 6 bits (0 to 5)\n this.dosPermissions = this.externalFileAttributes & 0x3F;\n }\n\n if(madeBy === MADE_BY_UNIX) {\n this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n }\n\n // fail safe : if the name ends with a / it probably means a folder\n if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n this.dir = true;\n }\n};\n\n/**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.parseZIP64ExtraField = function parseZIP64ExtraField (reader) {\n\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = readerFor(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n};\n\n/**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.readExtraFields = function readExtraFields (reader) {\n var end = reader.index + this.extraFieldsLength,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n\n if (!this.extraFields) {\n this.extraFields = {};\n }\n\n while (reader.index < end) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readData(extraFieldLength);\n\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n};\n\n/**\n * Apply an UTF8 transformation if needed.\n */\nZipEntry.prototype.handleUTF8 = function handleUTF8 () {\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n if (this.useUTF8()) {\n this.fileNameStr = utf8decode(this.fileName);\n this.fileCommentStr = utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileNameStr = upath;\n } else {\n // ASCII text or unsupported code page\n var fileNameByteArray = transformTo(decodeParamType, this.fileName);\n this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n }\n\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileCommentStr = ucomment;\n } else {\n // ASCII text or unsupported code page\n var commentByteArray = transformTo(decodeParamType, this.fileComment);\n this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n }\n }\n};\n\n/**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\nZipEntry.prototype.findExtraFieldUnicodePath = function findExtraFieldUnicodePath () {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = readerFor(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (crc32wrapper(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8decode(extraReader.readData(upathField.length - 5));\n }\n return null;\n};\n\n/**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\nZipEntry.prototype.findExtraFieldUnicodeComment = function findExtraFieldUnicodeComment () {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = readerFor(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (crc32wrapper(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8decode(extraReader.readData(ucommentField.length - 5));\n }\n return null;\n};\n\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nvar ZipEntries = function ZipEntries(loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n};\n\n/**\n * Check that the reader is on the specified signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\nZipEntries.prototype.checkSignature = function checkSignature (expectedSignature) {\n if (!this.reader.readAndCheckSignature(expectedSignature)) {\n this.reader.index -= 4;\n var signature = this.reader.readString(4);\n throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + pretty(signature) + \", expected \" + pretty(expectedSignature) + \")\");\n }\n};\n\n/**\n * Check if the given signature is at the given index.\n * @param {number} askedIndex the index to check.\n * @param {string} expectedSignature the signature to expect.\n * @return {boolean} true if the signature is here, false otherwise.\n */\nZipEntries.prototype.isSignature = function isSignature (askedIndex, expectedSignature) {\n var currentIndex = this.reader.index;\n this.reader.setIndex(askedIndex);\n var signature = this.reader.readString(4);\n var result = signature === expectedSignature;\n this.reader.setIndex(currentIndex);\n return result;\n};\n\n/**\n * Read the end of the central directory.\n */\nZipEntries.prototype.readBlockEndOfCentral = function readBlockEndOfCentral () {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n var zipComment = this.reader.readData(this.zipCommentLength);\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded unless specified otherwise.\n var decodeContent = transformTo(decodeParamType, zipComment);\n this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n};\n\n/**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\nZipEntries.prototype.readBlockZip64EndOfCentral = function readBlockZip64EndOfCentral () {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.reader.skip(4);\n // this.versionMadeBy = this.reader.readString(2);\n // this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readData(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n};\n\n/**\n * Read the end of the Zip 64 central directory locator.\n */\nZipEntries.prototype.readBlockZip64EndOfCentralLocator = function readBlockZip64EndOfCentralLocator () {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n};\n\n/**\n * Read the local files, based on the offset read in the central part.\n */\nZipEntries.prototype.readLocalFiles = function readLocalFiles () {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n file.processAttributes();\n }\n};\n\n/**\n * Read the central directory.\n */\nZipEntries.prototype.readCentralDir = function readCentralDir () {\n var file;\n\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readAndCheckSignature(CENTRAL_FILE_HEADER)) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n\n if (this.centralDirRecords !== this.files.length) {\n if (this.centralDirRecords !== 0 && this.files.length === 0) {\n // We expected some records but couldn't find ANY.\n // This is really suspicious, as if something went wrong.\n throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n }\n }\n};\n\n/**\n * Read the end of central directory.\n */\nZipEntries.prototype.readEndOfCentral = function readEndOfCentral () {\n var offset = this.reader.lastIndexOfSignature(CENTRAL_DIRECTORY_END);\n if (offset < 0) {\n // Check if the content is a truncated zip or complete garbage.\n // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n // extractible zip for example) but it can give a good hint.\n // If an ajax request was used without responseType, we will also\n // get unreadable data.\n var isGarbage = !this.isSignature(0, LOCAL_FILE_HEADER);\n\n if (isGarbage) {\n throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n } else {\n throw new Error(\"Corrupted zip: can't find end of central directory\");\n }\n\n }\n this.reader.setIndex(offset);\n var endOfCentralDirOffset = offset;\n this.checkSignature(CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === MAX_VALUE_16BITS || this.diskWithCentralDirStart === MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === MAX_VALUE_16BITS || this.centralDirRecords === MAX_VALUE_16BITS || this.centralDirSize === MAX_VALUE_32BITS || this.centralDirOffset === MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, ZIP64_CENTRAL_DIRECTORY_END)) {\n // console.warn(\"ZIP64 end of central directory not where expected.\");\n this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_END);\n if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n }\n }\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n\n var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n if (this.zip64) {\n expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n }\n\n var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n if (extraBytes > 0) {\n // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n if (this.isSignature(endOfCentralDirOffset, CENTRAL_FILE_HEADER)) ; else {\n // the offset is wrong, update the \"zero\" of the reader\n // this happens if data has been prepended (crx files for example)\n this.reader.zero = extraBytes;\n }\n } else if (extraBytes < 0) {\n throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n }\n};\n\nZipEntries.prototype.prepareReader = function prepareReader (data) {\n this.reader = readerFor(data);\n};\n\n/**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\nZipEntries.prototype.load = function load (data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n};\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n return new external.Promise(function (resolve, reject) {\n var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n worker.on(\"error\", function (e) {\n reject(e);\n })\n .on(\"end\", function () {\n if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n } else {\n resolve();\n }\n })\n .resume();\n });\n}\n\nfunction load(data, options) {\n var zip = this;\n options = extend(options || {}, {\n base64: false,\n checkCRC32: false,\n optimizedBinaryString: false,\n createFolders: false,\n decodeFileName: utf8decode\n });\n\n return prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n .then(function(data) {\n var zipEntries = new ZipEntries(options);\n zipEntries.load(data);\n return zipEntries;\n }).then(function checkCRC32(zipEntries) {\n var promises = [external.Promise.resolve(zipEntries)];\n var files = zipEntries.files;\n if (options.checkCRC32) {\n for (var i = 0; i < files.length; i++) {\n promises.push(checkEntryCRC32(files[i]));\n }\n }\n return external.Promise.all(promises);\n }).then(function addFiles(results) {\n var zipEntries = results.shift();\n var files = zipEntries.files;\n for (var i = 0; i < files.length; i++) {\n var input = files[i];\n\n var unsafeName = input.fileNameStr;\n var safeName = resolve(input.fileNameStr);\n\n zip.file(safeName, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment : input.fileCommentStr.length ? input.fileCommentStr : null,\n unixPermissions : input.unixPermissions,\n dosPermissions : input.dosPermissions,\n createFolders: options.createFolders\n });\n if (!input.dir) {\n zip.file(safeName).unsafeOriginalName = unsafeName;\n }\n }\n if (zipEntries.zipComment.length) {\n zip.comment = zipEntries.zipComment;\n }\n\n return zip;\n });\n}\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, originalOptions) {\n // be sure sub folders exist\n var dataType = getTypeOf(data),\n parent;\n\n\n /*\n * Correct options.\n */\n\n var o = extend(originalOptions || {}, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) {\n o.compression = o.compression.toUpperCase();\n }\n\n if (typeof o.unixPermissions === \"string\") {\n o.unixPermissions = parseInt(o.unixPermissions, 8);\n }\n\n // UNX_IFDIR 0040000 see zipinfo.c\n if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n o.dir = true;\n }\n // Bit 4 Directory\n if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n o.dir = true;\n }\n\n if (o.dir) {\n name = forceTrailingSlash(name);\n }\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n o.binary = !isUnicodeString;\n }\n\n\n var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n o.base64 = false;\n o.binary = true;\n data = \"\";\n o.compression = \"STORE\";\n dataType = \"string\";\n }\n\n /*\n * Convert content to fit.\n */\n\n var zipObjectContent = null;\n if (data instanceof CompressedObject || data instanceof GenericWorker) {\n zipObjectContent = data;\n } else {\n zipObjectContent = prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n }\n\n var object = new ZipObject(name, zipObjectContent, o);\n this.files[name] = object;\n /*\n TODO: we can't throw an exception because we have async promises\n (we can have a promise of a Date() for example) but returning a\n promise is useless because file(name, data) returns the JSZip\n object for chaining. Should we break that to allow the user\n to catch the error ?\n\n return external.Promise.resolve(zipObjectContent)\n .then(function () {\n return object;\n });\n */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) === '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n // Check the name ends with a /\n if (path.slice(-1) !== \"/\") {\n path += \"/\"; // IE doesn't like substr(-1)\n }\n return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders$1) {\n createFolders$1 = (typeof createFolders$1 !== 'undefined') ? createFolders$1 : createFolders;\n\n name = forceTrailingSlash(name);\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders$1\n });\n }\n return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nvar JSZip = function JSZip() {\n if (arguments.length) {\n throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n // NOTE: we use a null prototype because we do not\n // want filenames like \"toString\" coming from a zip file\n // to overwrite methods and attributes in a normal Object.\n this.files = Object.create(null);\n\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n this.clone = function() {\n var newObj = new JSZip();\n for (var i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n};\n\nvar staticAccessors = { support: { configurable: true },defaults: { configurable: true },version: { configurable: true },external: { configurable: true } };\n\n/**\n * @see loadAsync\n */\nJSZip.prototype.load = function load () {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n};\n\n/**\n * Call a callback function for each entry at this folder level.\n * @param {Function} cb the callback function:\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n */\nJSZip.prototype.forEach = function forEach (cb) {\n var filename, relativePath, file;\n for (filename in this.files) {\n file = this.files[filename];\n relativePath = filename.slice(this.root.length, filename.length);\n if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n }\n }\n};\n\n/**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\nJSZip.prototype.filter = function filter (search) {\n var result = [];\n this.forEach(function (relativePath, entry) {\n if (search(relativePath, entry)) { // the file matches the function\n result.push(entry);\n }\n\n });\n return result;\n};\n\n/**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\nJSZip.prototype.file = function file (name, data, o) {\n if (arguments.length === 1) {\n if (isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n var obj = this.files[this.root + name];\n if (obj && !obj.dir) {\n return obj;\n } else {\n return null;\n }\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n};\n\n/**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\nJSZip.prototype.folder = function folder (arg) {\n if (!arg) {\n return this;\n }\n\n if (isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n};\n\n/**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\nJSZip.prototype.remove = function remove (name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) !== \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n};\n\n/**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\nJSZip.prototype.generate = function generate (options) {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n};\n\n/**\n * Generate the complete zip file as an internal stream.\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {StreamHelper} the streamed zip file.\n */\nJSZip.prototype.generateInternalStream = function generateInternalStream (options) {\n var worker, opts = {};\n try {\n opts = extend(options || {}, {\n streamFiles: false,\n compression: \"STORE\",\n compressionOptions : null,\n type: \"\",\n platform: \"DOS\",\n comment: null,\n mimeType: 'application/zip',\n encodeFileName: utf8encode\n });\n\n opts.type = opts.type.toLowerCase();\n opts.compression = opts.compression.toUpperCase();\n\n // \"binarystring\" is preferred but the internals use \"string\".\n if(opts.type === \"binarystring\") {\n opts.type = \"string\";\n }\n\n if (!opts.type) {\n throw new Error(\"No output type specified.\");\n }\n\n checkSupport(opts.type);\n\n // accept nodejs `process.platform`\n if(\n opts.platform === 'darwin' ||\n opts.platform === 'freebsd' ||\n opts.platform === 'linux' ||\n opts.platform === 'sunos'\n ) {\n opts.platform = \"UNIX\";\n }\n if (opts.platform === 'win32') {\n opts.platform = \"DOS\";\n }\n\n var comment = opts.comment || this.comment || \"\";\n worker = generateWorker(this, opts, comment);\n } catch (e) {\n worker = new GenericWorker(\"error\");\n worker.error(e);\n }\n return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n};\n\n/**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\nJSZip.prototype.generateAsync = function generateAsync (options, onUpdate) {\n return this.generateInternalStream(options).accumulate(onUpdate);\n};\n\nJSZip.prototype.loadAsync = function loadAsync (data, options) {\n return load.apply(this, [data, options]);\n};\n\nJSZip.loadAsync = function loadAsync (content, options) {\n return new JSZip().loadAsync(content, options);\n};\n \nstaticAccessors.support.get = function () {\n return support;\n};\n\nstaticAccessors.defaults.get = function () {\n return defaults;\n};\n\nstaticAccessors.version.get = function () {\n return \"3.2.2-esm\";\n};\n\nstaticAccessors.external.get = function () {\n return external;\n};\n\nObject.defineProperties( JSZip, staticAccessors );\n\nexport { JSZip as default };\n","var current = {\n toString: function (value) { return value; }\n};\n\nvar IntlService = function IntlService () {};\n\nIntlService.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nIntlService.toString = function toString (value, format) {\n return current.toString(value, format);\n};\n\nexport default IntlService;","// date packing utilities from Kendo Spreadsheet\n\n// Julian days algorithms from http://www.hermetic.ch/cal_stud/jdn.htm#comp\nfunction dateToJulianDays(y, m, d) {\n return ((1461 * (y + 4800 + ((m - 13) / 12 | 0))) / 4 | 0) +\n ((367 * (m - 1 - 12 * ((m - 13) / 12 | 0))) / 12 | 0) -\n ((3 * (((y + 4900 + ((m - 13) / 12 | 0)) / 100 | 0))) / 4 | 0) +\n d - 32075;\n}\n\n// This uses the Google Spreadsheet approach: treat 1899-12-31 as day 1, allowing to avoid\n// implementing the \"Leap Year Bug\" yet still be Excel compatible for dates starting 1900-03-01.\nvar BASE_DATE = dateToJulianDays(1900, 0, -1);\n\nfunction packDate(year, month, date) {\n return dateToJulianDays(year, month, date) - BASE_DATE;\n}\n\nfunction packTime(hh, mm, ss, ms) {\n return (hh + (mm + (ss + ms / 1000) / 60) / 60) / 24;\n}\n\nexport default function dateToSerial(date) {\n var time = packTime(date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds());\n var serial = packDate(date.getFullYear(),\n date.getMonth(),\n date.getDate());\n return serial < 0 ? serial - 1 + time : serial + time;\n}\n","import map from './utils/map';\nimport createZip from './utils/create-zip';\nimport IntlService from './services/intl-service';\nimport dateToSerial from './utils/time';\n\nvar MIME_TYPE = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\nvar DATA_URL_PREFIX = \"data:\" + MIME_TYPE + \";base64,\";\nvar DATA_URL_OPTIONS = { compression: \"DEFLATE\", type: \"base64\" };\nvar BLOB_OPTIONS = { compression: \"DEFLATE\", type: \"blob\" };\nvar ARRAYBUFFER_OPTIONS = { compression: \"DEFLATE\", type: \"arraybuffer\" };\n\n/* eslint-disable key-spacing, no-confusing-arrow, no-constant-condition, indent, no-nested-ternary, consistent-return */\n\nfunction toDataURI(content) {\n return DATA_URL_PREFIX + content;\n}\n\nfunction indexOf(thing, array) {\n return array.indexOf(thing);\n}\n\nvar parseJSON = JSON.parse.bind(JSON);\n\nfunction ESC(val) {\n return String(val)\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\\\"/g, \""\")\n .replace(/\\'/g, \"'\");\n}\n\nfunction repeat(count, func) {\n var str = \"\";\n for (var i = 0; i < count; ++i) {\n str += func(i);\n }\n return str;\n}\n\nfunction foreach(arr, func) {\n var str = \"\";\n if (arr != null) {\n if (Array.isArray(arr)) {\n for (var i = 0; i < arr.length; ++i) {\n str += func(arr[i], i);\n }\n } else if (typeof arr == \"object\") {\n Object.keys(arr).forEach(function (key, i) {\n str += func(arr[key], key, i);\n });\n }\n }\n return str;\n}\n\nvar XMLHEAD = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\r';\n\nvar RELS = XMLHEAD + \"\\n <Relationships xmlns=\\\"http://schemas.openxmlformats.org/package/2006/relationships\\\">\\n <Relationship Id=\\\"rId3\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\\\" Target=\\\"docProps/app.xml\\\"/>\\n <Relationship Id=\\\"rId2\\\" Type=\\\"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\\\" Target=\\\"docProps/core.xml\\\"/>\\n <Relationship Id=\\\"rId1\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\\\" Target=\\\"xl/workbook.xml\\\"/>\\n </Relationships>\";\n\nvar CORE = function (ref) {\n var creator = ref.creator;\n var lastModifiedBy = ref.lastModifiedBy;\n var created = ref.created;\n var modified = ref.modified;\n\n return (XMLHEAD + \"\\n <cp:coreProperties xmlns:cp=\\\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\\\"\\n xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\" xmlns:dcterms=\\\"http://purl.org/dc/terms/\\\"\\n xmlns:dcmitype=\\\"http://purl.org/dc/dcmitype/\\\" xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\">\\n <dc:creator>\" + (ESC(creator)) + \"</dc:creator>\\n <cp:lastModifiedBy>\" + (ESC(lastModifiedBy)) + \"</cp:lastModifiedBy>\\n <dcterms:created xsi:type=\\\"dcterms:W3CDTF\\\">\" + (ESC(created)) + \"</dcterms:created>\\n <dcterms:modified xsi:type=\\\"dcterms:W3CDTF\\\">\" + (ESC(modified)) + \"</dcterms:modified>\\n</cp:coreProperties>\");\n};\n\nvar APP = function (ref) {\n var sheets = ref.sheets;\n\n return (XMLHEAD + \"\\n<Properties xmlns=\\\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\\\" xmlns:vt=\\\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\\\">\\n <Application>Microsoft Excel</Application>\\n <DocSecurity>0</DocSecurity>\\n <ScaleCrop>false</ScaleCrop>\\n <HeadingPairs>\\n <vt:vector size=\\\"2\\\" baseType=\\\"variant\\\">\\n <vt:variant>\\n <vt:lpstr>Worksheets</vt:lpstr>\\n </vt:variant>\\n <vt:variant>\\n <vt:i4>\" + (sheets.length) + \"</vt:i4>\\n </vt:variant>\\n </vt:vector>\\n </HeadingPairs>\\n <TitlesOfParts>\\n <vt:vector size=\\\"\" + (sheets.length) + \"\\\" baseType=\\\"lpstr\\\">\" + (foreach(sheets, function (sheet, i) { return sheet.options.title\n ? (\"<vt:lpstr>\" + (ESC(sheet.options.title)) + \"</vt:lpstr>\")\n : (\"<vt:lpstr>Sheet\" + (i + 1) + \"</vt:lpstr>\"); }\n )) + \"</vt:vector>\\n </TitlesOfParts>\\n <LinksUpToDate>false</LinksUpToDate>\\n <SharedDoc>false</SharedDoc>\\n <HyperlinksChanged>false</HyperlinksChanged>\\n <AppVersion>14.0300</AppVersion>\\n</Properties>\");\n};\n\nvar CONTENT_TYPES = function (ref) {\n var sheetCount = ref.sheetCount;\n var commentFiles = ref.commentFiles;\n var drawingFiles = ref.drawingFiles;\n\n return (XMLHEAD + \"\\n<Types xmlns=\\\"http://schemas.openxmlformats.org/package/2006/content-types\\\">\\n <Default Extension=\\\"png\\\" ContentType=\\\"image/png\\\"/>\\n <Default Extension=\\\"gif\\\" ContentType=\\\"image/gif\\\"/>\\n <Default Extension=\\\"jpg\\\" ContentType=\\\"image/jpeg\\\"/>\\n <Default Extension=\\\"rels\\\" ContentType=\\\"application/vnd.openxmlformats-package.relationships+xml\\\" />\\n <Default Extension=\\\"xml\\\" ContentType=\\\"application/xml\\\" />\\n <Default Extension=\\\"vml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.vmlDrawing\\\"/>\\n <Override PartName=\\\"/xl/workbook.xml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\\\" />\\n <Override PartName=\\\"/xl/styles.xml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\\\"/>\\n <Override PartName=\\\"/xl/sharedStrings.xml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\\\"/>\\n \" + (repeat(sheetCount, function (idx) { return (\"<Override PartName=\\\"/xl/worksheets/sheet\" + (idx + 1) + \".xml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\\\" />\"); })) + \"\\n \" + (foreach(commentFiles, function (filename) { return (\"<Override PartName=\\\"/xl/\" + filename + \"\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\\\"/>\"); })) + \"\\n \" + (foreach(drawingFiles, function (filename) { return (\"<Override PartName=\\\"/xl/drawings/\" + filename + \"\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.drawing+xml\\\"/>\"); })) + \"\\n <Override PartName=\\\"/docProps/core.xml\\\" ContentType=\\\"application/vnd.openxmlformats-package.core-properties+xml\\\" />\\n <Override PartName=\\\"/docProps/app.xml\\\" ContentType=\\\"application/vnd.openxmlformats-officedocument.extended-properties+xml\\\" />\\n</Types>\");\n};\n\nvar WORKBOOK = function (ref) {\n var sheets = ref.sheets;\n var filterNames = ref.filterNames;\n var userNames = ref.userNames;\n\n return (XMLHEAD + \"\\n<workbook xmlns=\\\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\">\\n <fileVersion appName=\\\"xl\\\" lastEdited=\\\"5\\\" lowestEdited=\\\"5\\\" rupBuild=\\\"9303\\\" />\\n <workbookPr defaultThemeVersion=\\\"124226\\\" />\\n <bookViews>\\n <workbookView xWindow=\\\"240\\\" yWindow=\\\"45\\\" windowWidth=\\\"18195\\\" windowHeight=\\\"7995\\\" />\\n </bookViews>\\n <sheets>\\n \" + (foreach(sheets, function (ref, i) {\n var options = ref.options;\n\n var name = options.name || options.title || (\"Sheet\" + (i + 1));\n var state = options.state || 'visible';\n return (\"<sheet name=\\\"\" + (ESC(name)) + \"\\\" state=\\\"\" + state + \"\\\" sheetId=\\\"\" + (i + 1) + \"\\\" r:id=\\\"rId\" + (i + 1) + \"\\\" />\");\n })) + \"\\n </sheets>\\n \" + (filterNames.length || userNames.length ? (\"\\n <definedNames>\\n \" + (foreach(filterNames, function (f) { return (\"\\n <definedName name=\\\"_xlnm._FilterDatabase\\\" hidden=\\\"1\\\" localSheetId=\\\"\" + (f.localSheetId) + \"\\\">\" + (ESC(quoteSheet(f.name))) + \"!\" + (ESC(f.from)) + \":\" + (ESC(f.to)) + \"</definedName>\"); })) + \"\\n \" + (foreach(userNames, function (f) { return (\"\\n <definedName name=\\\"\" + (f.name) + \"\\\" hidden=\\\"\" + (f.hidden ? 1 : 0) + \"\\\" \" + (f.localSheetId != null ? (\"localSheetId=\\\"\" + (f.localSheetId) + \"\\\"\") : '') + \">\" + (ESC(f.value)) + \"</definedName>\"); })) + \"\\n </definedNames>\") : '') + \"\\n <calcPr fullCalcOnLoad=\\\"1\\\" calcId=\\\"145621\\\" />\\n</workbook>\");\n};\n\nvar WORKSHEET = function (ref$1) {\n var frozenColumns = ref$1.frozenColumns;\n var frozenRows = ref$1.frozenRows;\n var columns = ref$1.columns;\n var defaults = ref$1.defaults;\n var data = ref$1.data;\n var index = ref$1.index;\n var mergeCells = ref$1.mergeCells;\n var autoFilter = ref$1.autoFilter;\n var filter = ref$1.filter;\n var showGridLines = ref$1.showGridLines;\n var hyperlinks = ref$1.hyperlinks;\n var validations = ref$1.validations;\n var defaultCellStyleId = ref$1.defaultCellStyleId;\n var rtl = ref$1.rtl;\n var legacyDrawing = ref$1.legacyDrawing;\n var drawing = ref$1.drawing;\n var lastRow = ref$1.lastRow;\n var lastCol = ref$1.lastCol;\n var hasDisabledCells = ref$1.hasDisabledCells;\n\n return (XMLHEAD + \"\\n<worksheet xmlns=\\\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\\\" xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\" xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\" xmlns:x14ac=\\\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\\\" mc:Ignorable=\\\"x14ac\\\">\\n \" + (lastRow && lastCol ? (\"<dimension ref=\\\"A1:\" + (ref(lastRow - 1, lastCol - 1)) + \"\\\" />\") : \"\") + \"\\n\\n <sheetViews>\\n <sheetView \" + (rtl ? 'rightToLeft=\"1\"' : '') + \" \" + (index === 0 ? 'tabSelected=\"1\"' : '') + \" workbookViewId=\\\"0\\\" \" + (showGridLines === false ? 'showGridLines=\"0\"' : '') + \">\\n \" + (frozenRows || frozenColumns ? (\"\\n <pane state=\\\"frozen\\\"\\n \" + (frozenColumns ? (\"xSplit=\\\"\" + frozenColumns + \"\\\"\") : '') + \"\\n \" + (frozenRows ? (\"ySplit=\\\"\" + frozenRows + \"\\\"\") : '') + \"\\n topLeftCell=\\\"\" + (String.fromCharCode(65 + (frozenColumns || 0)) + ((frozenRows || 0) + 1)) + \"\\\"\\n />\") : '') + \"\\n </sheetView>\\n </sheetViews>\\n\\n <sheetFormatPr x14ac:dyDescent=\\\"0.25\\\" \" + (!defaults.skipCustomHeight ? 'customHeight=\"1\"' : '') + \" defaultRowHeight=\\\"\" + (defaults.rowHeight ? defaults.rowHeight * 0.75 : 15) + \"\\\"\\n \" + (defaults.columnWidth ? (\"defaultColWidth=\\\"\" + (toWidth(defaults.columnWidth)) + \"\\\"\") : '') + \" />\\n\\n \" + (defaultCellStyleId != null || (columns && columns.length > 0) ? (\"\\n <cols>\\n \" + (!columns || !columns.length ? (\"\\n <col min=\\\"1\\\" max=\\\"16384\\\" style=\\\"\" + defaultCellStyleId + \"\\\"\\n \" + (defaults.columnWidth ? (\"width=\\\"\" + (toWidth(defaults.columnWidth)) + \"\\\"\") : '') + \" /> \") : '') + \"\\n \" + (foreach(columns, function (column, ci) {\n var columnIndex = typeof column.index === \"number\" ? column.index + 1 : (ci + 1);\n if (column.width === 0) {\n return (\"<col \" + (defaultCellStyleId != null ? (\"style=\\\"\" + defaultCellStyleId + \"\\\"\") : '') + \"\\n min=\\\"\" + columnIndex + \"\\\" max=\\\"\" + columnIndex + \"\\\" hidden=\\\"1\\\" customWidth=\\\"1\\\" />\");\n }\n return (\"<col \" + (defaultCellStyleId != null ? (\"style=\\\"\" + defaultCellStyleId + \"\\\"\") : '') + \"\\n min=\\\"\" + columnIndex + \"\\\" max=\\\"\" + columnIndex + \"\\\" customWidth=\\\"1\\\"\\n \" + (column.autoWidth\n ? (\"width=\\\"\" + (((column.width * 7 + 5) / 7 * 256) / 256) + \"\\\" bestFit=\\\"1\\\"\")\n : (\"width=\\\"\" + (toWidth(column.width)) + \"\\\"\")) + \" />\");\n })) + \"\\n </cols>\") : '') + \"\\n\\n <sheetData>\\n \" + (foreach(data, function (row, ri) {\n var rowIndex = typeof row.index === \"number\" ? row.index + 1 : (ri + 1);\n return (\"\\n <row r=\\\"\" + rowIndex + \"\\\" x14ac:dyDescent=\\\"0.25\\\"\\n \" + (row.level ? (\"outlineLevel=\\\"\" + (row.level) + \"\\\"\") : '') + \"\\n \" + (row.height === 0 ? 'hidden=\"1\"'\n : row.height ? (\"ht=\\\"\" + (toHeight(row.height)) + \"\\\" customHeight=\\\"1\\\"\") : \"\") + \">\\n \" + (foreach(row.data, function (cell) { return (\"\\n <c r=\\\"\" + (cell.ref) + \"\\\" \" + (cell.style ? (\"s=\\\"\" + (cell.style) + \"\\\"\") : '') + \" \" + (cell.type ? (\"t=\\\"\" + (cell.type) + \"\\\"\") : '') + \">\\n \" + (cell.formula != null ? writeFormula(cell.formula) : '') + \"\\n \" + (cell.value != null ? (\"<v>\" + (ESC(cell.value)) + \"</v>\") : '') + \"\\n </c>\"); })) + \"\\n </row>\\n \");})) + \"\\n </sheetData>\\n\\n \" + (hasDisabledCells ? \"<sheetProtection sheet=\\\"1\\\" objects=\\\"1\\\" scenarios=\\\"1\\\"/>\" : '') + \"\\n\\n \" + (autoFilter ? (\"<autoFilter ref=\\\"\" + (autoFilter.from) + \":\" + (autoFilter.to) + \"\\\"/>\")\n : filter ? spreadsheetFilters(filter) : '') + \"\\n\\n \" + (mergeCells.length ? (\"\\n <mergeCells count=\\\"\" + (mergeCells.length) + \"\\\">\\n \" + (foreach(mergeCells, function (ref) { return (\"<mergeCell ref=\\\"\" + ref + \"\\\"/>\"); })) + \"\\n </mergeCells>\") : '') + \"\\n\\n \" + (validations.length ? (\"\\n <dataValidations>\\n \" + (foreach(validations, function (val) { return (\"\\n <dataValidation sqref=\\\"\" + (val.sqref.join(\" \")) + \"\\\"\\n showErrorMessage=\\\"\" + (val.showErrorMessage) + \"\\\"\\n type=\\\"\" + (ESC(val.type)) + \"\\\"\\n \" + (val.type !== \"list\" ? (\"operator=\\\"\" + (ESC(val.operator)) + \"\\\"\") : '') + \"\\n allowBlank=\\\"\" + (val.allowBlank) + \"\\\"\\n showDropDown=\\\"\" + (val.showDropDown) + \"\\\"\\n \" + (val.error ? (\"error=\\\"\" + (ESC(val.error)) + \"\\\"\") : '') + \"\\n \" + (val.errorTitle ? (\"errorTitle=\\\"\" + (ESC(val.errorTitle)) + \"\\\"\") : '') + \">\\n \" + (val.formula1 ? (\"<formula1>\" + (ESC(val.formula1)) + \"</formula1>\") : '') + \"\\n \" + (val.formula2 ? (\"<formula2>\" + (ESC(val.formula2)) + \"</formula2>\") : '') + \"\\n </dataValidation>\"); })) + \"\\n </dataValidations>\") : '') + \"\\n\\n \" + (hyperlinks.length ? (\"\\n <hyperlinks>\\n \" + (foreach(hyperlinks, function (link) { return (\"\\n <hyperlink ref=\\\"\" + (link.ref) + \"\\\" r:id=\\\"\" + (link.rId) + \"\\\"/>\"); })) + \"\\n </hyperlinks>\") : '') + \"\\n\\n <pageMargins left=\\\"0.7\\\" right=\\\"0.7\\\" top=\\\"0.75\\\" bottom=\\\"0.75\\\" header=\\\"0.3\\\" footer=\\\"0.3\\\" />\\n \" + (drawing ? (\"<drawing r:id=\\\"\" + drawing + \"\\\"/>\") : '') + \"\\n \" + (legacyDrawing ? (\"<legacyDrawing r:id=\\\"\" + legacyDrawing + \"\\\"/>\") : '') + \"\\n</worksheet>\");\n};\n\nvar WORKBOOK_RELS = function (ref) {\n var count = ref.count;\n\n return (XMLHEAD + \"\\n<Relationships xmlns=\\\"http://schemas.openxmlformats.org/package/2006/relationships\\\">\\n \" + (repeat(count, function (idx) { return (\"\\n <Relationship Id=\\\"rId\" + (idx + 1) + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\\\" Target=\\\"worksheets/sheet\" + (idx + 1) + \".xml\\\" />\"); })) + \"\\n <Relationship Id=\\\"rId\" + (count + 1) + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\\\" Target=\\\"styles.xml\\\" />\\n <Relationship Id=\\\"rId\" + (count + 2) + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\\\" Target=\\\"sharedStrings.xml\\\" />\\n</Relationships>\");\n};\n\nvar WORKSHEET_RELS = function (ref) {\n var hyperlinks = ref.hyperlinks;\n var comments = ref.comments;\n var sheetIndex = ref.sheetIndex;\n var drawings = ref.drawings;\n\n return (XMLHEAD + \"\\n<Relationships xmlns=\\\"http://schemas.openxmlformats.org/package/2006/relationships\\\">\\n \" + (foreach(hyperlinks, function (link) { return (\"\\n <Relationship Id=\\\"\" + (link.rId) + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\\\" Target=\\\"\" + (ESC(link.target)) + \"\\\" TargetMode=\\\"External\\\" />\"); })) + \"\\n \" + (!comments.length ? '' : (\"\\n <Relationship Id=\\\"comment\" + sheetIndex + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\\\" Target=\\\"../comments\" + sheetIndex + \".xml\\\"/>\\n <Relationship Id=\\\"vml\" + sheetIndex + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\\\" Target=\\\"../drawings/vmlDrawing\" + sheetIndex + \".vml\\\"/>\")) + \"\\n \" + (!drawings.length ? '' : (\"\\n <Relationship Id=\\\"drw\" + sheetIndex + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\\\" Target=\\\"../drawings/drawing\" + sheetIndex + \".xml\\\"/>\")) + \"\\n</Relationships>\");\n};\n\nvar COMMENTS_XML = function (ref) {\n var comments = ref.comments;\n\n return (XMLHEAD + \"\\n<comments xmlns=\\\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\\\">\\n <authors>\\n <author></author>\\n </authors>\\n <commentList>\\n \" + (foreach(comments, function (comment) { return (\"\\n <comment ref=\\\"\" + (comment.ref) + \"\\\" authorId=\\\"0\\\">\\n <text>\\n <r>\\n <rPr>\\n <sz val=\\\"8\\\"/>\\n <color indexed=\\\"81\\\"/>\\n <rFont val=\\\"Tahoma\\\"/>\\n <charset val=\\\"1\\\"/>\\n </rPr>\\n <t>\" + (ESC(comment.text)) + \"</t>\\n </r>\\n </text>\\n </comment>\"); })) + \"\\n </commentList>\\n</comments>\");\n};\n\nvar LEGACY_DRAWING = function (ref) {\n var comments = ref.comments;\n\n return (\"<xml xmlns:v=\\\"urn:schemas-microsoft-com:vml\\\"\\n xmlns:o=\\\"urn:schemas-microsoft-com:office:office\\\"\\n xmlns:x=\\\"urn:schemas-microsoft-com:office:excel\\\">\\n <v:shapetype coordsize=\\\"21600,21600\\\" id=\\\"_x0000_t202\\\" path=\\\"m,l,21600r21600,l21600,xe\\\">\\n <v:stroke joinstyle=\\\"miter\\\"/>\\n <v:path gradientshapeok=\\\"t\\\" o:connecttype=\\\"rect\\\"/>\\n </v:shapetype>\\n \" + (foreach(comments, function (comment) { return (\"\\n <v:shape type=\\\"#_x0000_t202\\\" style=\\\"visibility: hidden\\\" fillcolor=\\\"#ffffe1\\\" o:insetmode=\\\"auto\\\">\\n <v:shadow on=\\\"t\\\" color=\\\"black\\\" obscured=\\\"t\\\"/>\\n <x:ClientData ObjectType=\\\"Note\\\">\\n <x:MoveWithCells/>\\n <x:SizeWithCells/>\\n <x:Anchor>\" + (comment.anchor) + \"</x:Anchor>\\n <x:AutoFill>False</x:AutoFill>\\n <x:Row>\" + (comment.row) + \"</x:Row>\\n <x:Column>\" + (comment.col) + \"</x:Column>\\n </x:ClientData>\\n </v:shape>\"); })) + \"\\n</xml>\");\n};\n\nvar DRAWINGS_XML = function (drawings) { return (XMLHEAD + \"\\n<xdr:wsDr xmlns:xdr=\\\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\\\"\\n xmlns:a=\\\"http://schemas.openxmlformats.org/drawingml/2006/main\\\"\\n xmlns:r=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\\\">\\n \" + (foreach(drawings, function (drawing, index) { return (\"\\n <xdr:oneCellAnchor editAs=\\\"oneCell\\\">\\n <xdr:from>\\n <xdr:col>\" + (drawing.col) + \"</xdr:col>\\n <xdr:colOff>\" + (drawing.colOffset) + \"</xdr:colOff>\\n <xdr:row>\" + (drawing.row) + \"</xdr:row>\\n <xdr:rowOff>\" + (drawing.rowOffset) + \"</xdr:rowOff>\\n </xdr:from>\\n <xdr:ext cx=\\\"\" + (drawing.width) + \"\\\" cy=\\\"\" + (drawing.height) + \"\\\" />\\n <xdr:pic>\\n <xdr:nvPicPr>\\n <xdr:cNvPr id=\\\"\" + (index + 1) + \"\\\" name=\\\"Picture \" + (index + 1) + \"\\\"/>\\n <xdr:cNvPicPr/>\\n </xdr:nvPicPr>\\n <xdr:blipFill>\\n <a:blip r:embed=\\\"\" + (drawing.imageId) + \"\\\"/>\\n <a:stretch>\\n <a:fillRect/>\\n </a:stretch>\\n </xdr:blipFill>\\n <xdr:spPr>\\n <a:prstGeom prst=\\\"rect\\\">\\n <a:avLst/>\\n </a:prstGeom>\\n </xdr:spPr>\\n </xdr:pic>\\n <xdr:clientData/>\\n </xdr:oneCellAnchor>\"); })) + \"\\n</xdr:wsDr>\"); };\n\nvar DRAWINGS_RELS_XML = function (rels) { return (XMLHEAD + \"\\n<Relationships xmlns=\\\"http://schemas.openxmlformats.org/package/2006/relationships\\\">\\n \" + (foreach(rels, function (rel) { return (\"\\n <Relationship Id=\\\"\" + (rel.rId) + \"\\\" Type=\\\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\\\" Target=\\\"\" + (rel.target) + \"\\\"/>\"); })) + \"\\n</Relationships>\"); };\n\nvar SHARED_STRINGS = function (ref) {\n var count = ref.count;\n var uniqueCount = ref.uniqueCount;\n var indexes = ref.indexes;\n\n return (XMLHEAD + \"\\n<sst xmlns=\\\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\\\" count=\\\"\" + count + \"\\\" uniqueCount=\\\"\" + uniqueCount + \"\\\">\\n \" + (foreach(Object.keys(indexes), function (index) { return (\"\\n <si><t xml:space=\\\"preserve\\\">\" + (ESC(index.substring(1))) + \"</t></si>\"); })) + \"\\n</sst>\");\n};\n\nvar STYLES = function (ref) {\n var formats = ref.formats;\n var fonts = ref.fonts;\n var fills = ref.fills;\n var borders = ref.borders;\n var styles = ref.styles;\n\n return (XMLHEAD + \"\\n<styleSheet\\n xmlns=\\\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\\\"\\n xmlns:mc=\\\"http://schemas.openxmlformats.org/markup-compatibility/2006\\\"\\n mc:Ignorable=\\\"x14ac\\\"\\n xmlns:x14ac=\\\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\\\">\\n <numFmts count=\\\"\" + (formats.length) + \"\\\">\\n \" + (foreach(formats, function (format, fi) { return (\"\\n <numFmt formatCode=\\\"\" + (ESC(format.format)) + \"\\\" numFmtId=\\\"\" + (165 + fi) + \"\\\" />\"); })) + \"\\n </numFmts>\\n <fonts count=\\\"\" + (fonts.length + 1) + \"\\\" x14ac:knownFonts=\\\"1\\\">\\n <font>\\n <sz val=\\\"11\\\" />\\n <color theme=\\\"1\\\" />\\n <name val=\\\"Calibri\\\" />\\n <family val=\\\"2\\\" />\\n <scheme val=\\\"minor\\\" />\\n </font>\\n \" + (foreach(fonts, function (font) { return (\"\\n <font>\\n \" + (font.bold ? '<b/>' : '') + \"\\n \" + (font.italic ? '<i/>' : '') + \"\\n \" + (font.underline ? '<u/>' : '') + \"\\n <sz val=\\\"\" + (font.fontSize || 11) + \"\\\" />\\n \" + (font.color ? (\"<color rgb=\\\"\" + (ESC(font.color)) + \"\\\" />\") : '<color theme=\"1\" />') + \"\\n \" + (font.fontFamily ? (\"\\n <name val=\\\"\" + (ESC(font.fontFamily)) + \"\\\" />\\n <family val=\\\"2\\\" />\\n \") : \"\\n <name val=\\\"Calibri\\\" />\\n <family val=\\\"2\\\" />\\n <scheme val=\\\"minor\\\" />\\n \") + \"\\n </font>\"); })) + \"\\n </fonts>\\n <fills count=\\\"\" + (fills.length + 2) + \"\\\">\\n <fill><patternFill patternType=\\\"none\\\"/></fill>\\n <fill><patternFill patternType=\\\"gray125\\\"/></fill>\\n \" + (foreach(fills, function (fill) { return (\"\\n \" + (fill.background ? (\"\\n <fill>\\n <patternFill patternType=\\\"solid\\\">\\n <fgColor rgb=\\\"\" + (ESC(fill.background)) + \"\\\"/>\\n </patternFill>\\n </fill>\\n \") : '')); })) + \"\\n </fills>\\n <borders count=\\\"\" + (borders.length + 1) + \"\\\">\\n <border><left/><right/><top/><bottom/><diagonal/></border>\\n \" + (foreach(borders, borderTemplate)) + \"\\n </borders>\\n <cellStyleXfs count=\\\"1\\\">\\n <xf borderId=\\\"0\\\" fillId=\\\"0\\\" fontId=\\\"0\\\" />\\n </cellStyleXfs>\\n <cellXfs count=\\\"\" + (styles.length + 1) + \"\\\">\\n <xf numFmtId=\\\"0\\\" fontId=\\\"0\\\" fillId=\\\"0\\\" borderId=\\\"0\\\" xfId=\\\"0\\\" />\\n \" + (foreach(styles, function (style) { return (\"\\n <xf xfId=\\\"0\\\"\\n \" + (style.fontId ? (\"fontId=\\\"\" + (style.fontId) + \"\\\" applyFont=\\\"1\\\"\") : '') + \"\\n \" + (style.fillId ? (\"fillId=\\\"\" + (style.fillId) + \"\\\" applyFill=\\\"1\\\"\") : '') + \"\\n \" + (style.numFmtId ? (\"numFmtId=\\\"\" + (style.numFmtId) + \"\\\" applyNumberFormat=\\\"1\\\"\") : '') + \"\\n \" + (style.textAlign || style.verticalAlign || style.wrap ? 'applyAlignment=\"1\"' : '') + \"\\n \" + (style.borderId ? (\"borderId=\\\"\" + (style.borderId) + \"\\\" applyBorder=\\\"1\\\"\") : '') + \"\\n \" + (style.disabled != null ? \"applyProtection=\\\"1\\\"\" : '') + \">\\n \" + (style.textAlign || style.verticalAlign || style.wrap ? (\"\\n <alignment\\n \" + (style.textAlign ? (\"horizontal=\\\"\" + (ESC(style.textAlign)) + \"\\\"\") : '') + \"\\n \" + (style.verticalAlign ? (\"vertical=\\\"\" + (ESC(style.verticalAlign)) + \"\\\"\") : '') + \"\\n \" + (style.indent ? (\"indent=\\\"\" + (ESC(style.indent)) + \"\\\"\") : '') + \"\\n \" + (style.wrap ? 'wrapText=\"1\"' : '') + \" />\\n \") : '') + \"\\n \" + (style.disabled != null ? (\"\\n <protection locked=\\\"\" + (style.disabled ? 1 : 0) + \"\\\" />\\n \") : '') + \"\\n </xf>\\n \"); })) + \"\\n </cellXfs>\\n <cellStyles count=\\\"1\\\">\\n <cellStyle name=\\\"Normal\\\" xfId=\\\"0\\\" builtinId=\\\"0\\\"/>\\n </cellStyles>\\n <dxfs count=\\\"0\\\" />\\n <tableStyles count=\\\"0\\\" defaultTableStyle=\\\"TableStyleMedium2\\\" defaultPivotStyle=\\\"PivotStyleMedium9\\\" />\\n</styleSheet>\");\n};\n\nfunction writeFormula(formula) {\n if (typeof formula == \"string\") {\n return (\"<f>\" + (ESC(formula)) + \"</f>\");\n }\n // array formulas\n return (\"<f t=\\\"array\\\" ref=\\\"\" + (formula.ref) + \"\\\">\" + (ESC(formula.src)) + \"</f>\");\n}\n\nfunction numChar(colIndex) {\n var letter = Math.floor(colIndex / 26) - 1;\n\n return (letter >= 0 ? numChar(letter) : \"\") + String.fromCharCode(65 + (colIndex % 26));\n}\n\nfunction ref(rowIndex, colIndex) {\n return numChar(colIndex) + (rowIndex + 1);\n}\n\nfunction $ref(rowIndex, colIndex) {\n return \"$\" + numChar(colIndex) + \"$\" + (rowIndex + 1);\n}\n\nfunction filterRowIndex(options) {\n var frozenRows = options.frozenRows || (options.freezePane || {}).rowSplit || 1;\n return frozenRows - 1;\n}\n\nfunction toWidth(px) {\n var maximumDigitWidth = 7;\n return (px / maximumDigitWidth) - (Math.floor(128 / maximumDigitWidth) / 256);\n}\n\nfunction toHeight(px) {\n return px * 0.75;\n}\n\nfunction stripFunnyChars(value) {\n return String(value)\n .replace(/[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F]/g, \"\") // leave CRLF in\n .replace(/\\r?\\n/g, \"\\r\\n\"); // make sure LF is preceded by CR\n}\n\nvar Worksheet = function Worksheet(options, sharedStrings, styles, borders) {\n this.options = options;\n this._strings = sharedStrings;\n this._styles = styles;\n this._borders = borders;\n this._validations = {};\n this._comments = [];\n this._drawings = options.drawings || [];\n this._hyperlinks = (this.options.hyperlinks || []).map(\n function (link, i) { return Object.assign({}, link, { rId: (\"link\" + i) }); });\n };\n\n Worksheet.prototype.relsToXML = function relsToXML () {\n var hyperlinks = this._hyperlinks;\n var comments = this._comments;\n var drawings = this._drawings;\n\n if (hyperlinks.length || comments.length || drawings.length) {\n return WORKSHEET_RELS({\n hyperlinks : hyperlinks,\n comments : comments,\n sheetIndex : this.options.sheetIndex,\n drawings : drawings\n });\n }\n };\n\n Worksheet.prototype.toXML = function toXML (index) {\n var this$1 = this;\n\n var mergeCells = this.options.mergedCells || [];\n var rows = this.options.rows || [];\n var data = inflate(rows, mergeCells);\n\n this._readCells(data);\n\n var autoFilter = this.options.filter;\n var filter;\n if (autoFilter && (typeof autoFilter.from === \"number\") && (typeof autoFilter.to === \"number\")) {\n // Grid enables auto filter\n autoFilter = {\n from: ref(filterRowIndex(this.options), autoFilter.from),\n to: ref(filterRowIndex(this.options), autoFilter.to)\n };\n } else if (autoFilter && autoFilter.ref && autoFilter.columns) {\n // this is probably from the Spreadsheet\n filter = autoFilter;\n autoFilter = null;\n }\n\n var validations = [];\n for (var i in this$1._validations) {\n if (Object.prototype.hasOwnProperty.call(this$1._validations, i)) {\n validations.push(this$1._validations[i]);\n }\n }\n\n var defaultCellStyleId = null;\n var defaultCellStyle = this.options.defaultCellStyle;\n if (this._hasDisabledCells) {\n if (!defaultCellStyle) {\n defaultCellStyle = { disabled: false };\n } else {\n defaultCellStyle = Object.assign({ disabled: false }, defaultCellStyle);\n }\n }\n if (defaultCellStyle) {\n defaultCellStyleId = this._lookupStyle(defaultCellStyle);\n }\n\n var freezePane = this.options.freezePane || {};\n var defaults = this.options.defaults || {};\n var lastRow = this.options.rows ? this._getLastRow() : 1;\n var lastCol = this.options.rows ? this._getLastCol() : 1;\n\n return WORKSHEET({\n frozenColumns: this.options.frozenColumns || freezePane.colSplit,\n frozenRows: this.options.frozenRows || freezePane.rowSplit,\n columns: this.options.columns,\n defaults: defaults,\n data: data,\n index: index,\n mergeCells: mergeCells,\n autoFilter: autoFilter,\n filter: filter,\n showGridLines: this.options.showGridLines,\n hyperlinks: this._hyperlinks,\n validations: validations,\n defaultCellStyleId: defaultCellStyleId,\n rtl: this.options.rtl !== undefined ? this.options.rtl : defaults.rtl,\n legacyDrawing: this._comments.length ? (\"vml\" + (this.options.sheetIndex)) : null,\n drawing: this._drawings.length ? (\"drw\" + (this.options.sheetIndex)) : null,\n lastRow: lastRow,\n lastCol: lastCol,\n hasDisabledCells: this._hasDisabledCells,\n });\n };\n\n Worksheet.prototype.commentsXML = function commentsXML () {\n if (this._comments.length) {\n return COMMENTS_XML({ comments: this._comments });\n }\n };\n\n Worksheet.prototype.drawingsXML = function drawingsXML (images) {\n if (this._drawings.length) {\n var rels = {};\n var main = this._drawings.map(function (drw) {\n var ref = parseRef(drw.topLeftCell);\n var img = rels[drw.image];\n if (!img) {\n img = rels[drw.image] = {\n rId: (\"img\" + (drw.image)),\n target: images[drw.image].target\n };\n }\n return {\n col : ref.col,\n colOffset : pixelsToExcel(drw.offsetX),\n row : ref.row,\n rowOffset : pixelsToExcel(drw.offsetY),\n width : pixelsToExcel(drw.width),\n height : pixelsToExcel(drw.height),\n imageId : img.rId\n };\n });\n return {\n main: DRAWINGS_XML(main),\n rels: DRAWINGS_RELS_XML(rels)\n };\n }\n };\n\n Worksheet.prototype.legacyDrawing = function legacyDrawing () {\n if (this._comments.length) {\n return LEGACY_DRAWING({ comments: this._comments });\n }\n };\n\n Worksheet.prototype._lookupString = function _lookupString (value) {\n var key = \"$\" + value;\n var index = this._strings.indexes[key];\n var result;\n\n if (index !== undefined) {\n result = index;\n } else {\n result = this._strings.indexes[key] = this._strings.uniqueCount;\n this._strings.uniqueCount ++;\n }\n\n this._strings.count ++;\n\n return result;\n };\n\n Worksheet.prototype._lookupStyle = function _lookupStyle (style) {\n var json = JSON.stringify(style);\n\n if (json === \"{}\") {\n return 0;\n }\n\n var index = indexOf(json, this._styles);\n\n if (index < 0) {\n index = this._styles.push(json) - 1;\n }\n\n // There is one default style\n return index + 1;\n };\n\n Worksheet.prototype._lookupBorder = function _lookupBorder (border) {\n var json = JSON.stringify(border);\n if (json === \"{}\") {\n return;\n }\n\n var index = indexOf(json, this._borders);\n if (index < 0) {\n index = this._borders.push(json) - 1;\n }\n\n // There is one default border\n return index + 1;\n };\n\n Worksheet.prototype._readCells = function _readCells (rowData) {\n var this$1 = this;\n\n for (var i = 0; i < rowData.length; i++) {\n var row = rowData[i];\n var cells = row.cells;\n\n row.data = [];\n\n for (var j = 0; j < cells.length; j++) {\n var cellData = this$1._cell(cells[j], row.index, j);\n if (cellData) {\n row.data.push(cellData);\n }\n }\n }\n };\n\n Worksheet.prototype._cell = function _cell (data, rowIndex, cellIndex) {\n var this$1 = this;\n\n if (!data || data === EMPTY_CELL) {\n return null;\n }\n\n var value = data.value;\n\n var border = {};\n\n if (data.borderLeft) {\n border.left = data.borderLeft;\n }\n\n if (data.borderRight) {\n border.right = data.borderRight;\n }\n\n if (data.borderTop) {\n border.top = data.borderTop;\n }\n\n if (data.borderBottom) {\n border.bottom = data.borderBottom;\n }\n\n if (data.dBorders) {\n border.diagonal = data.dBorders;\n }\n\n border = this._lookupBorder(border);\n\n var defStyle = this.options.defaultCellStyle || {};\n var style = { borderId: border };\n\n (function (add) {\n add(\"color\");\n add(\"background\");\n add(\"bold\");\n add(\"italic\");\n add(\"underline\");\n if (!add(\"fontFamily\")) { add(\"fontName\", \"fontFamily\"); }\n add(\"fontSize\");\n add(\"format\");\n if (!add(\"textAlign\")) { add(\"hAlign\", \"textAlign\"); }\n if (!add(\"verticalAlign\")) { add(\"vAlign\", \"verticalAlign\"); }\n add(\"wrap\");\n add(\"indent\");\n if (!add(\"disabled\")) {\n if (add(\"enable\")) {\n style.disabled = !style.enable;\n delete style.enable;\n }\n }\n if (style.disabled) {\n this$1._hasDisabledCells = true;\n }\n })(function (prop, target) {\n var val = data[prop];\n if (val === undefined) {\n val = defStyle[prop];\n }\n if (val !== undefined) {\n style[target || prop] = val;\n return true;\n }\n });\n\n var columns = this.options.columns || [];\n\n var column = columns[cellIndex];\n var type = typeof value;\n\n if (column && column.autoWidth && (!data.colSpan || data.colSpan === 1)) {\n var displayValue = value;\n\n // XXX: let's not bring kendo.toString in only for this.\n // better wait until the spreadsheet engine is available as a separate\n // component, then we can use a real Excel-like formatter.\n //\n if (type === \"number\") {\n // kendo.toString will not behave exactly like the Excel format\n // Still, it's the best we have available for estimating the character count.\n displayValue = IntlService.toString(value, data.format);\n }\n\n column.width = Math.max(column.width || 0, String(displayValue).length);\n }\n\n if (type === \"string\") {\n value = stripFunnyChars(value);\n value = this._lookupString(value);\n type = \"s\";\n } else if (type === \"number\") {\n type = \"n\";\n } else if (type === \"boolean\") {\n type = \"b\";\n value = Number(value);\n } else if (value && value.getTime) {\n type = null;\n value = dateToSerial(value);\n if (!style.format) {\n style.format = \"mm-dd-yy\";\n }\n } else {\n type = null;\n value = null;\n }\n\n style = this._lookupStyle(style);\n\n var cellName = ref(rowIndex, cellIndex);\n\n if (data.validation) {\n this._addValidation(data.validation, cellName);\n }\n\n if (data.comment) {\n var anchor = [\n cellIndex + 1,// start column\n 15, // start column offset\n rowIndex, // start row\n 10, // start row offset\n cellIndex + 3,// end column\n 15, // end column offset\n rowIndex + 3, // end row\n 4 // end row offset\n ];\n this._comments.push({\n ref : cellName,\n text : data.comment,\n row : rowIndex,\n col : cellIndex,\n anchor : anchor.join(\", \")\n });\n }\n\n return {\n value: value,\n formula: data.formula,\n type: type,\n style: style,\n ref: cellName\n };\n };\n\n Worksheet.prototype._addValidation = function _addValidation (v, ref) {\n var tmp = {\n showErrorMessage : v.type === \"reject\" ? 1 : 0,\n formula1 : v.from,\n formula2 : v.to,\n type : MAP_EXCEL_TYPE[v.dataType] || v.dataType,\n operator : MAP_EXCEL_OPERATOR[v.comparerType] || v.comparerType,\n allowBlank : v.allowNulls ? 1 : 0,\n showDropDown : v.showButton ? 0 : 1, // LOL, Excel!\n error : v.messageTemplate,\n errorTitle : v.titleTemplate\n };\n var json = JSON.stringify(tmp);\n if (!this._validations[json]) {\n this._validations[json] = tmp;\n tmp.sqref = [];\n }\n this._validations[json].sqref.push(ref);\n };\n\n Worksheet.prototype._getLastRow = function _getLastRow () {\n return countData(this.options.rows);\n };\n\n Worksheet.prototype._getLastCol = function _getLastCol () {\n var last = 0;\n this.options.rows.forEach(function(row) {\n if (row.cells) {\n last = Math.max(last, countData(row.cells));\n }\n });\n return last;\n };\n\nfunction countData(data) {\n var last = data.length;\n data.forEach(function(el) {\n if (el.index && el.index >= last) {\n last = el.index + 1;\n }\n });\n return last;\n}\n\nvar MAP_EXCEL_OPERATOR = {\n // includes only what differs; key is our operator, value is Excel\n // operator.\n greaterThanOrEqualTo : \"greaterThanOrEqual\",\n lessThanOrEqualTo : \"lessThanOrEqual\"\n};\n\nvar MAP_EXCEL_TYPE = {\n // eslint-disable-next-line id-denylist\n number: \"decimal\"\n};\n\nvar defaultFormats = {\n \"General\": 0,\n \"0\": 1,\n \"0.00\": 2,\n \"#,##0\": 3,\n \"#,##0.00\": 4,\n \"0%\": 9,\n \"0.00%\": 10,\n \"0.00E+00\": 11,\n \"# ?/?\": 12,\n \"# ??/??\": 13,\n \"mm-dd-yy\": 14,\n \"d-mmm-yy\": 15,\n \"d-mmm\": 16,\n \"mmm-yy\": 17,\n \"h:mm AM/PM\": 18,\n \"h:mm:ss AM/PM\": 19,\n \"h:mm\": 20,\n \"h:mm:ss\": 21,\n \"m/d/yy h:mm\": 22,\n \"#,##0 ;(#,##0)\": 37,\n \"#,##0 ;[Red](#,##0)\": 38,\n \"#,##0.00;(#,##0.00)\": 39,\n \"#,##0.00;[Red](#,##0.00)\": 40,\n \"mm:ss\": 45,\n \"[h]:mm:ss\": 46,\n \"mmss.0\": 47,\n \"##0.0E+0\": 48,\n \"@\": 49,\n \"[$-404]e/m/d\": 27,\n \"m/d/yy\": 30,\n \"t0\": 59,\n \"t0.00\": 60,\n \"t#,##0\": 61,\n \"t#,##0.00\": 62,\n \"t0%\": 67,\n \"t0.00%\": 68,\n \"t# ?/?\": 69,\n \"t# ??/??\": 70\n};\n\nfunction maybeRGB(value) {\n function hex(val) {\n var x = parseInt(val, 10).toString(16);\n return x.length < 2 ? \"0\" + x : x;\n }\n\n var m = /^rgba?\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([0-9.]+)\\s*)?\\)/i.exec(value.trim());\n if (m) {\n var opacity = (m[4] ? parseFloat(m[4]) : 1) * 255 | 0;\n return \"#\" + hex(opacity) + hex(m[1]) + hex(m[2]) + hex(m[3]);\n }\n return value;\n}\n\nfunction convertColor(value) {\n var color = maybeRGB(value);\n if (color.length < 6) {\n color = color.replace(/(\\w)/g, function($0, $1) {\n return $1 + $1;\n });\n }\n\n color = color.substring(1).toUpperCase();\n\n if (color.length < 8) {\n color = \"FF\" + color;\n }\n\n return color;\n}\n\nvar Workbook = function Workbook(options) {\n var this$1 = this;\n\n this.options = options || {};\n this._strings = {\n indexes: {},\n count: 0,\n uniqueCount: 0\n };\n this._styles = [];\n this._borders = [];\n this._images = this.options.images;\n this._imgId = 0;\n\n this._sheets = map(this.options.sheets || [], function (options, i) {\n options.defaults = this$1.options;\n options.sheetIndex = i + 1;\n return new Worksheet(options, this$1._strings, this$1._styles, this$1._borders);\n });\n };\n\n Workbook.prototype.imageFilename = function imageFilename (mimeType) {\n var id = ++this._imgId;\n switch (mimeType) {\n case \"image/jpg\":\n case \"image/jpeg\":\n return (\"image\" + id + \".jpg\");\n case \"image/png\":\n return (\"image\" + id + \".png\");\n case \"image/gif\":\n return (\"image\" + id + \".gif\");\n default:\n return (\"image\" + id + \".bin\"); // XXX: anything better to do here?\n }\n };\n\n Workbook.prototype.toZIP = function toZIP () {\n var this$1 = this;\n\n var zip = createZip();\n\n var docProps = zip.folder(\"docProps\");\n\n docProps.file(\"core.xml\", CORE({\n creator: this.options.creator || \"Kendo UI\",\n lastModifiedBy: this.options.creator || \"Kendo UI\",\n created: this.options.date || new Date().toJSON(),\n modified: this.options.date || new Date().toJSON()\n }));\n\n var sheetCount = this._sheets.length;\n\n docProps.file(\"app.xml\", APP({ sheets: this._sheets }));\n\n var rels = zip.folder(\"_rels\");\n rels.file(\".rels\", RELS);\n\n var xl = zip.folder(\"xl\");\n\n var xlRels = xl.folder(\"_rels\");\n xlRels.file(\"workbook.xml.rels\", WORKBOOK_RELS({ count: sheetCount }));\n\n if (this._images) {\n var media = xl.folder(\"media\");\n Object.keys(this._images).forEach(function (id) {\n var img = this$1._images[id];\n var filename = this$1.imageFilename(img.type);\n media.file(filename, img.data);\n img.target = \"../media/\" + filename;\n });\n }\n\n var sheetIds = {};\n xl.file(\"workbook.xml\", WORKBOOK({\n sheets: this._sheets,\n filterNames: map(this._sheets, function(sheet, index) {\n var options = sheet.options;\n var sheetName = (options.name || options.title || \"Sheet\" + (index + 1));\n sheetIds[sheetName.toLowerCase()] = index;\n var filter = options.filter;\n if (filter) {\n if (filter.ref) {\n // spreadsheet provides `ref`\n var a = filter.ref.split(\":\");\n var from = parseRef(a[0]);\n var to = parseRef(a[1]);\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(from.row, from.col),\n to: $ref(to.row, to.col)\n };\n } else if (typeof filter.from !== \"undefined\" && typeof filter.to !== \"undefined\") {\n // grid does this\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(filterRowIndex(options), filter.from),\n to: $ref(filterRowIndex(options), filter.to)\n };\n }\n }\n }),\n userNames: map(this.options.names || [], function(def) {\n return {\n name: def.localName,\n localSheetId: def.sheet ? sheetIds[def.sheet.toLowerCase()] : null,\n value: def.value,\n hidden: def.hidden\n };\n })\n }));\n\n var worksheets = xl.folder(\"worksheets\");\n var drawings = xl.folder(\"drawings\");\n var drawingsRels = drawings.folder(\"_rels\");\n var sheetRels = worksheets.folder(\"_rels\");\n var commentFiles = [];\n var drawingFiles = [];\n var hasDisabledCells = false;\n\n for (var idx = 0; idx < sheetCount; idx++) {\n var sheet = this$1._sheets[idx];\n var sheetName = \"sheet\" + (idx + 1) + \".xml\";\n var sheetXML = sheet.toXML(idx); // must be called before relsToXML\n var relsXML = sheet.relsToXML();\n var commentsXML = sheet.commentsXML();\n var legacyDrawing = sheet.legacyDrawing();\n var drawingsXML = sheet.drawingsXML(this$1._images);\n\n if (sheet._hasDisabledCells) {\n hasDisabledCells = true;\n }\n\n if (relsXML) {\n sheetRels.file(sheetName + \".rels\", relsXML);\n }\n if (commentsXML) {\n var name = \"comments\" + (sheet.options.sheetIndex) + \".xml\";\n xl.file(name, commentsXML);\n commentFiles.push(name);\n }\n if (legacyDrawing) {\n drawings.file((\"vmlDrawing\" + (sheet.options.sheetIndex) + \".vml\"), legacyDrawing);\n }\n if (drawingsXML) {\n var name$1 = \"drawing\" + (sheet.options.sheetIndex) + \".xml\";\n drawings.file(name$1, drawingsXML.main);\n drawingsRels.file((name$1 + \".rels\"), drawingsXML.rels);\n drawingFiles.push(name$1);\n }\n\n worksheets.file(sheetName, sheetXML);\n }\n\n var borders = map(this._borders, parseJSON);\n\n var styles = map(this._styles, parseJSON);\n\n var hasFont = function(style) {\n return style.underline || style.bold || style.italic || style.color || style.fontFamily || style.fontSize;\n };\n\n var convertFontSize = function(value) {\n var fontInPx = Number(value);\n var fontInPt;\n\n if (fontInPx) {\n fontInPt = fontInPx * 3 / 4;\n }\n\n return fontInPt;\n };\n\n var fonts = map(styles, function(style) {\n if (style.fontSize) {\n style.fontSize = convertFontSize(style.fontSize);\n }\n\n if (style.color) {\n style.color = convertColor(style.color);\n }\n\n if (hasFont(style)) {\n return style;\n }\n });\n\n var formats = map(styles, function(style) {\n if (style.format && defaultFormats[style.format] === undefined) {\n return style;\n }\n });\n\n var fills = map(styles, function(style) {\n if (style.background) {\n style.background = convertColor(style.background);\n return style;\n }\n });\n\n xl.file(\"styles.xml\", STYLES({\n fonts: fonts,\n fills: fills,\n formats: formats,\n borders: borders,\n styles: map(styles, function(style) {\n var result = {};\n\n if (hasFont(style)) {\n result.fontId = indexOf(style, fonts) + 1;\n }\n\n if (style.background) {\n result.fillId = indexOf(style, fills) + 2;\n }\n\n result.textAlign = style.textAlign;\n result.indent = style.indent;\n result.verticalAlign = style.verticalAlign;\n result.wrap = style.wrap;\n result.borderId = style.borderId;\n\n if (style.format) {\n if (defaultFormats[style.format] !== undefined) {\n result.numFmtId = defaultFormats[style.format];\n } else {\n result.numFmtId = 165 + indexOf(style, formats);\n }\n }\n\n if (hasDisabledCells) {\n result.disabled = !!style.disabled;\n }\n\n return result;\n })\n }));\n\n xl.file(\"sharedStrings.xml\", SHARED_STRINGS(this._strings));\n\n zip.file(\"[Content_Types].xml\", CONTENT_TYPES({\n sheetCount: sheetCount,\n commentFiles: commentFiles,\n drawingFiles: drawingFiles\n }));\n\n return zip;\n };\n\n Workbook.prototype.toDataURL = function toDataURL () {\n var zip = this.toZIP();\n\n return zip.generateAsync ? zip.generateAsync(DATA_URL_OPTIONS).then(toDataURI) : toDataURI(zip.generate(DATA_URL_OPTIONS));\n };\n\n Workbook.prototype.toBlob = function toBlob () {\n var zip = this.toZIP();\n if (zip.generateAsync) {\n return zip.generateAsync(BLOB_OPTIONS);\n }\n return new Blob([ zip.generate(ARRAYBUFFER_OPTIONS) ], { type: MIME_TYPE });\n };\n\nfunction borderStyle(width) {\n var alias = \"thin\";\n\n if (width === 2) {\n alias = \"medium\";\n } else if (width === 3) {\n alias = \"thick\";\n }\n\n return alias;\n}\n\nfunction borderSideTemplate(name, style) {\n var result = \"\";\n\n if (style) {\n result += \"<\" + name + \" style=\\\"\" + borderStyle(style.size) + \"\\\">\";\n if (style.color) {\n result += \"<color rgb=\\\"\" + convertColor(style.color) + \"\\\"/>\";\n }\n result += \"</\" + name + \">\";\n }\n\n return result;\n}\n\nfunction borderTemplate(border) {\n var diag = border.diagonal ? border.diagonal.type : 0;\n return (\"<border \" + (diag & 2 ? 'diagonalUp=\"true\"' : '') + \" \" + (diag & 1 ? 'diagonalDown=\"true\"' : '') + \">\\n \" + (borderSideTemplate(\"left\", border.left)) + \"\\n \" + (borderSideTemplate(\"right\", border.right)) + \"\\n \" + (borderSideTemplate(\"top\", border.top)) + \"\\n \" + (borderSideTemplate(\"bottom\", border.bottom)) + \"\\n \" + (borderSideTemplate(\"diagonal\", border.diagonal)) + \"\\n </border>\");\n}\n\nvar EMPTY_CELL = {};\nfunction inflate(rows, mergedCells) {\n var rowData = [];\n var rowsByIndex = [];\n\n indexRows(rows, function(row, index) {\n var data = {\n _source: row,\n index: index,\n height: row.height,\n level: row.level,\n cells: []\n };\n\n rowData.push(data);\n rowsByIndex[index] = data;\n });\n\n var sorted = sortByIndex(rowData).slice(0);\n var ctx = {\n rowData: rowData,\n rowsByIndex: rowsByIndex,\n mergedCells: mergedCells\n };\n\n for (var i = 0; i < sorted.length; i++) {\n fillCells(sorted[i], ctx);\n delete sorted[i]._source;\n }\n\n return sortByIndex(rowData);\n}\n\nfunction indexRows(rows, callback) {\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n if (!row) {\n continue;\n }\n\n var index = row.index;\n if (typeof index !== \"number\") {\n index = i;\n }\n\n callback(row, index);\n }\n}\n\nfunction sortByIndex(items) {\n return items.sort(function(a, b) {\n return a.index - b.index;\n });\n}\n\nfunction pushUnique(array, el) {\n if (array.indexOf(el) < 0) {\n array.push(el);\n }\n}\n\nfunction getSpan(mergedCells, ref) {\n for (var i = 0; i < mergedCells.length; ++i) {\n var range = mergedCells[i];\n var a = range.split(\":\");\n var topLeft = a[0];\n if (topLeft === ref) {\n var bottomRight = a[1];\n topLeft = parseRef(topLeft);\n bottomRight = parseRef(bottomRight);\n return {\n rowSpan: bottomRight.row - topLeft.row + 1,\n colSpan: bottomRight.col - topLeft.col + 1\n };\n }\n }\n}\n\nfunction parseRef(ref) {\n function getcol(str) {\n var upperStr = str.toUpperCase();\n var col = 0;\n for (var i = 0; i < upperStr.length; ++i) {\n col = col * 26 + upperStr.charCodeAt(i) - 64;\n }\n return col - 1;\n }\n\n function getrow(str) {\n return parseInt(str, 10) - 1;\n }\n\n var m = /^([a-z]+)(\\d+)$/i.exec(ref);\n return {\n row: getrow(m[2]),\n col: getcol(m[1])\n };\n}\n\nfunction pixelsToExcel(px) {\n return Math.round(px * 9525);\n}\n\nfunction fillCells(data, ctx) {\n var row = data._source;\n var rowIndex = data.index;\n var cells = row.cells;\n var cellData = data.cells;\n\n if (!cells) {\n return;\n }\n\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i] || EMPTY_CELL;\n\n var rowSpan = cell.rowSpan || 1;\n var colSpan = cell.colSpan || 1;\n\n var cellIndex = insertCell(cellData, cell);\n var topLeftRef = ref(rowIndex, cellIndex);\n\n if (rowSpan === 1 && colSpan === 1) {\n // could still be merged: the spreadsheet does not send\n // rowSpan/colSpan, but mergedCells is already populated.\n // https://github.com/telerik/kendo-ui-core/issues/2401\n var tmp = getSpan(ctx.mergedCells, topLeftRef);\n if (tmp) {\n colSpan = tmp.colSpan;\n rowSpan = tmp.rowSpan;\n }\n }\n\n spanCell(cell, cellData, cellIndex, colSpan);\n\n if (rowSpan > 1 || colSpan > 1) {\n pushUnique(ctx.mergedCells,\n topLeftRef + \":\" + ref(rowIndex + rowSpan - 1,\n cellIndex + colSpan - 1));\n }\n\n if (rowSpan > 1) {\n for (var ri = rowIndex + 1; ri < rowIndex + rowSpan; ri++) {\n var nextRow = ctx.rowsByIndex[ri];\n if (!nextRow) {\n nextRow = ctx.rowsByIndex[ri] = { index: ri, cells: [] };\n ctx.rowData.push(nextRow);\n }\n\n spanCell(cell, nextRow.cells, cellIndex - 1, colSpan + 1);\n }\n }\n }\n}\n\nfunction insertCell(data, cell) {\n var index;\n\n if (typeof cell.index === \"number\") {\n index = cell.index;\n insertCellAt(data, cell, cell.index);\n } else {\n index = appendCell(data, cell);\n }\n\n return index;\n}\n\nfunction insertCellAt(data, cell, index) {\n data[index] = cell;\n}\n\nfunction appendCell(data, cell) {\n var index = data.length;\n\n for (var i = 0; i < data.length + 1; i++) {\n if (!data[i]) {\n data[i] = cell;\n index = i;\n break;\n }\n }\n\n return index;\n}\n\nfunction spanCell(cell, row, startIndex, colSpan) {\n for (var i = 1; i < colSpan; i++) {\n var tmp = {\n borderTop : cell.borderTop,\n borderRight : cell.borderRight,\n borderBottom : cell.borderBottom,\n borderLeft : cell.borderLeft\n };\n insertCellAt(row, tmp, startIndex + i);\n }\n}\n\nvar SPREADSHEET_FILTERS = function (ref$1) {\n var ref = ref$1.ref;\n var columns = ref$1.columns;\n var generators = ref$1.generators;\n\n return (\"\\n<autoFilter ref=\\\"\" + ref + \"\\\">\\n \" + (foreach(columns, function (col) { return (\"\\n <filterColumn colId=\\\"\" + (col.index) + \"\\\">\\n \" + (generators[col.filter](col)) + \"\\n </filterColumn>\\n \"); })) + \"\\n</autoFilter>\");\n};\n\nvar SPREADSHEET_CUSTOM_FILTER = function (ref) {\n var logic = ref.logic;\n var criteria = ref.criteria;\n\n return (\"\\n<customFilters \" + (logic === 'and' ? 'and=\"1\"' : '') + \">\\n\" + (foreach(criteria, function (f) {\n var op = spreadsheetFilters.customOperator(f);\n var val = spreadsheetFilters.customValue(f);\n return (\"<customFilter \" + (op ? (\"operator=\\\"\" + op + \"\\\"\") : '') + \" val=\\\"\" + val + \"\\\"/>\");\n})) + \"\\n</customFilters>\");\n};\n\nvar SPREADSHEET_DYNAMIC_FILTER = function (ref) {\n var type = ref.type;\n\n return (\"<dynamicFilter type=\\\"\" + (spreadsheetFilters.dynamicFilterType(type)) + \"\\\" />\");\n};\n\nvar SPREADSHEET_TOP_FILTER = function (ref) {\n var type = ref.type;\n var value = ref.value;\n\n return (\"<top10 percent=\\\"\" + (/percent$/i.test(type) ? 1 : 0) + \"\\\"\\n top=\\\"\" + (/^top/i.test(type) ? 1 : 0) + \"\\\"\\n val=\\\"\" + value + \"\\\" />\");\n};\n\nvar SPREADSHEET_VALUE_FILTER = function (ref) {\n var blanks = ref.blanks;\n var values = ref.values;\n\n return (\"<filters \" + (blanks ? 'blank=\"1\"' : '') + \">\\n \" + (foreach(values, function (value) { return (\"\\n <filter val=\\\"\" + value + \"\\\" />\"); })) + \"\\n </filters>\");\n};\n\nfunction spreadsheetFilters(filter) {\n return SPREADSHEET_FILTERS({\n ref: filter.ref,\n columns: filter.columns,\n generators: {\n custom : SPREADSHEET_CUSTOM_FILTER,\n dynamic : SPREADSHEET_DYNAMIC_FILTER,\n top : SPREADSHEET_TOP_FILTER,\n value : SPREADSHEET_VALUE_FILTER\n }\n });\n}\n\nspreadsheetFilters.customOperator = function(f) {\n return {\n eq : \"equal\",\n gt : \"greaterThan\",\n gte : \"greaterThanOrEqual\",\n lt : \"lessThan\",\n lte : \"lessThanOrEqual\",\n ne : \"notEqual\",\n\n // These are not in the spec, but seems to be how Excel does\n // it (see customValue below). For the non-negated versions,\n // the operator attribute is missing completely.\n doesnotstartwith: \"notEqual\",\n doesnotendwith: \"notEqual\",\n doesnotcontain: \"notEqual\",\n doesnotmatch: \"notEqual\"\n }[f.operator.toLowerCase()];\n};\n\nfunction quoteSheet(name) {\n if (/^\\'/.test(name)) { // assume already quoted, the Spreadsheet does it.\n return name;\n }\n if (/^[a-z_][a-z0-9_]*$/i.test(name)) {\n return name; // no need to quote it\n }\n return \"'\" + name.replace(/\\x27/g, \"\\\\'\") + \"'\";\n}\n\nspreadsheetFilters.customValue = function(f) {\n function esc(str) {\n return str.replace(/([*?])/g, \"~$1\");\n }\n\n switch (f.operator.toLowerCase()) {\n case \"startswith\":\n case \"doesnotstartwith\":\n return esc(f.value) + \"*\";\n\n case \"endswith\":\n case \"doesnotendwith\":\n return \"*\" + esc(f.value);\n\n case \"contains\":\n case \"doesnotcontain\":\n return \"*\" + esc(f.value) + \"*\";\n\n default:\n return f.value;\n }\n};\n\nspreadsheetFilters.dynamicFilterType = function(type) {\n return {\n quarter1 : \"Q1\",\n quarter2 : \"Q2\",\n quarter3 : \"Q3\",\n quarter4 : \"Q4\",\n january : \"M1\",\n february : \"M2\",\n march : \"M3\",\n april : \"M4\",\n may : \"M5\",\n june : \"M6\",\n july : \"M7\",\n august : \"M8\",\n september : \"M9\",\n october : \"M10\",\n november : \"M11\",\n december : \"M12\"\n }[type.toLowerCase()] || type;\n};\n\nexport {\n Workbook,\n Worksheet\n};\n","import JSZip from '@progress/jszip-esm';\n\nexport default function createZip() {\n return new JSZip();\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOMServer from 'react-dom/server';\n/* tslint:disable align */\n/* tslint:disable:no-use-before-declare */\nvar compileTemplate = function (Template, context, updateContext) {\n var result = function (data) {\n updateContext(context, data);\n var templateResult = ReactDOMServer.renderToStaticMarkup(React.createElement(Template, __assign({}, context)));\n var parsed = Number(templateResult);\n return isNaN(parsed)\n ? templateResult\n : parsed;\n };\n return result;\n};\nvar updateGroupHeaderContext = function (context, data) {\n context.$implicit = context.group = data;\n context.field = data.field;\n context.value = data.value;\n context.aggregates = data.aggregates;\n};\nvar updateGroupFooterContext = function (context, data) {\n context.group = data.group;\n context.$implicit = context.aggregates = data;\n};\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nvar updateFooterContext = function (_context, _data) { };\n/**\n * @hidden\n */\nexport var toExporterColumns = function (sourceColumns) {\n var exporterColumns = [];\n var columnIndex = 0;\n var addColumns = function (columns, result, level) {\n columns.forEach(function (column) {\n if (column.level === level) {\n var exporterColumn = new ExporterColumn(column, columnIndex);\n result.push(exporterColumn);\n if (column.children && column.children.length > 1) {\n var children = exporterColumn.columns = [];\n addColumns(column.children, children, level + 1);\n }\n else {\n columnIndex++;\n }\n }\n });\n };\n addColumns(sourceColumns, exporterColumns, 0);\n return exporterColumns;\n};\n/**\n * @hidden\n */\nvar ExporterColumn = /** @class */ (function () {\n function ExporterColumn(column, columnIndex) {\n this.title = column.title;\n this.field = column.field;\n this.hidden = column.hidden;\n this.locked = column.locked;\n this.width = column.width;\n this.headerCellOptions = column.headerCellOptions;\n this.cellOptions = column.cellOptions;\n this.groupHeaderCellOptions = column.groupHeaderCellOptions;\n this.groupFooterCellOptions = column.groupFooterCellOptions;\n this.footerCellOptions = column.footerCellOptions;\n if (column.footer) {\n this.footerTemplate = compileTemplate(column.footer, {\n $implicit: column,\n column: column,\n columnIndex: columnIndex\n }, updateFooterContext);\n }\n if (column.groupFooter) {\n this.groupFooterTemplate = compileTemplate(column.groupFooter, {\n column: column,\n field: column.field\n }, updateGroupFooterContext);\n }\n if (column.groupHeader) {\n this.groupHeaderTemplate =\n compileTemplate(column.groupHeader, {}, updateGroupHeaderContext);\n }\n }\n return ExporterColumn;\n}());\nexport { ExporterColumn };\n","import { ExcelExporter, Workbook } from '@progress/kendo-ooxml';\nimport { toExporterColumns } from './ExporterColumns';\nvar getDepth = function (data) {\n return Math.max.apply(Math, data.map(function (i) { return i.level; })) + 1;\n};\n/**\n * @hidden\n */\nexport var workbookOptions = function (options) {\n var columns = toExporterColumns(options.columns);\n var exporter = new ExcelExporter({\n columns: columns,\n data: options.data,\n filterable: options.filterable,\n groups: options.group,\n paddingCellOptions: options.paddingCellOptions,\n headerPaddingCellOptions: options.headerPaddingCellOptions,\n hierarchy: options.hierarchy ? { depth: getDepth(options.data), itemLevel: function (item) { return item.level; } } : null,\n collapsible: options.collapsible\n });\n var result = exporter.workbook();\n result.creator = options.creator;\n result.date = options.date;\n result.rtl = options.dir === 'rtl';\n return result;\n};\n/**\n * @hidden\n */\nexport var toDataURL = function (options) {\n var workbook = new Workbook(options);\n return workbook.toDataURL();\n};\n/**\n * @hidden\n */\nexport var isWorkbookOptions = function (value) {\n return value && value.sheets;\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-excel-export',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1642516698,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { workbookOptions, toDataURL, isWorkbookOptions } from './ooxml/workbook';\nimport * as licensing from '@progress/kendo-licensing';\nimport { packageMetadata } from './package-metadata';\nvar ExcelExport = /** @class */ (function (_super) {\n __extends(ExcelExport, _super);\n function ExcelExport(props) {\n var _this = _super.call(this, props) || this;\n _this.saveFile = function (dataURL) {\n saveAs(dataURL, _this.props.fileName, {\n forceProxy: _this.props.forceProxy,\n proxyURL: _this.props.proxyURL\n });\n };\n _this.extractColumns = function (children, level) {\n if (level === void 0) { level = 0; }\n return Array.isArray(children)\n ? children.map(function (child) {\n return _this.extractChild(child, level);\n })\n : [children, _this.extractChild(children, level)];\n };\n _this.extractChild = function (child, level) {\n if (level === void 0) { level = 0; }\n return React.isValidElement(child)\n ? __assign({}, child.props, { width: child.props.width && parseInt(\"\" + child.props.width, 10), level: level, children: child.props.children\n && _this.extractColumns(child.props.children, level + 1) }) : __assign({}, child, { level: level, children: child.children && _this.extractColumns(child.children, level + 1) });\n };\n _this.getExportData = function (exportData) {\n var result;\n if (exportData) {\n if (Array.isArray(exportData)) {\n result = {\n data: exportData\n };\n }\n else {\n result = exportData;\n }\n }\n else {\n result = {\n data: _this.props.data,\n group: _this.props.group\n };\n }\n return result;\n };\n if (typeof licensing !== 'undefined') {\n licensing.validatePackage(packageMetadata);\n }\n else {\n var message = \"License activation failed for \" + packageMetadata.name + \"\\n\";\n message += 'The @progress/kendo-licensing script is not loaded.\\n';\n message += \"See \" + packageMetadata.licensingDocsUrl + \" for more information.\\n\";\n console.warn(message);\n }\n _this.save = _this.save.bind(_this);\n _this.toDataURL = _this.toDataURL.bind(_this);\n _this.workbookOptions = _this.workbookOptions.bind(_this);\n return _this;\n }\n /**\n * Saves the data to Excel.\n *\n * @param exportData - An optional parameter. Can be the data that will be exported or the [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}).\n * @param columns - An optional parameter. If present, it will be used instead of the columns prop or the child column components.\n */\n ExcelExport.prototype.save = function (exportData, columns) {\n var _this = this;\n this.toDataURL(exportData, columns)\n .then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (_this.props.onExportComplete) {\n _this.props.onExportComplete.call(undefined, { target: _this });\n }\n _this.saveFile.apply(_this, args);\n });\n };\n /**\n * Returns a promise which will be resolved with the file data URI.\n *\n * @param exportData - The optional data or the [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}) that will be used to generate the data URI.\n * @param externalColumns - The optional columns that will be used.\n * @returns {Promise<string>} - The promise that will be resolved by the file data URI.\n */\n ExcelExport.prototype.toDataURL = function (exportData, columns) {\n var options = isWorkbookOptions(exportData)\n ? exportData\n : this.workbookOptions(exportData, columns);\n return toDataURL(options);\n };\n /**\n * Based on the specified columns and data, returns [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}).\n *\n * @param exportData - The optional data that will be exported.\n * @param externalColumns - The optional columns that will be used.\n * @returns {WorkbookOptions} - The workbook options.\n */\n // tslint:enable:max-line-length\n ExcelExport.prototype.workbookOptions = function (exportData, externalColumns) {\n var currentData = this.getExportData(exportData);\n var children = this.props.children;\n var gridColumns = children && children.type &&\n children.type.displayName === 'KendoReactGrid' &&\n children.props && React.Children.toArray(children.props.children);\n var columns = this.extractColumns(gridColumns ||\n externalColumns ||\n this.props.columns ||\n React.Children.toArray(children));\n var options = workbookOptions({\n columns: columns,\n data: currentData.data,\n group: currentData.group,\n filterable: this.props.filterable,\n creator: this.props.creator,\n date: this.props.date,\n dir: this.props.dir,\n hierarchy: this.props.hierarchy,\n paddingCellOptions: this.props.paddingCellOptions,\n headerPaddingCellOptions: this.props.headerPaddingCellOptions\n });\n return options;\n };\n /**\n * @hidden\n */\n ExcelExport.prototype.render = function () {\n return this.props.children || null;\n };\n /**\n * @hidden\n */\n ExcelExport.propTypes = {\n children: PropTypes.any,\n columns: PropTypes.arrayOf(PropTypes.any),\n creator: PropTypes.string,\n data: PropTypes.any,\n date: PropTypes.any,\n filterable: PropTypes.bool,\n fileName: PropTypes.string,\n forceProxy: PropTypes.bool,\n group: PropTypes.any,\n headerPaddingCellOptions: PropTypes.any,\n paddingCellOptions: PropTypes.any,\n proxyURL: PropTypes.string,\n dir: PropTypes.string,\n hierarchy: PropTypes.bool,\n collapsible: PropTypes.bool\n };\n /**\n * @hidden\n */\n ExcelExport.defaultProps = {\n fileName: 'Export.xlsx',\n forceProxy: false,\n collapsible: false\n };\n return ExcelExport;\n}(React.Component));\nexport default ExcelExport;\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport ILicenseUsageReport from '../../model/ILicenseUsageReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\ninterface ILocation {\r\n licenseType:string;\r\n changeExcelRef: any;\r\n selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n { field: \"totalCourses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function LicenseUsageReport(props: ILocation) {\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [filter, setFilter] = React.useState(initialFilter);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [rowData, setRowData] = useState<ILicenseUsageReport[]>([]);\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const GetLicenseUsageReport = () => {\r\n ReportsService.GetLicenseUsageReport(+orginalSchoolYear.id,props.licenseType).then(response => {\r\n setRowData(response.data)\r\n props.changeExcelRef(_export)\r\n })\r\n }\r\n useEffect(() => {\r\n GetLicenseUsageReport();\r\n }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n const filterReportData = (data: any, filter: any) => {\r\n let report = rowData;\r\n return filterBy(report, filter);\r\n }\r\n const onFilterChange = (e: any) => {\r\n setPage(initialDataState)\r\n setFilter(e.filter)\r\n }\r\n\r\n\r\n return (\r\n <ExcelExport data={rowData} ref={_export} fileName={props.licenseType+\"_License_Usage_Report_\" + new Date().toDateString()}>\r\n <Grid\r\n data={filterReportData(orderBy(rowData, sort),filter).slice(page.skip, page.take + page.skip)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n onPageChange={pageChange}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => {\r\n setSort(e.sort);\r\n }}\r\n filterable={true}\r\n filter={filter}\r\n onFilterChange={onFilterChange}\r\n style={{width:\"auto\"}}\r\n scrollable={\"scrollable\"}>\r\n <GridColumn field=\"studentLocationCode\" filterable={true} width=\"180px\" title=\"Student Location\"></GridColumn>\r\n <GridColumn field=\"studentId\" filterable={false} width=\"130px\" title=\"Student Id\"></GridColumn>\r\n <GridColumn field=\"firstName\" filterable={false} title=\"First Name\"></GridColumn>\r\n <GridColumn field=\"lastName\" filterable={false} title=\"Last Name\"></GridColumn>\r\n <GridColumn field=\"courseLocationCode\" filterable={true} width=\"180px\" title=\"Course Location\"></GridColumn>\r\n <GridColumn field=\"vendorName\" filterable={false} title=\"Vendor\"></GridColumn>\r\n <GridColumn field=\"licenseType\" filterable={false} title=\"License Type\"></GridColumn>\r\n <GridColumn field=\"courses\" filterable={false} title=\"Courses\" ></GridColumn>\r\n <GridColumn field=\"licenseConsumed\" filterable={false} title=\"License Consumed\" ></GridColumn>\r\n </Grid>\r\n </ExcelExport>\r\n )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ILicenseAllocationReport from '../../model/ILicenseAllocationReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport licenseAllocationService from '../../services/LicenseAllocation'\r\nimport { LocationContext, Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\ninterface ILocation {\r\n id: string,\r\n changeExcelRef: any\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n};\r\nconst initialSort: Array<SortDescriptor> = [\r\n { field: \"quantityAssigned\", dir: \"desc\" },\r\n];\r\n\r\nexport default function LicenseAllocationReport(props: ILocation) {\r\n const { locationCode } = useContext(LocationContext);\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [filter, setFilter] = React.useState(initialFilter);\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [rowData, setRowData] = useState<ILicenseAllocationReport[]>([]);\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n\r\n\r\n const GetSchoolLicenseUsageReportForSelectedSchool = () => {\r\n licenseAllocationService.GetSchoolLicenseUsageReport(locationCode, orginalSchoolYear.id).then(response => {\r\n setRowData(response.data)\r\n props.changeExcelRef(_export)\r\n })\r\n }\r\n\r\n const GetSchoolLicenseUsageReportForAllSchools = () => {\r\n licenseAllocationService.GetSchoolLicenseUsageReport(props.id, orginalSchoolYear.id).then(response => {\r\n setRowData(response.data)\r\n props.changeExcelRef(_export)\r\n })\r\n }\r\n\r\n const GetSchoolLicenseUsageReport = () => {\r\n if (props.id != \"AllSchools\") {\r\n GetSchoolLicenseUsageReportForSelectedSchool()\r\n } else {\r\n GetSchoolLicenseUsageReportForAllSchools();\r\n\r\n }\r\n }\r\n\r\n\r\n const onFilterChange = (e: any) => {\r\n setPage(initialDataState)\r\n setFilter(e.filter)\r\n }\r\n\r\n const getQuantityAllocated = (props: any) => {\r\n if (props.dataItem.unlimittedQuantityAllocated) {\r\n return <td>Unlimited</td>\r\n } else {\r\n return <td>{props.dataItem.quantityAllocated}</td>\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n GetSchoolLicenseUsageReport();\r\n }, [locationCode, orginalSchoolYear.id, props.id]);\r\n\r\n\r\n return (\r\n <ExcelExport data={rowData} ref={_export} fileName={\"License_Allocation_Report\" + ' ' + new Date().toDateString()}>\r\n <Grid\r\n data={filterBy(orderBy(rowData, sort), filter).slice(page.skip, page.take + page.skip)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50 , 100], info: true }}\r\n onPageChange={pageChange}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => {\r\n if (e.sort.length === 0) {\r\n if (sort.length != 0 && sort[0].dir == \"asc\") {\r\n setSort([{ field: \"quantityAssigned\", dir: \"desc\" }])\r\n } else {\r\n setSort([{ field: \"quantityAssigned\", dir: \"asc\" }])\r\n }\r\n } else {\r\n setSort(e.sort);\r\n }\r\n\r\n }}\r\n filterable={props.id != \"AllSchools\" ? false : true}\r\n filter={filter}\r\n onFilterChange={onFilterChange}\r\n scrollable={\"none\"}>\r\n <GridColumn field=\"district\" filterable={false} title=\"District\"></GridColumn>\r\n <GridColumn field=\"locationCode\" filterable={props.id != \"AllSchools\" ? false : true} title=\"School Location\"></GridColumn>\r\n <GridColumn field=\"schoolName\" filterable={false} title=\"School Name\"></GridColumn>\r\n <GridColumn field=\"vendorName\" filterable={false} title=\"Vendor Name\"></GridColumn>\r\n <GridColumn field=\"quantityAllocated\" cell={getQuantityAllocated} filterable={false} title=\"Quantity Allocated\" ></GridColumn>\r\n <GridColumn field=\"quantityAssigned\" filterable={false} title=\"Quantity Assigned\"></GridColumn>\r\n </Grid>\r\n </ExcelExport>\r\n )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport IPublishedCoursesReport from '../../model/IPublishedCoursesReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\n\r\ninterface ILocation {\r\n changeExcelRef: any;\r\n selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\n\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n { field: \"totalCourses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function PublishedCoursesReport(props: ILocation) {\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [filter, setFilter] = React.useState(initialFilter);\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [rowData, setRowData] = useState<IPublishedCoursesReport[]>([]);\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n\r\n const onFilterChange = (e: any) => {\r\n setPage(initialDataState)\r\n setFilter(e.filter)\r\n }\r\n\r\n const GetPublishedCoursesReport = () => {\r\n ReportsService.GetPublishedCoursesReport(+orginalSchoolYear.id).then(response => {\r\n setRowData(response.data)\r\n props.changeExcelRef(_export)\r\n })\r\n }\r\n useEffect(() => {\r\n GetPublishedCoursesReport();\r\n }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n\r\n return (\r\n <ExcelExport data={rowData} ref={_export} fileName={\"Published_Courses_Report\" + ' ' + new Date().toDateString()}>\r\n <Grid\r\n data={filterBy(orderBy(rowData, sort), filter).slice(page.skip, page.take + page.skip)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50, 100], info: true }}\r\n onPageChange={pageChange}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => {\r\n if (e.sort.length === 0) {\r\n if (sort.length != 0 && sort[0].dir == \"asc\") {\r\n setSort([{ field: \"totalCourses\", dir: \"desc\" }])\r\n } else {\r\n setSort([{ field: \"totalCourses\", dir: \"asc\" }])\r\n }\r\n } else {\r\n setSort(e.sort);\r\n }\r\n }}\r\n filterable={true}\r\n filter={filter}\r\n onFilterChange={onFilterChange}\r\n scrollable={\"none\"}>\r\n <GridColumn field=\"locationCode\" filterable={true} title=\"Location Code\"></GridColumn>\r\n <GridColumn field=\"totalCourses\" filterable={false} title=\"Total\"></GridColumn>\r\n <GridColumn field=\"publishedCourses\" filterable={false} title=\"Published\"></GridColumn>\r\n <GridColumn field=\"starsPublishedCourses\" filterable={false} title=\"Stars Published\"></GridColumn>\r\n <GridColumn field=\"manualPublishedCourses\" filterable={false} title=\"Manual Published\"></GridColumn>\r\n <GridColumn field=\"sharedInstructionPublishedCourses\" filterable={false} title=\"Shared Instruction Published\"></GridColumn>\r\n\r\n </Grid>\r\n </ExcelExport>\r\n )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ITotalCountReport from '../../model/ITotalCountReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\ninterface GridData {\r\n total: string,\r\n stars: number,\r\n manual: number,\r\n totalCourses: number,\r\n sharedInstructionCourses? : number\r\n}\r\n\r\n\r\ninterface ILocation {\r\n changeExcelRef: any;\r\n selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n { field: \"totalCourses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function TotalCountsReport(props: ILocation) {\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [rowData, setRowData] = useState<GridData[]>([]);\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const GetTotalCountsReport = () => {\r\n ReportsService.GetTotalCountsReport(+orginalSchoolYear.id).then(response => {\r\n let allData: ITotalCountReport[] = response.data\r\n let gridData: GridData[] = [\r\n { total: \"Total Courses\", stars: allData[0].starsCourses, manual: allData[0].manualCourses,sharedInstructionCourses : allData[0].sharedInstructionCourses ,totalCourses: allData[0].totalCourses },\r\n { total: \"Total Teachers\", stars: allData[0].totalStarsTeachers, manual: allData[0].totalManualTeachers ,sharedInstructionCourses : allData[0].totalSharedInstructionTeachers, totalCourses: allData[0].totalTeachers },\r\n { total: \"Total Students\", stars: allData[0].totalStarsStudents, manual: allData[0].totalManualStudents ,sharedInstructionCourses : allData[0].totalSharedInstructionStudents, totalCourses: allData[0].totalStudents },\r\n { total: \"Unique Teachers\", stars: allData[0].totalStarsUniqueTeachers, manual: allData[0].totalManualUniqueTeachers ,sharedInstructionCourses : allData[0].totalSharedInstructionUniqueTeachers, totalCourses: allData[0].totalUniqueTeachers },\r\n { total: \"Unique Students\", stars: allData[0].totalStarsUniqueStudents, manual: allData[0].totalManualUniqueStudents ,sharedInstructionCourses : allData[0].totalSharedInstructionUniqueStudents, totalCourses: allData[0].totalUniqueStudents },\r\n { total: \"School Locations\", stars: 0, manual: 0, sharedInstructionCourses : 0 , totalCourses: allData[0].locationCode },\r\n ]\r\n setRowData(gridData)\r\n props.changeExcelRef(_export)\r\n })\r\n }\r\n useEffect(() => {\r\n GetTotalCountsReport();\r\n }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n\r\n return (\r\n <ExcelExport data={rowData} ref={_export} fileName={\"Total_Counts_Report\" + ' ' + new Date().toDateString()}>\r\n <Grid\r\n data={orderBy(rowData.slice(page.skip, page.take + page.skip), sort)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n onPageChange={pageChange}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => {\r\n setSort(e.sort);\r\n }}\r\n scrollable={\"none\"}>\r\n <GridColumn field=\"total\" title=\"\"></GridColumn>\r\n <GridColumn field=\"stars\" title=\"Stars\"></GridColumn>\r\n <GridColumn field=\"manual\" title=\"Manual\"></GridColumn>\r\n <GridColumn field=\"sharedInstructionCourses\" title=\"Shared Instruction\"></GridColumn>\r\n <GridColumn field=\"totalCourses\" title=\"Stars + Manual + Shared Instruction\"></GridColumn>\r\n </Grid>\r\n </ExcelExport>\r\n )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ICourseStatusReport from '../../model/ICourseStatusReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\ninterface ILocation {\r\n changeExcelRef: any;\r\n selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n { field: \"totalCourses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function CourseStatusReport(props: ILocation) {\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [filter, setFilter] = React.useState(initialFilter);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [rowData, setRowData] = useState<ICourseStatusReport[]>([]);\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const GetCourseStatusReport = () => {\r\n ReportsService.GetStatusWiseReport(+orginalSchoolYear.id).then(response => {\r\n setRowData(response.data)\r\n props.changeExcelRef(_export)\r\n })\r\n }\r\n useEffect(() => {\r\n GetCourseStatusReport();\r\n }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n const filterReportData = (data: any, filter: any) => {\r\n let report = rowData;\r\n return filterBy(report, filter);\r\n }\r\n const onFilterChange = (e: any) => {\r\n setPage(initialDataState)\r\n setFilter(e.filter)\r\n }\r\n\r\n\r\n return (\r\n <ExcelExport data={rowData} ref={_export} fileName={\"Courses_Status_Report\" + ' ' + new Date().toDateString()}>\r\n <Grid\r\n data={filterReportData(orderBy(rowData, sort),filter).slice(page.skip, page.take + page.skip)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n onPageChange={pageChange}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => {\r\n setSort(e.sort);\r\n }}\r\n filterable={true}\r\n filter={filter}\r\n onFilterChange={onFilterChange}\r\n style={{width:\"auto\"}}\r\n scrollable={\"scrollable\"}>\r\n <GridColumn field=\"locationCode\" width=\"180px\" filterable={true} title=\"School\"></GridColumn>\r\n <GridColumn field=\"totalCourses\" filterable={false} title=\"Total Courses\"></GridColumn>\r\n <GridColumn field=\"newCourses\" filterable={false} title=\"New\"></GridColumn>\r\n <GridColumn field=\"publishedCourses\" filterable={false} title=\"Published\"></GridColumn>\r\n <GridColumn field=\"editedCourses\" filterable={false} title=\"Edited\" ></GridColumn>\r\n <GridColumn field=\"closedCourses\" filterable={false} title=\"Closed\"></GridColumn>\r\n <GridColumn field=\"starsCourses\" filterable={false} title=\"Stars\"></GridColumn>\r\n <GridColumn field=\"manualCourses\" filterable={false} title=\"Manual\"></GridColumn>\r\n <GridColumn field=\"sharedCourses\" filterable={false} title=\"Shared\"></GridColumn>\r\n <GridColumn field=\"totalStudents\" filterable={false} title=\"Students\" ></GridColumn>\r\n <GridColumn field=\"totalTeachers\" filterable={false} title=\"Teachers\"></GridColumn>\r\n </Grid>\r\n </ExcelExport>\r\n )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ILicenseTransferHistoryReport from '../../model/ILicenseTransferHistoryReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport Moment from 'moment';\r\n\r\ninterface ILocation {\r\n changeExcelRef: any;\r\n selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n { field: \"license\", dir: \"desc\" },\r\n];\r\n\r\nexport default function LicenseTransferHistoryReport(props: ILocation) {\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [filter, setFilter] = React.useState(initialFilter);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [rowData, setRowData] = useState<ILicenseTransferHistoryReport[]>([]);\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const GetLicenseTransferHistoryReport = () => {\r\n ReportsService.GetLicenseTransferHistoryReport(+orginalSchoolYear.id).then(response => {\r\n response.data.map((s:any)=>{\r\n s.date = Moment(s.date).format('YYYY-MM-DD')\r\n })\r\n setRowData(response.data)\r\n props.changeExcelRef(_export)\r\n })\r\n }\r\n useEffect(() => {\r\n GetLicenseTransferHistoryReport();\r\n }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n const filterReportData = (data: any, filter: any) => {\r\n let report = rowData;\r\n return filterBy(report, filter);\r\n }\r\n const onFilterChange = (e: any) => {\r\n setPage(initialDataState)\r\n setFilter(e.filter)\r\n }\r\n\r\n\r\n return (\r\n <ExcelExport data={rowData} ref={_export} fileName={\"License_Transfer_History\" + ' ' + new Date().toDateString()}>\r\n <Grid\r\n data={filterReportData(orderBy(rowData, sort),filter).slice(page.skip, page.take + page.skip)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n onPageChange={pageChange}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => {\r\n setSort(e.sort);\r\n }}\r\n filterable={true}\r\n filter={filter}\r\n onFilterChange={onFilterChange}\r\n style={{width:\"auto\"}}\r\n scrollable={\"scrollable\"}>\r\n <GridColumn field=\"locationFrom\" width=\"180px\" filterable={true} title=\"From Location\"></GridColumn>\r\n <GridColumn field=\"locationTo\" filterable={true} title=\"To Location\"></GridColumn>\r\n <GridColumn field=\"vendor\" filterable={true} title=\"Vendor\"></GridColumn>\r\n <GridColumn field=\"license\" filterable={false} title=\"License\"></GridColumn>\r\n <GridColumn field=\"transferBy\" filterable={false} title=\"Transfer By\" ></GridColumn>\r\n <GridColumn field=\"date\" filterable={false} title=\"Date\"></GridColumn>\r\n </Grid>\r\n </ExcelExport>\r\n )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport IDailyReport from '../../model/IDailyReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\n\r\ninterface ILocation {\r\n changeExcelRef: any;\r\n selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n { field: \"courses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function DailyReport(props: ILocation) {\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [rowData, setRowData] = useState<IDailyReport[]>([]);\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const GetDailyReport = () => {\r\n ReportsService.GetDailyReport().then(response => {\r\n setRowData(response.data)\r\n props.changeExcelRef(_export)\r\n })\r\n }\r\n useEffect(() => {\r\n GetDailyReport();\r\n }, [props.selectedReport]);\r\n\r\n\r\n return (\r\n <ExcelExport data={rowData} ref={_export} fileName={\"Daily_Report\" + ' ' + new Date().toDateString()}>\r\n <Grid\r\n data={orderBy(rowData.slice(page.skip, page.take + page.skip), sort)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n onPageChange={pageChange}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => {\r\n setSort(e.sort);\r\n }}\r\n scrollable={\"none\"}>\r\n <GridColumn field=\"courses\" title=\"Courses\"></GridColumn>\r\n <GridColumn field=\"students\" title=\"Students\"></GridColumn>\r\n <GridColumn field=\"teachers\" title=\"Teachers\"></GridColumn>\r\n </Grid>\r\n </ExcelExport>\r\n )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport IMissingTORReport from '../../model/IMissingTORReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\n\r\ninterface ILocation {\r\n changeExcelRef: any;\r\n selectedReport: any\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n { field: \"totalCourses\", dir: \"desc\" },\r\n];\r\n\r\nexport default function MissingTORReport(props: ILocation) {\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [filter, setFilter] = React.useState(initialFilter);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [rowData, setRowData] = useState<IMissingTORReport[]>([]);\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const GetMissingTORReport = () => {\r\n ReportsService.GetMissingTORReport(+orginalSchoolYear.id).then(response => {\r\n setRowData(response.data)\r\n props.changeExcelRef(_export)\r\n })\r\n }\r\n useEffect(() => {\r\n GetMissingTORReport();\r\n }, [props.selectedReport, orginalSchoolYear.id]);\r\n\r\n const filterReportData = (data: any, filter: any) => {\r\n let report = rowData;\r\n return filterBy(report, filter);\r\n }\r\n const onFilterChange = (e: any) => {\r\n setPage(initialDataState)\r\n setFilter(e.filter)\r\n }\r\n\r\n\r\n return (\r\n <ExcelExport data={rowData} ref={_export} fileName={\"Missing_TOR_Report_\" + new Date().toDateString()}>\r\n <Grid\r\n data={filterReportData(orderBy(rowData, sort),filter).slice(page.skip, page.take + page.skip)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n onPageChange={pageChange}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => {\r\n setSort(e.sort);\r\n }}\r\n filterable={true}\r\n filter={filter}\r\n onFilterChange={onFilterChange}\r\n style={{width:\"auto\"}}\r\n scrollable={\"scrollable\"}>\r\n <GridColumn field=\"locationCode\" filterable={true} width=\"180px\" title=\"Course Location\"></GridColumn>\r\n <GridColumn field=\"courseName\" filterable={true} title=\"Courses Missing TOR\" ></GridColumn>\r\n <GridColumn field=\"courseStatus\" filterable={false} title=\"Course Status\" ></GridColumn>\r\n <GridColumn field=\"courseType\" filterable={false} title=\"Course Type\" ></GridColumn>\r\n <GridColumn field=\"createdOn\" filterable={false} title=\"Created On\" ></GridColumn>\r\n </Grid>\r\n </ExcelExport>\r\n )\r\n}","import * as PropTypes from 'prop-types';\n/**\n * Represents the columns of the KendoReact ExcelExport component.\n *\n * @returns null\n */\nvar ExcelExportColumn = function (_) { return null; };\nExcelExportColumn.propTypes = {\n cellOptions: PropTypes.any,\n field: PropTypes.string,\n footerCellOptions: PropTypes.any,\n footer: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n groupFooterCellOptions: PropTypes.any,\n groupFooter: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n groupHeaderCellOptions: PropTypes.any,\n groupHeader: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n headerCellOptions: PropTypes.any,\n hidden: PropTypes.bool,\n level: PropTypes.number,\n locked: PropTypes.bool,\n title: PropTypes.string,\n width: PropTypes.number\n};\nexport default ExcelExportColumn;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"active\", \"disabled\", \"className\", \"variant\", \"action\", \"as\", \"onClick\"];\nimport classNames from 'classnames';\nimport React, { useCallback } from 'react';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n variant: undefined,\n active: false,\n disabled: false\n};\nvar ListGroupItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n active = _ref.active,\n disabled = _ref.disabled,\n className = _ref.className,\n variant = _ref.variant,\n action = _ref.action,\n as = _ref.as,\n onClick = _ref.onClick,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'list-group-item');\n var handleClick = useCallback(function (event) {\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (onClick) onClick(event);\n }, [disabled, onClick]);\n\n if (disabled && props.tabIndex === undefined) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n return /*#__PURE__*/React.createElement(AbstractNavItem, _extends({\n ref: ref\n }, props, {\n // eslint-disable-next-line no-nested-ternary\n as: as || (action ? props.href ? 'a' : 'button' : 'div'),\n onClick: handleClick,\n className: classNames(className, bsPrefix, active && 'active', disabled && 'disabled', variant && bsPrefix + \"-\" + variant, action && bsPrefix + \"-action\")\n }));\n});\nListGroupItem.defaultProps = defaultProps;\nListGroupItem.displayName = 'ListGroupItem';\nexport default ListGroupItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"bsPrefix\", \"variant\", \"horizontal\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport warning from 'warning';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractNav from './AbstractNav';\nimport ListGroupItem from './ListGroupItem';\nvar defaultProps = {\n variant: undefined,\n horizontal: undefined\n};\nvar ListGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _useUncontrolled = useUncontrolled(props, {\n activeKey: 'onSelect'\n }),\n className = _useUncontrolled.className,\n initialBsPrefix = _useUncontrolled.bsPrefix,\n variant = _useUncontrolled.variant,\n horizontal = _useUncontrolled.horizontal,\n _useUncontrolled$as = _useUncontrolled.as,\n as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'list-group');\n var horizontalVariant;\n\n if (horizontal) {\n horizontalVariant = horizontal === true ? 'horizontal' : \"horizontal-\" + horizontal;\n } else {\n horizontalVariant = null;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(!(horizontal && variant === 'flush'), '`variant=\"flush\"` and `horizontal` should not be used together.') : void 0;\n return /*#__PURE__*/React.createElement(AbstractNav, _extends({\n ref: ref\n }, controlledProps, {\n as: as,\n className: classNames(className, bsPrefix, variant && bsPrefix + \"-\" + variant, horizontalVariant && bsPrefix + \"-\" + horizontalVariant)\n }));\n});\nListGroup.defaultProps = defaultProps;\nListGroup.displayName = 'ListGroup';\nListGroup.Item = ListGroupItem;\nexport default ListGroup;","import React, { useState, useEffect, useContext } from 'react';\r\nimport ITeacherCreatedCourse from '../../model/ITeacherCreatedCourseReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport reportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport, ExcelExportColumn, ExcelExportColumnGroup } from '@progress/kendo-react-excel-export';\r\nimport moment from 'moment';\r\nimport { ListGroup } from 'react-bootstrap';\r\nimport SplashScreen from '../../shared/SplashScreen';\r\n\r\n\r\ninterface IProps {\r\n changeExcelRef: any\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n};\r\nconst initialSort: Array<SortDescriptor> = [\r\n { field: \"courseName\", dir: \"asc\" },\r\n];\r\n\r\nexport default function TeacherCreatedCourseReport(props: IProps) {\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [filter, setFilter] = React.useState(initialFilter);\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [rowData, setRowData] = useState<ITeacherCreatedCourse[]>([]);\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n\r\n\r\n\r\n\r\n const GetTeacherCreatedCourseReport = () => {\r\n reportsService.GetTeacherCreatedCourseReport(+orginalSchoolYear.id).then(response => {\r\n setRowData(response.data)\r\n props.changeExcelRef(_export)\r\n setIsLoading(false);\r\n }).catch((ex) => {\r\n setIsLoading(false);\r\n\r\n }).finally(() => {\r\n setIsLoading(false);\r\n })\r\n }\r\n\r\n const GridColumnDetails = (props: any) => {\r\n return (\r\n <td>\r\n <div>\r\n {moment(props.dataItem.createdOn).format('MM/DD/YYYY')}\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n const GetILearnBadgeCssClass = (status: boolean) => {\r\n\r\n if (status === true) {\r\n return \"badge badge-success\"\r\n }\r\n else if (status === false) {\r\n return \"badge badge-danger\"\r\n }\r\n }\r\n\r\n const GridILearnCell = (props: any) => {\r\n return (\r\n <td >\r\n <div className={GetILearnBadgeCssClass(props.dataItem.iLearnFlag)}>{props.dataItem.iLearnFlag ? 'Yes' : 'No'}</div>\r\n </td>\r\n )\r\n }\r\n const GridTeacherCell = (props: any) => {\r\n\r\n return (\r\n <td style={{ minWidth: \"300px\" }}>\r\n <div>\r\n <ListGroup variant=\"flush\" >\r\n {props.dataItem.teachers.length && props.dataItem.teachers.map((item: any) => {\r\n\r\n return (<ListGroup.Item style={{ backgroundColor: \"transparent\", border: \"none\" }} key={item.ein}>{item.ein} | {item.lastName + ' ' + item.firstName + ' ' + '(' + item.teacherEmail + ')'} </ListGroup.Item>)\r\n })}\r\n </ListGroup>\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n const Custom = (props: any) => {\r\n\r\n return (\r\n <td style={{ minWidth: \"300px\" }}>\r\n <div>\r\n <ListGroup variant=\"flush\" >\r\n {props.dataItem.teachers.length && props.dataItem.teachers.map((item: any) => {\r\n\r\n return (<ListGroup.Item style={{ backgroundColor: \"transparent\", border: \"none\" }} key={item.ein}>{item.ein} | {item.lastName + ' ' + item.firstName + ' ' + '(' + item.teacherEmail + ')'} </ListGroup.Item>)\r\n })}\r\n </ListGroup>\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n\r\n const GetStatusBadgeCssClass = (status: string) => {\r\n\r\n if (status.toLowerCase() === \"new\") {\r\n return \"badge badge-blue-gray\"\r\n }\r\n else if (status.toLowerCase() === \"edited\") {\r\n return \"badge badge-secondary\"\r\n }\r\n else if (status.toLowerCase() === \"published\") {\r\n return \"badge badge-success\"\r\n }\r\n else if (status.toLowerCase() === \"closed\") {\r\n return \"badge badge-danger\"\r\n }\r\n else if (status.toLowerCase() === \"reopened\") {\r\n return \"badge badge-info\"\r\n }\r\n }\r\n\r\n const GridStatusCell = (props: any) => {\r\n return (\r\n <td >\r\n <div className={GetStatusBadgeCssClass(props.dataItem.courseStatus)}>{props.dataItem.courseStatus}</div>\r\n </td>\r\n )\r\n }\r\n\r\n const filterReportData = (data: any, filter: any) => {\r\n let report = rowData;\r\n return filterBy(report, filter);\r\n }\r\n const onFilterChange = (e: any) => {\r\n setPage(initialDataState)\r\n setFilter(e.filter)\r\n }\r\n\r\n useEffect(() => {\r\n GetTeacherCreatedCourseReport();\r\n }, [orginalSchoolYear.id]);\r\n\r\n\r\n return (\r\n <div>\r\n {isLoading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n <ExcelExport data={rowData} ref={_export} fileName={\"Teacher_Created_Course_Report\" + ' ' + new Date().toDateString()}>\r\n <ExcelExportColumn field=\"locationCode\" title=\"School Location\"></ExcelExportColumn>\r\n <ExcelExportColumn field=\"courseName\" title=\"Course Name\"></ExcelExportColumn>\r\n <ExcelExportColumn field=\"courseStatus\" title=\"Course Status\"></ExcelExportColumn>\r\n <ExcelExportColumn field=\"iLearnFlag\" title=\"isILearn?\"></ExcelExportColumn>\r\n <ExcelExportColumn field=\"createdOn\" title=\"Created On\" ></ExcelExportColumn>\r\n </ExcelExport>\r\n <Grid\r\n data={filterReportData(orderBy(rowData, sort), filter).slice(page.skip, page.take + page.skip)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n onPageChange={pageChange}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => {\r\n setSort(e.sort);\r\n }}\r\n filter={filter}\r\n onFilterChange={onFilterChange}\r\n scrollable={\"none\"}>\r\n <GridColumn field=\"locationCode\" filterable={true} title=\"School Location\"></GridColumn>\r\n <GridColumn field=\"courseName\" filterable={true} title=\"Course Name\"></GridColumn>\r\n <GridColumn field=\"courseStatus\" cell={GridStatusCell} filterable={false} title=\"Course Status\"></GridColumn>\r\n <GridColumn field=\"teachers\" cell={GridTeacherCell} filterable={false} title=\"Teachers\"></GridColumn>\r\n <GridColumn field=\"iLearnFlag\" cell={GridILearnCell} filterable={false} title=\"isILearn?\"></GridColumn>\r\n <GridColumn field=\"createdOn\" cell={GridColumnDetails} filterable={false} title=\"Created On\" ></GridColumn>\r\n\r\n </Grid>\r\n\r\n\r\n </div>\r\n )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ITeacherCreatedCourse from '../../model/ITeacherCreatedCourseReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport reportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport, ExcelExportColumn, ExcelExportColumnGroup } from '@progress/kendo-react-excel-export';\r\nimport moment from 'moment';\r\nimport { Button, ListGroup, OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport SplashScreen from '../../shared/SplashScreen';\r\nimport { IAssignedTeachers } from '../../model/IAssignedTeachers';\r\n\r\n\r\ninterface IProps {\r\n changeExcelRef: any\r\n getReportData: any\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n};\r\n\r\nexport default function SharedInstructionCourseReport(props: IProps) {\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [filter, setFilter] = React.useState(initialFilter);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [rowData, setRowData] = useState<any[]>([]);\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n\r\n const GetSharedInstructionCourseReport = () => {\r\n reportsService.GetSharedInstructionCoursesReport(+orginalSchoolYear.id).then(response => {\r\n setRowData(response.data)\r\n props.changeExcelRef(_export)\r\n props.getReportData(response.data)\r\n setIsLoading(false);\r\n }).catch((ex) => {\r\n setIsLoading(false);\r\n\r\n }).finally(() => {\r\n setIsLoading(false);\r\n })\r\n }\r\n\r\n const GridColumnDetails = (props: any) => {\r\n return (\r\n <td>\r\n <div>\r\n {moment(props.dataItem.sharedCourseCreationDate).format('MM/DD/YYYY')}\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n \r\n\r\n const GridStarsCoursesCell = (props: any) => {\r\n\r\n return (\r\n <td style={{ minWidth: \"300px\" }}>\r\n <div>\r\n <ListGroup variant=\"flush\">\r\n {props.dataItem.assignedStarsCourses.length ? (\r\n props.dataItem.assignedStarsCourses.map((item: any) => (\r\n (item.starsCourseName && item.starsCourseName !== \"\") ? (\r\n <ListGroup.Item\r\n style={{ backgroundColor: \"transparent\", border: \"none\" }}\r\n key={item.starsCourseName}\r\n >\r\n {item.starsCourseName} {\r\n item.assignedStarsCoursesTeachers && item.assignedStarsCoursesTeachers.length && item.assignedStarsCoursesTeachers.map((i: any) => (\r\n i.teacherName && i.teacherName != \"\" &&\r\n <OverlayTrigger\r\n key={i.teacherId}\r\n placement='top'\r\n overlay={\r\n <Tooltip id={`tooltip-${item.teacherId}`}>\r\n {i.teacherName + '-' + i.teacherEIN + '(' + i.teacherDBN + ')'}\r\n </Tooltip>\r\n }\r\n >\r\n <Button key={item.teacherEIN} className={\"btn badge badge-warning border-0 mr-1\"}>{i.teacherName.split(' ').map((word: string) => word[0]).join('')}</Button>\r\n </OverlayTrigger>\r\n ))\r\n } | {item.starsCourseLocationCode} | {item.studentsCount} students\r\n </ListGroup.Item>\r\n ) : (<ListGroup.Item style={{ backgroundColor: \"transparent\", border: \"none\" }}>No sections</ListGroup.Item>)\r\n ))\r\n ) : (\r\n <p>No sections</p>\r\n )}\r\n </ListGroup>\r\n </div>\r\n </td>\r\n );\r\n\r\n }\r\n\r\n\r\n\r\n const GetStatusBadgeCssClass = (status: string) => {\r\n\r\n if (status.toLowerCase() === \"new\") {\r\n return \"badge badge-blue-gray\"\r\n }\r\n else if (status.toLowerCase() === \"edited\") {\r\n return \"badge badge-secondary\"\r\n }\r\n else if (status.toLowerCase() === \"published\") {\r\n return \"badge badge-success\"\r\n }\r\n else if (status.toLowerCase() === \"closed\") {\r\n return \"badge badge-danger\"\r\n }\r\n else if (status.toLowerCase() === \"reopened\") {\r\n return \"badge badge-info\"\r\n }\r\n }\r\n\r\n const GridStatusCell = (props: any) => {\r\n return (\r\n <td >\r\n <div className={GetStatusBadgeCssClass(props.dataItem.sharedCourseStatus)}>{props.dataItem.sharedCourseStatus}</div>\r\n </td>\r\n )\r\n }\r\n\r\n const filterReportData = (data: any, filter: any) => {\r\n let report = rowData;\r\n return filterBy(report, filter);\r\n }\r\n const onFilterChange = (e: any) => {\r\n setPage(initialDataState)\r\n setFilter(e.filter)\r\n }\r\n\r\n useEffect(() => {\r\n GetSharedInstructionCourseReport();\r\n }, [orginalSchoolYear.id]);\r\n\r\n\r\n return (\r\n <div>\r\n {isLoading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n <ExcelExport data={rowData} ref={_export} fileName={\"Shared_Instruction_Courses_Report\" + ' ' + new Date().toDateString()}>\r\n <ExcelExportColumn field=\"sharedCourseName\" title=\"Shared Course Name\"></ExcelExportColumn>\r\n <ExcelExportColumn field=\"sharedCourseLocationCode\" title=\"Shared Course Location Code\"></ExcelExportColumn>\r\n <ExcelExportColumn field=\"sharedCourseStatus\" title=\"Shared Course Status\"></ExcelExportColumn>\r\n <ExcelExportColumn field=\"teacherofRecordEIN\" title=\"Teacher of Record EIN\"></ExcelExportColumn>\r\n <ExcelExportColumn field=\"teacherofRecordName\" title=\"Teacher of Record Name\"></ExcelExportColumn>\r\n <ExcelExportColumn field=\"sharedCourseCreationDate\" title=\"Shared Course Creation Date\" ></ExcelExportColumn>\r\n <ExcelExportColumn field=\"starsCourseName\" title=\"Stars Course Name\" ></ExcelExportColumn>\r\n <ExcelExportColumn field=\"starsCourseLocationCode\" title=\"Stars Course Location Code\" ></ExcelExportColumn>\r\n <ExcelExportColumn field=\"starsCourseCode\" title=\"STARS Course code\" ></ExcelExportColumn>\r\n <ExcelExportColumn field=\"starsMappingId\" title=\"STARS Course Mapping ID\" ></ExcelExportColumn>\r\n <ExcelExportColumn field=\"termId\" title=\"STARS Course Term ID\" ></ExcelExportColumn>\r\n <ExcelExportColumn field=\"assignedStarsCoursesTeachers\" title=\"STARS Course Teachers\" ></ExcelExportColumn>\r\n <ExcelExportColumn field=\"studentsCount\" title=\"Number of Students\" ></ExcelExportColumn>\r\n </ExcelExport>\r\n <Grid\r\n data={filterReportData(rowData, filter).slice(page.skip, page.take + page.skip)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n onPageChange={pageChange}\r\n filter={filter}\r\n filterable={true}\r\n onFilterChange={onFilterChange}\r\n style={{ overflowX: \"auto\" }}\r\n scrollable={\"none\"}>\r\n <GridColumn field=\"sharedCourseLocationCode\" filterable={true} title=\"SI Course DBN\"></GridColumn>\r\n <GridColumn field=\"sharedCourseName\" filterable={true} title=\"SI Course Name\"></GridColumn>\r\n <GridColumn field=\"sharedCourseCreationDate\" cell={GridColumnDetails} filterable={false} title=\"SI Creation Date\" ></GridColumn>\r\n <GridColumn field=\"courseStatus\" cell={GridStatusCell} filterable={false} title=\"Course Status\"></GridColumn>\r\n <GridColumn field=\"teacherofRecordEIN\" filterable={false} title=\"TOR EIN\"></GridColumn>\r\n <GridColumn field=\"teacherofRecordName\" filterable={false} title=\"TOR Name\"></GridColumn>\r\n <GridColumn field=\"teachers\" cell={GridStarsCoursesCell} filterable={false} title=\"Stars Courses\"></GridColumn>\r\n </Grid>\r\n\r\n\r\n </div>\r\n )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport ICourseEnrollmentSummaryReport from '../../model/ICourseEnrollmentSummaryReport'\r\nimport { Grid, GridColumn, GridSortChangeEvent } from '@progress/kendo-react-grid'\r\nimport ReportsService from '../../services/ReportsService'\r\nimport { Year } from '../../services/AppContext'\r\nimport { CompositeFilterDescriptor, filterBy, orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\r\nimport moment from 'moment';\r\n\r\n\r\ninterface ILocation {\r\n changeExcelRef: any;\r\n \r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\n\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n};\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n { field: \"studentCount\", dir: \"desc\" },\r\n];\r\n\r\nexport default function CourseEnrollmentSummaryReport(props: ILocation) {\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [filter, setFilter] = React.useState(initialFilter);\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [rowData, setRowData] = useState<ICourseEnrollmentSummaryReport[]>([]);\r\n const _export = React.useRef<ExcelExport | null>(null);\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n\r\n const onFilterChange = (e: any) => {\r\n setPage(initialDataState)\r\n setFilter(e.filter)\r\n }\r\n\r\n const GetPublishedCoursesReport = () => {\r\n ReportsService.GetCourseEnrollmentSummaryReport(+orginalSchoolYear.id).then(response => {\r\n setRowData(response.data)\r\n props.changeExcelRef(_export)\r\n })\r\n }\r\n useEffect(() => {\r\n GetPublishedCoursesReport();\r\n }, [orginalSchoolYear.id]);\r\n\r\n const GridColumnDetails = (props: any) => {\r\n return (\r\n <td>\r\n <div>\r\n {moment(props.dataItem.createdOn).format('MM/DD/YYYY')}\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n\r\n return (\r\n <ExcelExport data={rowData} ref={_export} fileName={\"Course_Enrollment_Summary_Report\" + ' ' + new Date().toDateString()}>\r\n <Grid\r\n data={filterBy(orderBy(rowData, sort), filter).slice(page.skip, page.take + page.skip)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageSize={page.take}\r\n pageable={{ pageSizes: [10, 25, 50, 100], info: true }}\r\n onPageChange={pageChange}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => {\r\n if (e.sort.length === 0) {\r\n if (sort.length != 0 && sort[0].dir == \"asc\") {\r\n setSort([{ field: \"studentCount\", dir: \"desc\" }])\r\n } else {\r\n setSort([{ field: \"studentCount\", dir: \"asc\" }])\r\n }\r\n } else {\r\n setSort(e.sort);\r\n }\r\n }}\r\n filterable={true}\r\n filter={filter}\r\n onFilterChange={onFilterChange}\r\n scrollable={\"none\"}>\r\n <GridColumn field=\"locationCode\" filterable={true} title=\"Location Code\"></GridColumn>\r\n <GridColumn field=\"courseName\" filterable={true} title=\"Course Name\"></GridColumn>\r\n <GridColumn field=\"courseStatus\" filterable={false} title=\"Course Status\"></GridColumn>\r\n <GridColumn field=\"courseType\" filterable={false} title=\"Course Type\"></GridColumn>\r\n <GridColumn field=\"studentCount\" filterable={false} title=\"Student Count\"></GridColumn>\r\n <GridColumn field=\"createdOn\" cell={GridColumnDetails} filterable={false} title=\"Created On\"></GridColumn>\r\n\r\n </Grid>\r\n </ExcelExport>\r\n )\r\n}","import { useState, useEffect, useContext } from 'react';\r\nimport { LocationContext, Year } from '../../services/AppContext'\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { Row, Col } from 'react-bootstrap';\r\nimport LicenseUsageReport from './LicenseUsageReport';\r\nimport LicenseAllocationReport from './LicenseAllocationReport';\r\nimport PublishedCoursesReport from './PublishedCoursesReport';\r\nimport TotalCountsReport from './TotalCountsReport'\r\nimport CourseStatusReport from './StatusWiseReport';\r\nimport LicenseTransferHistoryReport from './LicenseTransferHistoryReport'\r\nimport DailyReport from './DailyReport';\r\nimport MissingTORReport from './MissingTORReport';\r\nimport ReportsService from '../../services/ReportsService'\r\nimport TeacherCreatedCourseReport from './TeacherCreatedCourseReport';\r\nimport { KendoOoxml } from '@progress/kendo-react-excel-export';\r\nimport SharedInstructionCourseReport from './SharedInstructionCourseReport';\r\nimport { Workbook } from '@progress/kendo-ooxml';\r\nimport CourseEnrollmentSummaryReport from './CourseEnrollmentSummary';\r\n\r\n\r\n\r\ninterface ILocation {\r\n id: string\r\n}\r\n\r\ninterface Reports {\r\n reportName: string;\r\n reportValue: string;\r\n isDefaultSelected: number;\r\n}\r\nconst dropDownData = ['Transferrable-Unlimited', 'NonTransferrable-Unlimited', 'NonTransferrable-Per Enrollment']\r\n\r\nexport default function Report(location: ILocation) {\r\n const { locationCode } = useContext(LocationContext);\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [licenseType, setLicenseType] = useState('Transferrable-Unlimited');\r\n const [allReports, setAllReports] = useState<Reports[]>([{ reportName: '', reportValue: '', isDefaultSelected: 0 }]);\r\n const [selectedReport, setSelectedReports] = useState<Reports>({ reportName: '', reportValue: '', isDefaultSelected: 0 });\r\n const [excelRef, setExcelRef] = useState<any>(null);\r\n const [rowData, setRowData] = useState<any[]>([]);\r\n\r\n\r\n const excelExport = () => {\r\n if (excelRef.current !== null) {\r\n if (excelRef.current.props.fileName.indexOf('Teacher_Created_Course_Report') == 0) {\r\n let workbook = excelRef.current.workbookOptions()\r\n let rows = workbook.sheets[0].rows;\r\n let headerOptions = rows[0].cells[0];\r\n let data = excelRef.current.props.data\r\n for (let idx = data.length - 1; idx >= 0; idx--) {\r\n let teachers = data[idx].teachers\r\n for (let teacherIdx = teachers.length - 1; teacherIdx >= 0; teacherIdx--) {\r\n const teacher = teachers[teacherIdx];\r\n rows.splice(idx + 2, 0, { cells: [{}, { value: teacher.ein }, { value: teacher.firstName }, { value: teacher.lastName }, { value: teacher.teacherEmail }] });\r\n }\r\n rows.splice(idx + 2, 0, {\r\n cells: [\r\n {},\r\n Object.assign({}, headerOptions, { value: 'EIN' }),\r\n Object.assign({}, headerOptions, { value: 'First Name' }),\r\n Object.assign({}, headerOptions, { value: 'Last Name' }),\r\n Object.assign({}, headerOptions, { value: 'Email' })\r\n ]\r\n });\r\n\r\n }\r\n new KendoOoxml.Workbook(workbook).toDataURL().then((dataUrl) => {\r\n excelRef.current.save(workbook)\r\n })\r\n } else if (excelRef.current.props.fileName.indexOf('Shared_Instruction_Courses_Report') == 0) {\r\n let workbook = excelRef.current.workbookOptions();\r\n\r\n let rows = workbook.sheets[0].rows;\r\n let headerOptions = rows[0];\r\n let data = excelRef.current.props.data;\r\n\r\n rows = [headerOptions]; // Initialize rows with headerOptions\r\n data.forEach((course: any) => {\r\n course.assignedStarsCourses.forEach((ele: any) => {\r\n rows.push({\r\n cells: [\r\n { value: course.sharedCourseName },\r\n { value: course.sharedCourseLocationCode },\r\n { value: course.sharedCourseStatus },\r\n { value: course.teacherofRecordEIN },\r\n { value: course.teacherofRecordName },\r\n { value: course.sharedCourseCreationDate },\r\n { value: ele.starsCourseName },\r\n { value: ele.starsCourseLocationCode },\r\n { value: ele.starsCourseCode },\r\n { value: ele.starsMappingId },\r\n { value: ele.termId },\r\n {\r\n value: ele.assignedStarsCoursesTeachers && ele.assignedStarsCoursesTeachers.length && ele.assignedStarsCoursesTeachers.map((teacher: any) => {\r\n if (teacher.teacherEIN && teacher.teacherEIN != \"\") {\r\n return `${teacher.teacherName} - ${teacher.teacherEIN} (${teacher.teacherDBN})`;\r\n }\r\n\r\n }).join(', ')\r\n },\r\n { value: ele.studentsCount }\r\n ],\r\n });\r\n });\r\n });\r\n\r\n workbook.sheets[0].rows = rows;\r\n\r\n new KendoOoxml.Workbook(workbook).toDataURL().then((dataUrl) => {\r\n excelRef.current.save(workbook);\r\n });\r\n\r\n } else {\r\n excelRef.current.save();\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n };\r\n\r\n\r\n\r\n const changeExcelRef = (ref: any) => {\r\n setExcelRef(ref)\r\n }\r\n\r\n const getReportData = (data: any) => {\r\n setRowData(data)\r\n }\r\n\r\n const onReportSelectionChange = (e: any) => {\r\n setSelectedReports(e.target.value)\r\n }\r\n\r\n const onSelectionChange = (e: any) => {\r\n setSelectedReports(selectedReport)\r\n setLicenseType(e.target.value)\r\n\r\n }\r\n\r\n useEffect(() => {\r\n if (location.id == \"AllSchools\") {\r\n ReportsService.GetAllReports().then(response => {\r\n setAllReports(response.data)\r\n let defaultSelectedReport = response.data.find((d: Reports) => d.isDefaultSelected == 1)\r\n setSelectedReports(defaultSelectedReport)\r\n })\r\n } else {\r\n let reports: Reports[] = [{ reportName: 'License Allocation Report', reportValue: 'License Allocation Report', isDefaultSelected: 1 }\r\n , { reportName: 'Course Status Report', reportValue: 'Course Status Report', isDefaultSelected: 0 }]\r\n setAllReports(reports)\r\n let defaultSelectedReport = reports.find((d: Reports) => d.isDefaultSelected == 1) ?? { reportName: 'License Allocation Report', reportValue: 'License Allocation Report', isDefaultSelected: 1 }\r\n setSelectedReports(defaultSelectedReport)\r\n }\r\n }, [locationCode, orginalSchoolYear.id, location.id]);\r\n\r\n\r\n return (\r\n <div>\r\n <Row className=\"mb-3\">\r\n <Col xs={9} sm={8} md={6} lg={4}>\r\n <DropDownList\r\n data={allReports}\r\n defaultValue={selectedReport}\r\n popupSettings={{ width: 350 }}\r\n style={{ width: \"100%\" }}\r\n value={selectedReport}\r\n onChange={onReportSelectionChange}\r\n textField=\"reportName\"\r\n />\r\n </Col>\r\n <Col xs={3} sm={4} md={6} lg={8} className=\"text-right\">\r\n <button type=\"button\" className=\"btn btn-primary\" onClick={excelExport}>\r\n <i className=\"fas fa-download\"></i>\r\n </button>\r\n </Col>\r\n </Row>\r\n {selectedReport.reportValue == \"License Usage Report\" &&\r\n <Row className=\"mb-3\">\r\n <Col sm=\"4\" className=\"text-right\">\r\n <DropDownList\r\n data={dropDownData}\r\n defaultValue={dropDownData[0]}\r\n onChange={onSelectionChange}\r\n style={{ maxWidth: '350px', width: \"100%\" }}\r\n />\r\n </Col>\r\n </Row>\r\n }\r\n {selectedReport.reportValue == \"License Allocation Report\" && <LicenseAllocationReport id={location.id} changeExcelRef={changeExcelRef} />}\r\n {selectedReport.reportValue == \"Course Status Report\" && <CourseStatusReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n {selectedReport.reportValue == \"Published Courses Report\" && <PublishedCoursesReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n {selectedReport.reportValue == \"Total Counts Report\" && <TotalCountsReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n {selectedReport.reportValue == \"License Transfer History Report\" && <LicenseTransferHistoryReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n {selectedReport.reportValue == \"Daily Report\" && <DailyReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n {selectedReport.reportValue == \"License Usage Report\" && licenseType == 'Transferrable-Unlimited'\r\n && <LicenseUsageReport licenseType={licenseType} selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n {selectedReport.reportValue == \"License Usage Report\" && licenseType == 'NonTransferrable-Unlimited'\r\n && <LicenseUsageReport licenseType={licenseType} selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n {selectedReport.reportValue == \"License Usage Report\" && licenseType == 'NonTransferrable-Per Enrollment'\r\n && <LicenseUsageReport licenseType={licenseType} selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n {selectedReport.reportValue == \"Teacher Created Course Report\" && <TeacherCreatedCourseReport changeExcelRef={changeExcelRef} />}\r\n {selectedReport.reportValue == \"Course Enrollment Summary\" && <CourseEnrollmentSummaryReport changeExcelRef={changeExcelRef} />}\r\n {selectedReport.reportValue == \"Shared Instruction Courses Report\" && <SharedInstructionCourseReport changeExcelRef={changeExcelRef} getReportData={getReportData} />}\r\n {selectedReport.reportValue == \"Missing TOR Report\" && <MissingTORReport selectedReport={selectedReport} changeExcelRef={changeExcelRef} />}\r\n </div>\r\n\r\n )\r\n}\r\n\r\n\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { AuthContext, AuthContextType, UserProfileType } from '../services/AppContext'\r\nimport { Dropdown } from 'react-bootstrap';\r\nimport { Link, useHistory, useLocation } from 'react-router-dom'\r\nimport LocalStorageService from '../services/LocalStorage';\r\n\r\ntype ProfileMenuType = {\r\n userProfile: UserProfileType\r\n onNavigation: (event: React.MouseEvent<HTMLElement, MouseEvent>, data: string) => void\r\n}\r\n\r\nexport default function ProfileMenu(props: ProfileMenuType) {\r\n const [userProfile, setUserProfile] = useState<UserProfileType>();\r\n let history = useHistory();\r\n const onMenuClick = (e: any, menuName: string) => {\r\n history.replace(menuName)\r\n props.onNavigation(e, menuName)\r\n e.preventDefault();\r\n }\r\n\r\n useEffect(() => {\r\n //const userProf = LocalStorageService.getUserProfile()\r\n setUserProfile(props.userProfile);\r\n }, [props.userProfile])\r\n\r\n return (\r\n <div>\r\n <Dropdown className=\"user-sign-in link-mobile-visible link-mobile-user\">\r\n <Dropdown.Toggle variant=\"link\" id=\"user_dropdown\">\r\n <svg className=\"icon-user-circle\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 35 35\">\r\n <path data-name=\"Path 27\" d=\"M17.5,0A17.5,17.5,0,1,0,35,17.5,17.52,17.52,0,0,0,17.5,0ZM28.944,26.363a15.491,15.491,0,0,0-3.756-5.542,10.356,10.356,0,0,1-2.353,1.964,12.75,12.75,0,0,1,3.77,5.974A14.428,14.428,0,0,1,8.374,28.74a12.32,12.32,0,0,1,3.76-5.974A10.287,10.287,0,0,1,9.78,20.785a14.712,14.712,0,0,0-3.753,5.54,14.493,14.493,0,1,1,22.916.038Z\" fill=\"#fff\"></path>\r\n <path data-name=\"Path 28\" d=\"M43.455,23.314a7.518,7.518,0,1,0,7.516,7.518A7.526,7.526,0,0,0,43.455,23.314Zm0,12.028a4.511,4.511,0,1,1,4.51-4.511A4.516,4.516,0,0,1,43.455,35.342Z\" transform=\"translate(-25.955 -16.838)\" fill=\"#fff\"></path>\r\n </svg>\r\n </Dropdown.Toggle>\r\n <Dropdown.Menu className=\"dropdown-menu-right\">\r\n <div className=\"dropdown-username d-flex\">\r\n {/* <!-- User icon SVG image --> */}\r\n <svg className=\"icon-user-circle\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 35 35\">\r\n <path data-name=\"Path 27\" d=\"M17.5,0A17.5,17.5,0,1,0,35,17.5,17.52,17.52,0,0,0,17.5,0ZM28.944,26.363a15.491,15.491,0,0,0-3.756-5.542,10.356,10.356,0,0,1-2.353,1.964,12.75,12.75,0,0,1,3.77,5.974A14.428,14.428,0,0,1,8.374,28.74a12.32,12.32,0,0,1,3.76-5.974A10.287,10.287,0,0,1,9.78,20.785a14.712,14.712,0,0,0-3.753,5.54,14.493,14.493,0,1,1,22.916.038Z\" fill=\"#fff\"></path>\r\n <path data-name=\"Path 28\" d=\"M43.455,23.314a7.518,7.518,0,1,0,7.516,7.518A7.526,7.526,0,0,0,43.455,23.314Zm0,12.028a4.511,4.511,0,1,1,4.51-4.511A4.516,4.516,0,0,1,43.455,35.342Z\" transform=\"translate(-25.955 -16.838)\" fill=\"#fff\"></path>\r\n </svg>\r\n <div>\r\n <div className=\"dropdown-user-name text-nowrap\">{userProfile?.userName}</div>\r\n <div className=\"dropdown-user-title text-nowrap\">{userProfile?.role?.roleName}</div>\r\n </div>\r\n </div>\r\n <Dropdown.Divider />\r\n {\r\n (history.location.pathname != '/Home') && <div>\r\n {\r\n (userProfile?.role?.roleName == 'System Administrator') && <div>\r\n <Dropdown.Header>Manage</Dropdown.Header>\r\n <Dropdown.Item onClick={(e) => onMenuClick(e, '/ILearn/manage/announcements')}>Announcements</Dropdown.Item>\r\n <Dropdown.Item onClick={(e) => onMenuClick(e, '/ILearn/manage/vendors')}>Vendors</Dropdown.Item>\r\n <Dropdown.Item onClick={(e) => onMenuClick(e, '/ILearn/manage/schools')}>Schools</Dropdown.Item>\r\n <Dropdown.Item onClick={(e) => onMenuClick(e, '/ILearn/manage/years')}>School Year</Dropdown.Item>\r\n </div>}\r\n {\r\n (userProfile?.role?.roleName == 'System Administrator' || userProfile?.role?.roleName == 'Central Staff' ) && <div>\r\n <Dropdown.Item onClick={(e) => onMenuClick(e, '/ILearn/manage/reports')}>Reports</Dropdown.Item>\r\n </div>}\r\n <Dropdown.Divider />\r\n </div>\r\n }\r\n <Dropdown.Item href=\"/?logout\">Sign Out</Dropdown.Item>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n </div>\r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport VendorContentService from '../../../services/VendorContentService';\r\nimport IVendorContent from '../../../model/VendorContent';\r\nimport { Grid, GridColumn, GridFilterChangeEvent, GridToolbar } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor, } from \"@progress/kendo-data-query\";\r\nimport { Modal, Button, Dropdown, Form, Row } from 'react-bootstrap';\r\nimport { FormMode } from '../../../services/Utility'\r\ninterface IContentDisplay {\r\n vendorId: number,\r\n updateCourseCount: (counter: number, vendorId: number, childFormMode : FormMode) => void,\r\n childFormMode: FormMode\r\n}\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n };\r\n const initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\nexport default function VendorContentManagement(props: IContentDisplay) {\r\n const [rowData, setCourseContentData] = useState<IVendorContent[]>([]);\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [formValue, setFormValue] = useState<IVendorContent>({\r\n id: 0,\r\n vendorCourseCode: '',\r\n vendorCourseContentName: '',\r\n vendorId: 0,\r\n vendorName: '',\r\n TotalCourses: 0,\r\n TotalStudents : 0,\r\n isActive: true,\r\n modifiedBy: ''\r\n });\r\n \r\n const [filter, setFilter] = useState(initialFilter);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const [errorMsg, setErrorMsg] = useState<string>('');\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page); \r\n };\r\n\r\n const getVendorContentData = () =>{\r\n VendorContentService.getByVendorId(props.vendorId).then(response => {\r\n setCourseContentData(response.data) \r\n })\r\n }\r\n useEffect(() => {\r\n getVendorContentData();\r\n setFormMode(props.childFormMode);\r\n }, []);\r\n\r\n const handleChange = (event: any) => {\r\n const target = event.target //as HTMLSelectElement\r\n const value = target.type === 'checkbox' ? target.checked : target.value\r\n\r\n setFormValue({ ...formValue, [target.name]: value });\r\n };\r\n\r\n const onFormAction = (vendorContentId: number, actionType: FormMode) => {\r\n setErrors({\r\n vendorContentCourseNameError: '',\r\n vendorCourseCodeError: '',\r\n });\r\n switch (actionType) {\r\n case FormMode.New:\r\n setFormMode(FormMode.New)\r\n //Clear Existing vlues\r\n let vendorContentReset: IVendorContent = {\r\n id: 0,\r\n vendorCourseCode: '',\r\n vendorCourseContentName: '',\r\n vendorId: 0,\r\n vendorName: '',\r\n TotalCourses: 0,\r\n TotalStudents : 0,\r\n isActive: true,\r\n modifiedBy: ''\r\n };\r\n setFormValue(vendorContentReset)\r\n break;\r\n case FormMode.Edit:\r\n setFormMode(FormMode.Edit)\r\n VendorContentService.getById(vendorContentId).then(response => {\r\n setFormValue(response.data);\r\n });\r\n break;\r\n case FormMode.Delete:\r\n let vendorContentDetails: IVendorContent = {\r\n id: vendorContentId,\r\n vendorCourseCode: '',\r\n vendorCourseContentName: '',\r\n vendorId: 0,\r\n vendorName: '',\r\n TotalCourses: 0,\r\n TotalStudents : 0,\r\n isActive: true,\r\n modifiedBy: ''\r\n };\r\n setFormValue(vendorContentDetails)\r\n setFormMode(FormMode.Delete)\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const onSave = (event: any, actionType: FormMode) => {\r\n let vendorContent: IVendorContent = {\r\n id: formValue.id,\r\n vendorCourseCode: formValue.vendorCourseCode ,\r\n vendorCourseContentName: formValue.vendorCourseContentName,\r\n vendorName: '',\r\n vendorId: props?.vendorId,\r\n TotalCourses: 0,\r\n TotalStudents : 0,\r\n isActive: formValue.isActive,\r\n modifiedBy: ''\r\n };\r\n switch (actionType) {\r\n case FormMode.New:\r\n event.preventDefault();\r\n if(validate()){\r\n VendorContentService.post(vendorContent).then(response => {\r\n // Display Success message\r\n \r\n getVendorContentData(); \r\n const target = event.target \r\n if(target.id == \"save-add-another-content\"){\r\n let vendorContentReset: IVendorContent = {\r\n id: 0,\r\n vendorCourseCode: '',\r\n vendorCourseContentName: '',\r\n vendorId: 0,\r\n vendorName: '',\r\n TotalCourses: 0,\r\n TotalStudents : 0,\r\n isActive: true,\r\n modifiedBy: ''\r\n };\r\n props.updateCourseCount(1,props.vendorId,FormMode.New);\r\n setFormValue(vendorContentReset)\r\n setFormMode(FormMode.New)\r\n }else{ \r\n props.updateCourseCount(1,props.vendorId,FormMode.None); \r\n setFormMode(FormMode.None)\r\n }\r\n \r\n },error =>{\r\n setErrorMsg(error.response.data.errors.join())\r\n })\r\n } \r\n //Clear Existing vlues\r\n break;\r\n case FormMode.Edit:\r\n event.preventDefault();\r\n if(validate()){\r\n VendorContentService.edit(vendorContent).then(response => {\r\n // Display Success message\r\n getVendorContentData();\r\n setFormMode(FormMode.None)\r\n },error =>{\r\n setErrorMsg(error.response.data.errors.join())\r\n })\r\n }\r\n break;\r\n case FormMode.Delete:\r\n var vendorContentId = Number(vendorContent.id);\r\n VendorContentService.delete(vendorContentId).then(response => {\r\n // Display Success message\r\n props.updateCourseCount(-1,props.vendorId,FormMode.None);\r\n getVendorContentData();\r\n setFormMode(FormMode.None)\r\n })\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const GridColumnButton = (props: any) => {\r\n return (\r\n <td className=\"text-right\" style={{ overflow: 'visible' }}>\r\n <Dropdown>\r\n <Dropdown.Toggle className=\"menu-bars\" size=\"sm\" variant=\"outline-primary\">\r\n <i className=\"fas fa-bars\"></i>\r\n </Dropdown.Toggle>\r\n <Dropdown.Menu>\r\n <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id,FormMode.Edit )}}>Edit</Dropdown.Item>\r\n <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id,FormMode.Delete )}}>Delete</Dropdown.Item>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n </td>)\r\n }\r\n\r\n const [errors, setErrors] = useState({\r\n vendorContentCourseNameError: '',\r\n vendorCourseCodeError: '',\r\n })\r\n const validate = () => {\r\n let error = {\r\n vendorContentCourseNameError: '',\r\n vendorCourseCodeError: '',\r\n };\r\n\r\n if (formMode == FormMode.New || formMode == FormMode.Edit ) {\r\n if (!formValue.vendorCourseContentName) { error.vendorContentCourseNameError = \"Course Name is required\"; }\r\n \r\n if (!formValue.vendorCourseCode) { error.vendorCourseCodeError = \"Course Code is required\" ; }\r\n \r\n setErrors(error);\r\n if (error.vendorContentCourseNameError || error.vendorCourseCodeError ) {\r\n return false;\r\n }\r\n }\r\n return true; \r\n };\r\n \r\n return (\r\n <div>\r\n <Modal backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Edit || formMode == FormMode.New} onHide={() => { setFormMode(FormMode.None) }}>\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>{formMode == FormMode.Edit? \"Edit\" : \"Add\" } Vendor Content</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <div hidden={errorMsg.length == 0}>\r\n <div className=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n {errorMsg}\r\n <button type=\"button\" className=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n </div>\r\n <Form>\r\n <input type=\"hidden\" name=\"id\" value={formValue.id ?? ''} onChange={handleChange} />\r\n <Row>\r\n <Form.Group controlId=\"vendorCourseContentName\" className=\"col-sm-12\">\r\n <Form.Label>Vendor Course Name</Form.Label>\r\n <Form.Control type=\"text\" name=\"vendorCourseContentName\" value={formValue.vendorCourseContentName ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.vendorContentCourseNameError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"vendorCourseCode\" className=\"col-sm-12\">\r\n <Form.Label>Course Code</Form.Label>\r\n <Form.Control type=\"text\" name=\"vendorCourseCode\" value={formValue.vendorCourseCode ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.vendorCourseCodeError}</Form.Text>\r\n </Form.Group>\r\n </Row> \r\n </Form>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={() => { setFormMode(FormMode.None) }}>Close</Button>\r\n <Button style={{ display: formMode == FormMode.New ? \"flex\" : \"none\" }} id=\"save-add-another-content\" variant=\"dark\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save and Add Another</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n <Modal\r\n show={formMode == FormMode.Delete}\r\n onHide={() => { setFormMode(FormMode.None) }}\r\n animation={false}\r\n backdrop=\"static\"\r\n keyboard={false}>\r\n\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Delete Vendor Content </Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n Are you sure you want to delete the Vendor Content?\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n <div className=\"card mt-4\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-10\">Vendor Content</div>\r\n <div className=\"col-2 text-right\">\r\n <button type=\"button\" className=\"btn btn-sm btn-primary\" onClick={(e) => { onFormAction(0, FormMode.New)}}>\r\n <i className=\"fas fa-plus\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"card-body\">\r\n <Grid \r\n data={filterBy(rowData, filter).slice(page.skip, page.take + page.skip)} \r\n filter={filter}\r\n filterable={true} \r\n skip={page.skip}\r\n take={page.take}\r\n total={rowData.length}\r\n pageable={true}\r\n sortable={false}\r\n scrollable={\"none\"}\r\n onPageChange={pageChange}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}>\r\n\r\n <GridColumn field=\"vendorCourseContentName\" title=\"Vendor Course Name\" />\r\n <GridColumn field=\"vendorCourseCode\" title=\"Course Code\" />\r\n <GridColumn field=\"id\" title=\" \" filterable={false} cell={GridColumnButton} width={90} />\r\n </Grid>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport productService from '../../../services/ProductService';\r\nimport vendorService from '../../../services/VendorService';\r\nimport codesetService from '../../../services/CodesetService';\r\nimport IProduct from '../../../model/Product'\r\nimport { Modal, Button, Dropdown, DropdownButton, Form, Row, Col, Card } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridFilterChangeEvent,GridSortChangeEvent, GridToolbar } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor, orderBy, SortDescriptor} from \"@progress/kendo-data-query\";\r\nimport IVendor from '../../../model/Vendor';\r\nimport ICodeSet from '../../../model/Codeset';\r\nimport { FormMode } from '../../../services/Utility'\r\nimport { CaseOrDefaultClause } from 'typescript';\r\n\r\nexport default function Product(props: any) {\r\n const [rowData, setRowData] = useState<IProduct[]>([]);\r\n const [vendors, setVendorList] = useState<IVendor[]>([]);\r\n const options = vendors.map(v => ({\r\n label: v.vendorName,\r\n value: v.id\r\n }));\r\n const [codesetData, setCodeSetData] = useState<ICodeSet[]>([]);\r\n const [priceTypeList, setpriceTypeList] = useState<ICodeSet[]>([]);\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [formValue, setFormValue] = useState<IProduct>({\r\n id: 0,\r\n productSKU: '',\r\n productName: '',\r\n productDescription: '',\r\n price: 0,\r\n vendorId: 0,\r\n vendorName: '',\r\n priceTypeId: 0,\r\n //priceType: '',\r\n isActive: true,\r\n modifiedBy: ''\r\n });\r\n const initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n };\r\n const [filter, setFilter] = useState(initialFilter);\r\n\r\n const initialSort: Array<SortDescriptor> = [\r\n ];\r\n const [sort, setSort] = React.useState(initialSort);\r\n const handleChange = (event: any) => {\r\n const target = event.target //as HTMLSelectElement\r\n const value = target.type === 'checkbox' ? target.checked : target.value\r\n\r\n setFormValue({ ...formValue, [target.name]: value });\r\n };\r\n\r\n const post = (event: any) => {\r\n let product: IProduct = {\r\n productSKU: formValue.productSKU,\r\n productName: formValue.productName,\r\n productDescription: formValue.productDescription,\r\n price: Number(formValue.price),\r\n vendorId: Number(formValue.vendorId),\r\n priceTypeId: Number(formValue.priceTypeId),\r\n //priceType: '',\r\n isActive: formValue.isActive,\r\n modifiedBy: ''\r\n };\r\n productService.post(product).then(response => {\r\n // Display Success message\r\n })\r\n event.preventDefault();\r\n }\r\n\r\n const onFormAction = (productId: number, actionType: FormMode) => {\r\n setErrors({\r\n productNameError: '',\r\n productSKUError: '',\r\n priceError: '',\r\n priceTypeError: '',\r\n });\r\n switch (actionType) {\r\n case FormMode.New:\r\n setFormMode(FormMode.New)\r\n //Clear Existing vlues\r\n let productReset: IProduct = {\r\n id: 0,\r\n productSKU: '',\r\n productName: '',\r\n productDescription: '',\r\n price: 0,\r\n vendorId: props?.selectedVendorId,\r\n priceTypeId: 0,\r\n //priceType: '',\r\n isActive: true,\r\n modifiedBy: ''\r\n };\r\n setFormValue(productReset)\r\n vendorService.getData().then(response => {\r\n setVendorList(response.data)\r\n });\r\n codesetService.getData().then(response => {\r\n setCodeSetData(response.data);\r\n let data = response.data as ICodeSet[]\r\n let priceTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('pricetype'));\r\n setpriceTypeList(priceTypeList);\r\n });\r\n\r\n break;\r\n case FormMode.Edit:\r\n setFormMode(FormMode.Edit)\r\n\r\n vendorService.getData().then(response => {\r\n setVendorList(response.data);\r\n });\r\n\r\n productService.getById(productId).then(productResponse => {\r\n setFormValue(productResponse.data);\r\n });\r\n\r\n codesetService.getData().then(response => {\r\n setCodeSetData(response.data);\r\n let data = response.data as ICodeSet[]\r\n let priceTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('pricetype'));\r\n setpriceTypeList(priceTypeList);\r\n });\r\n\r\n break;\r\n case FormMode.Delete:\r\n let productDetails: IProduct = {\r\n id: productId,\r\n productSKU: '',\r\n productName: '',\r\n productDescription: '',\r\n price: 0,\r\n vendorId: 0,\r\n priceTypeId: 0,\r\n //priceType: '',\r\n isActive: true,\r\n modifiedBy: ''\r\n };\r\n setFormValue(productDetails)\r\n setFormMode(FormMode.Delete)\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const onSave = (event: any, actionType: FormMode) => {\r\n let product: IProduct = {\r\n id: formValue.id,\r\n productSKU: formValue.productSKU,\r\n productName: formValue.productName,\r\n productDescription: formValue.productDescription,\r\n price: Number(formValue.price),\r\n vendorId: Number(formValue.vendorId),\r\n priceTypeId: Number(formValue.priceTypeId),\r\n //priceType: '',\r\n isActive: formValue.isActive,\r\n modifiedBy: ''\r\n };\r\n switch (actionType) {\r\n case FormMode.New:\r\n event.preventDefault();\r\n if (validate()) {\r\n productService.post(product).then(response => {\r\n // Display Success message\r\n getProductData();\r\n const target = event.target \r\n if(target.id == \"save-add-another-product\"){\r\n let productReset: IProduct = {\r\n id: 0,\r\n productSKU: '',\r\n productName: '',\r\n productDescription: '',\r\n price: 0,\r\n vendorId: props?.selectedVendorId,\r\n priceTypeId: 0,\r\n //priceType: '',\r\n isActive: true,\r\n modifiedBy: ''\r\n };\r\n setFormValue(productReset)\r\n setFormMode(FormMode.New)\r\n }else{\r\n setFormMode(FormMode.None)\r\n }\r\n \r\n })\r\n }\r\n //Clear Existing vlues\r\n break;\r\n case FormMode.Edit:\r\n setFormMode(FormMode.Edit)\r\n event.preventDefault();\r\n if (validate()) {\r\n productService.edit(product).then(response => {\r\n // Display Success message\r\n getProductData();\r\n setFormMode(FormMode.None)\r\n })\r\n }\r\n break;\r\n case FormMode.Delete:\r\n setFormMode(FormMode.Delete)\r\n var productId = Number(product.id);\r\n productService.delete(productId).then(response => {\r\n // Display Success message\r\n getProductData();\r\n setFormMode(FormMode.None)\r\n })\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n const getProductData = () => {\r\n productService.getByVendorId(props?.selectedVendorId).then(response => {\r\n setRowData(response.data)\r\n })\r\n }\r\n useEffect(() => {\r\n getProductData();\r\n }, []);\r\n\r\n const [errors, setErrors] = useState({\r\n productNameError: '',\r\n productSKUError: '',\r\n priceError: '',\r\n priceTypeError: '',\r\n })\r\n const validate = () => {\r\n let error = {\r\n productNameError: '',\r\n productSKUError: '',\r\n priceError: '',\r\n priceTypeError: '',\r\n };\r\n\r\n if (formMode == FormMode.New || formMode == FormMode.Edit) {\r\n if (!formValue.productName) { error.productNameError = \"Name is required\"; }\r\n if (!formValue.productSKU) { error.productSKUError = \"SKU is required\"; }\r\n if (!formValue.priceTypeId) { error.priceTypeError = \"Choose Price Type\"; }\r\n if (!formValue.price) { error.priceError = \"Cost is required\"; }\r\n\r\n setErrors(error);\r\n if (error.productNameError || error.productSKUError || error.priceTypeError || error.priceError) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n const GridColumnButton = (props: any) => {\r\n return (\r\n <td className=\"text-right\" style={{ overflow: 'visible' }}>\r\n <DropdownButton\r\n menuAlign=\"right\"\r\n title={<i className='fas fa-bars'></i>}\r\n id=\"dropdown-menu-align-right\"\r\n size=\"sm\"\r\n variant=\"outline-primary\"\r\n className=\"menu-bars\"\r\n >\r\n <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Edit) }}>Edit Pricing</Dropdown.Item>\r\n <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Delete) }}>Delete Pricing</Dropdown.Item>\r\n </DropdownButton>\r\n </td>\r\n )\r\n }\r\n\r\n return (\r\n <div>\r\n <Modal backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Edit || formMode == FormMode.New} onHide={() => { setFormMode(FormMode.None) }}>\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>{formMode == FormMode.Edit ? \"Edit\" : \"Add\"} Vendor Pricing</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <Form>\r\n <input type=\"hidden\" name=\"id\" value={formValue.id ?? ''} onChange={handleChange} />\r\n <Row>\r\n <Form.Group controlId=\"productName\" className=\"col-sm-12\">\r\n <Form.Label>Name</Form.Label>\r\n <Form.Control type=\"text\" name=\"productName\" value={formValue.productName ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.productNameError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"productSKU\" className=\"col-sm-12\">\r\n <Form.Label>famis # (Sku)</Form.Label>\r\n <Form.Control type=\"text\" name=\"productSKU\" value={formValue.productSKU ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.productSKUError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"price\" className=\"col-sm-6\">\r\n <Form.Label>Cost</Form.Label>\r\n <Form.Control type=\"text\" name=\"price\" value={formValue.price ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.priceError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"state\" className=\"col-md-6 col-sm-6\">\r\n <Form.Label>Type</Form.Label>\r\n <Form.Control as=\"select\" name=\"priceTypeId\" value={formValue.priceTypeId} onChange={handleChange}>\r\n <option key={0} defaultValue={0} selected hidden>Choose</option>\r\n {priceTypeList.map((priceTypeOptions) => (\r\n <option key={priceTypeOptions.id} value={priceTypeOptions.id}>{priceTypeOptions.displayText}</option>\r\n ))}\r\n </Form.Control>\r\n <Form.Text className=\"text-danger\">{errors.priceTypeError}</Form.Text>\r\n </Form.Group>\r\n </Row>\r\n </Form>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={() => { setFormMode(FormMode.None) }}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n <Modal\r\n show={formMode == FormMode.Delete}\r\n onHide={() => { setFormMode(FormMode.None) }}\r\n animation={false}\r\n backdrop=\"static\"\r\n keyboard={false}\r\n >\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Delete Product</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n Are you sure you want to delete the Product ?\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n <Card className=\"mt-4\">\r\n <Card.Header className=\"card-header font-weight-bold bg-secondary-light\">\r\n <Row className=\"align-items-center\">\r\n <Col xs={10}>Vendor Pricing</Col>\r\n <Col xs={2} className=\"text-right\">\r\n <Button variant=\"primary\" size=\"sm\" onClick={(e) => { onFormAction(0, FormMode.New)}}>\r\n <i className=\"fas fa-plus\"></i>\r\n </Button>\r\n </Col>\r\n </Row>\r\n </Card.Header>\r\n <Card.Body>\r\n <Grid data={filterBy(rowData, filter)} \r\n filter={filter}\r\n filterable={false} \r\n pageable={false} \r\n sortable={true}\r\n scrollable={\"none\"} \r\n sort={sort}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n onSortChange={(e: GridSortChangeEvent) => {setSort(e.sort);}}\r\n className=\"k-grid-no-header\"\r\n >\r\n <GridColumn field=\"productName\" title=\"Name\" />\r\n <GridColumn field=\"productSKU\" title=\"FAMIS # (SKU)\" />\r\n <GridColumn field=\"Pricing\" filterable={false} sortable={false} title=\"Pricing\" cell={\r\n props => (\r\n <td>\r\n <div>{props.dataItem.price} {props.dataItem.priceType}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"ProductId\" filterable={false} title=\" \" cell={GridColumnButton} />\r\n </Grid>\r\n </Card.Body>\r\n </Card> \r\n </div>\r\n )\r\n}\r\n\r\n","import React, { useState, useEffect, useReducer, useRef } from 'react';\r\nimport { Modal, Button, Dropdown, DropdownButton, Form, Row } from 'react-bootstrap';\r\nimport { Grid, GridColumn, GridFilterChangeEvent } from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor, } from \"@progress/kendo-data-query\";\r\nimport vendorService from '../../../services/VendorService';\r\nimport codesetService from '../../../services/CodesetService';\r\nimport IVendor from '../../../model/Vendor'\r\nimport ICodeSet from '../../../model/Codeset'\r\nimport IStateCode from '../../../model/StateCode'\r\nimport VendorDetail from '../../../shared/VendorDetail'\r\nimport VendorContentManagement from './VendorContentManagement'\r\nimport GridHierarchyExpand from '../../../shared/GridHierarchyExpand'\r\nimport VendorService from '../../../services/VendorService';\r\nimport Product from './Product';\r\nimport { FormMode } from '../../../services/Utility'\r\nimport IconWindowGear from '../../../assets/icons/icon-window-gear';\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n};\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\nexport default function VendorManage() {\r\n\r\n const mountedRef = useRef(true);\r\n //Page Load event - Get data from Service\r\n const [data, setRowData] = useState<IVendor[]>([]);\r\n //Force re-render the child component on Expand\r\n const [ignored, forceUpdate] = useReducer(x => x + 1, 0);\r\n\r\n const [filter, setFilter] = useState(initialFilter);\r\n const [page, setPage] = React.useState(initialDataState);\r\n\r\n const pageChange = (event: any) => {\r\n setChildFormMode(FormMode.None)\r\n setPage(event.page);\r\n };\r\n const getVendorData = () => {\r\n VendorService.getData().then(response => {\r\n setRowData(response.data)\r\n })\r\n return () => { mountedRef.current = false }\r\n }\r\n\r\n useEffect(() => {\r\n getVendorData();\r\n data.map((item: any) => {\r\n item.expanded = false;\r\n item.isSelected = false\r\n return item;\r\n })\r\n return () => { mountedRef.current = false }\r\n }, []);\r\n\r\n //On click of expand this function will call\r\n const SubGridHost = (props: any) => {\r\n // feed data to below components, Call the service Based on the prop.Id\r\n return (\r\n <div className=\"m-0\">\r\n <VendorDetail data={props.dataItem} />\r\n <Product selectedVendorId={props.dataItem?.id} />\r\n <VendorContentManagement vendorId={props.dataItem?.id} updateCourseCount={updateCourseCount} childFormMode={childFormMode} />\r\n </div>\r\n )\r\n }\r\n\r\n const GridColumnButton = (props: any) => {\r\n return (\r\n <td className=\"text-right\" style={{ overflow: 'visible' }}>\r\n <DropdownButton\r\n menuAlign=\"right\"\r\n title={<i className='fas fa-bars'></i>}\r\n id=\"dropdown-menu-align-right\"\r\n size=\"sm\"\r\n variant=\"outline-primary\"\r\n className=\"menu-bars\"\r\n >\r\n <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Edit) }}>Edit Vendor</Dropdown.Item>\r\n {\r\n props.dataItem?.vendorCourseAssignedCount > 0 ? ' ' :\r\n <Dropdown.Item onClick={() => { onFormAction(props.dataItem?.id, FormMode.Delete) }}>Delete Vendor</Dropdown.Item>\r\n }\r\n </DropdownButton>\r\n </td>\r\n )\r\n }\r\n\r\n const GridColumnHierarchyExpand = (props: any) => <GridHierarchyExpand {...props} expandChange={onGridExpand} />\r\n const GridColumnHighLightText = (props: any) => {\r\n return (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className=\"svg-app-icon text-blue-gray mr-3\" style={{ height: \"60px\" }}>\r\n <IconWindowGear />\r\n </div>\r\n <div>\r\n <div className=\"text-dark mb-0 h4 p-0 font-weight-bold\">{props.dataItem.vendorName}</div>\r\n <div>{props.dataItem.city}, {props.dataItem.state}</div>\r\n <div>{props.dataItem.phoneNumber}</div>\r\n </div>\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n const onGridExpand = (dataItem: any) => {\r\n setChildFormMode(FormMode.None)\r\n dataItem.expanded = !dataItem.expanded;\r\n forceUpdate();\r\n }\r\n\r\n const [stateCodes, setStateCodes] = useState<IStateCode[]>([]);\r\n const [codesetData, setCodeSetData] = useState<ICodeSet[]>([]);\r\n const [licenseModel, setLicenseModelList] = useState<ICodeSet[]>([]);\r\n const [licenseType, setLicenseTypeList] = useState<ICodeSet[]>([]);\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [formValue, setFormValue] = useState<IVendor>({\r\n id: 0,\r\n vendorName: '',\r\n vendorDescription: '',\r\n vendorShortName: '',\r\n phoneNumber: '',\r\n vendorEmail: '',\r\n addressLine1: '',\r\n addressLine2: '',\r\n city: '',\r\n state: '',\r\n zip: '',\r\n licenseModelId: 0,\r\n licenseTypeId: 0,\r\n licenseModel: '',\r\n licenseType: '',\r\n assignedContent: 0,\r\n totalContent: 0,\r\n courseCount: 0,\r\n availableLicenses: 0,\r\n totalLicenses: 0,\r\n isActive: true,\r\n modifiedBy: '',\r\n vendorCourseAssignedCount: 0\r\n });\r\n\r\n const handleChange = (event: any) => {\r\n if (event.target.name == 'licenseModelId') {\r\n if ((event.target.value == licenseModel.find(l => l.displayText == 'Per student per enrollment/course')?.id || event.target.value == licenseModel.find(l => l.displayText == 'Unlimited use of catalog for unlimited users')?.id)) {\r\n let data = licenseType\r\n let licenseTypeList = data.filter(x => x.displayText == licenseType.find(t => t.displayText == 'Non-Transferrable')?.displayText);\r\n setLicenseTypeList(licenseTypeList)\r\n let NonTransferrableLicense = licenseType.find(t => t.displayText == 'Non-Transferrable')\r\n if (NonTransferrableLicense) {\r\n formValue.licenseTypeId = NonTransferrableLicense.id ? NonTransferrableLicense.id : 0\r\n setFormValue(formValue);\r\n }\r\n\r\n } else {\r\n let licenseTypeList = codesetData.filter(x => x.codeSetName.toLowerCase().includes('licensetype'));\r\n setLicenseTypeList(licenseTypeList);\r\n }\r\n }\r\n const target = event.target //as HTMLSelectElement\r\n const value = target.type === 'checkbox' ? target.checked : target.value\r\n setFormValue({ ...formValue, [target.name]: value });\r\n };\r\n\r\n const post = (event: any) => {\r\n let vendor: IVendor = {\r\n vendorName: formValue.vendorName,\r\n vendorDescription: formValue.vendorDescription,\r\n vendorShortName: formValue.vendorShortName,\r\n phoneNumber: formValue.phoneNumber,\r\n vendorEmail: formValue.vendorEmail,\r\n addressLine1: formValue.addressLine1,\r\n addressLine2: formValue.addressLine2,\r\n city: formValue.city,\r\n state: formValue.state,\r\n zip: formValue.zip,\r\n isActive: formValue.isActive,\r\n licenseModelId: Number(formValue.licenseModelId),\r\n licenseTypeId: Number(formValue.licenseTypeId),\r\n assignedContent: 0,\r\n totalContent: 0,\r\n courseCount: 0,\r\n availableLicenses: 0,\r\n totalLicenses: 0,\r\n modifiedBy: '',\r\n vendorCourseAssignedCount: 0\r\n };\r\n vendorService.post(vendor).then(response => {\r\n // Display Success message\r\n })\r\n event.preventDefault();\r\n }\r\n\r\n const frameworkComponents = {\r\n btnCellRenderer: (props: any) => {\r\n return (<Button variant=\"primary\" onClick={() => {\r\n props.onClick(props.value, props.formAction)\r\n }}>\r\n {props.buttonText}\r\n </Button>)\r\n }\r\n }\r\n\r\n\r\n const onFormAction = (vendorId: number, actionType: FormMode) => {\r\n setChildFormMode(FormMode.None)\r\n setErrors({\r\n vendorNameError: '',\r\n licenseModelError: '',\r\n licenseTypeError: '',\r\n });\r\n switch (actionType) {\r\n case FormMode.New:\r\n let addVendorDetails: IVendor = {\r\n id: vendorId,\r\n vendorName: '',\r\n vendorDescription: '',\r\n vendorShortName: '',\r\n phoneNumber: '',\r\n vendorEmail: '',\r\n addressLine1: '',\r\n addressLine2: '',\r\n city: '',\r\n state: '',\r\n zip: '',\r\n licenseModelId: 0,\r\n licenseTypeId: 0,\r\n licenseModel: '',\r\n licenseType: '',\r\n assignedContent: 0,\r\n totalContent: 0,\r\n availableLicenses: 0,\r\n totalLicenses: 0,\r\n courseCount: 0,\r\n isActive: true,\r\n modifiedBy: '',\r\n vendorCourseAssignedCount: 0\r\n };\r\n setFormValue(addVendorDetails)\r\n vendorService.getStates().then(response => {\r\n setStateCodes(response.data)\r\n });\r\n codesetService.getData().then(response => {\r\n setCodeSetData(response.data);\r\n let data = response.data as ICodeSet[];\r\n let licenseModelList = data.filter(x => x.codeSetName.toLowerCase().includes('licensemodel'));\r\n setLicenseModelList(licenseModelList);\r\n let licenseTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('licensetype'));\r\n setLicenseTypeList(licenseTypeList);\r\n });\r\n setFormMode(FormMode.New);\r\n //Clear Existing vlues\r\n break;\r\n case FormMode.Edit:\r\n vendorService.getStates().then(response => {\r\n setStateCodes(response.data)\r\n });\r\n codesetService.getData().then(response => {\r\n setCodeSetData(response.data);\r\n let data = response.data as ICodeSet[];\r\n let licenseModelList = data.filter(x => x.codeSetName.toLowerCase().includes('licensemodel'));\r\n setLicenseModelList(licenseModelList);\r\n let licenseTypeList = data.filter(x => x.codeSetName.toLowerCase().includes('licensetype'));\r\n setLicenseTypeList(licenseTypeList);\r\n });\r\n vendorService.getById(vendorId).then(response => {\r\n setFormValue(response.data)\r\n let vendorDetails = response.data as IVendor;\r\n formValue.licenseModelId = vendorDetails.licenseModelId;\r\n formValue.licenseTypeId = vendorDetails.licenseTypeId;\r\n })\r\n setFormMode(FormMode.Edit)\r\n break;\r\n case FormMode.Delete:\r\n //TODO: why vendorDetails Intilized\r\n let vendorDetails: IVendor = {\r\n id: vendorId,\r\n vendorName: '',\r\n vendorDescription: '',\r\n vendorShortName: '',\r\n phoneNumber: '',\r\n vendorEmail: '',\r\n addressLine1: '',\r\n addressLine2: '',\r\n city: '',\r\n state: '',\r\n zip: '',\r\n licenseModelId: 0,\r\n licenseTypeId: 0,\r\n licenseModel: '',\r\n licenseType: '',\r\n assignedContent: 0,\r\n totalContent: 0,\r\n availableLicenses: 0,\r\n totalLicenses: 0,\r\n courseCount: 0,\r\n isActive: true,\r\n modifiedBy: '',\r\n vendorCourseAssignedCount: 0\r\n };\r\n setFormValue(vendorDetails)\r\n setFormMode(FormMode.Delete)\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const onSave = (event: any, actionType: FormMode) => {\r\n\r\n let vendor: IVendor = {\r\n id: formValue.id,\r\n vendorName: formValue.vendorName,\r\n vendorDescription: formValue.vendorDescription,\r\n vendorShortName: formValue.vendorShortName,\r\n phoneNumber: formValue.phoneNumber,\r\n vendorEmail: formValue.vendorEmail,\r\n addressLine1: formValue.addressLine1,\r\n addressLine2: formValue.addressLine2,\r\n city: formValue.city,\r\n state: formValue.state,\r\n zip: formValue.zip,\r\n isActive: formValue.isActive,\r\n licenseModelId: Number(formValue.licenseModelId),\r\n licenseTypeId: Number(formValue.licenseTypeId),\r\n assignedContent: 0,\r\n totalContent: 0,\r\n availableLicenses: 0,\r\n totalLicenses: 0,\r\n courseCount: 0,\r\n modifiedBy: '',\r\n vendorCourseAssignedCount: 0\r\n };\r\n switch (actionType) {\r\n case FormMode.New:\r\n event.preventDefault();\r\n if (validate()) {\r\n vendorService.post(vendor).then(response => {\r\n // Display Success message\r\n getVendorData();\r\n setFormMode(FormMode.None)\r\n })\r\n }\r\n //Clear Existing vlues\r\n\r\n break;\r\n case FormMode.Edit:\r\n\r\n event.preventDefault();\r\n if (validate()) {\r\n vendorService.edit(vendor).then(response => {\r\n // Display Success message\r\n getVendorData(); // TODO : update item in collection instead\r\n setFormMode(FormMode.None)\r\n })\r\n }\r\n break;\r\n case FormMode.Delete:\r\n var vendorId = Number(vendor.id);\r\n vendorService.delete(vendorId).then(response => {\r\n // Display Success message\r\n getVendorData(); // TODO : remove item from collection instead\r\n setFormMode(FormMode.None)\r\n })\r\n break;\r\n default: {\r\n setFormMode(FormMode.None)\r\n break;\r\n }\r\n }\r\n }\r\n const [errors, setErrors] = useState({\r\n vendorNameError: '',\r\n licenseModelError: '',\r\n licenseTypeError: '',\r\n })\r\n const validate = () => {\r\n let error = {\r\n vendorNameError: '',\r\n licenseModelError: '',\r\n licenseTypeError: '',\r\n };\r\n\r\n if (formMode == FormMode.New || formMode == FormMode.Edit) {\r\n if (!formValue.vendorName) { error.vendorNameError = \"Name is required\"; }\r\n\r\n if (!formValue.licenseModelId) { error.licenseModelError = \"Choose License Usage\"; }\r\n\r\n if (!formValue.licenseTypeId) { error.licenseTypeError = \"Choose License Type\"; }\r\n\r\n setErrors(error);\r\n if (error.vendorNameError || error.licenseModelError || error.licenseTypeError) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n const [childFormMode, setChildFormMode] = useState<FormMode>(FormMode.None);\r\n const updateCourseCount = (counter: number, vendorId: number, currentFormMode: FormMode) => {\r\n let vendorArray = data;\r\n let vendorIndex = vendorArray.findIndex(o => o.id == vendorId);\r\n vendorArray[vendorIndex].courseCount += counter\r\n setRowData([...vendorArray.slice(0, vendorIndex), vendorArray[vendorIndex], ...vendorArray.slice(vendorIndex + 1)])\r\n setChildFormMode(currentFormMode);\r\n }\r\n\r\n return (\r\n <div>\r\n <div className=\"text-right mb-2\">\r\n <Button variant=\"primary\" onClick={(e) => { onFormAction(0, FormMode.New) }}><i className=\"fas fa-plus\"></i></Button>\r\n </div>\r\n <Grid\r\n data={filterBy(data, filter).slice(page.skip, page.take + page.skip)}\r\n filter={filter}\r\n filterable={true}\r\n skip={page.skip}\r\n take={page.take}\r\n total={data.length}\r\n pageable={true}\r\n detail={SubGridHost}\r\n expandField={'expanded'}\r\n onPageChange={pageChange}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n scrollable={\"none\"}\r\n >\r\n\r\n <GridColumn field=\"expanded\" filterable={false} cell={GridColumnHierarchyExpand} title=' ' />\r\n <GridColumn field=\"vendorName\" filterable={true} title=\"Vendor\" cell={GridColumnHighLightText} />\r\n <GridColumn field=\"Courses\" filterable={false} title=\"Courses\" cell={\r\n props => (\r\n <td>\r\n <div>{props.dataItem.courseCount}</div>\r\n </td>\r\n )} />\r\n <GridColumn field=\"id\" title=\" \" filterable={false} className=\"text-right\" cell={GridColumnButton} />\r\n </Grid>\r\n\r\n <Modal size=\"lg\" backdrop=\"static\" keyboard={false} animation={false} show={formMode == FormMode.Edit || formMode == FormMode.New} onHide={() => { setFormMode(FormMode.None) }}>\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>{formMode == FormMode.Edit ? \"Edit\" : \"New Vendor Account\"}</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <Form>\r\n <input type=\"hidden\" name=\"id\" value={formValue.id ?? ''} onChange={handleChange} />\r\n <Row>\r\n <div className=\"form-group col-12\">\r\n <h4 className=\"mb-0\">Vendor Information</h4>\r\n </div>\r\n <Form.Group controlId=\"vendorName\" className=\"col-sm-6\">\r\n <Form.Label>Vendor Name</Form.Label>\r\n <Form.Control type=\"text\" name=\"vendorName\" value={formValue.vendorName ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\">{errors.vendorNameError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"vendorShortName\" className=\"col-sm-6\">\r\n <Form.Label>Short Name</Form.Label>\r\n <Form.Control type=\"text\" name=\"vendorShortName\" value={formValue.vendorShortName ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\"></Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"addressLine1\" className=\"col-sm-6\">\r\n <Form.Label>Address Line</Form.Label>\r\n <Form.Control type=\"text\" name=\"addressLine1\" value={formValue.addressLine1 ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\"></Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"addressLine2\" className=\"col-sm-6\">\r\n <Form.Label>Address Line 2</Form.Label>\r\n <Form.Control type=\"text\" name=\"addressLine2\" value={formValue.addressLine2 ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\"></Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"city\" className=\"col-sm-6\">\r\n <Form.Label>City</Form.Label>\r\n <Form.Control type=\"text\" name=\"city\" value={formValue.city ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\"></Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"state\" className=\"col-md-3 col-sm-6\">\r\n <Form.Label>State</Form.Label>\r\n <Form.Control as=\"select\" name=\"state\" value={formValue.state} onChange={handleChange}>\r\n <option key={0} defaultValue={0} selected hidden>Choose</option>\r\n {stateCodes.map((stateCodesOptions) => (\r\n <option defaultValue=\"Choose\" key={stateCodesOptions.stateCode} value={stateCodesOptions.stateCode}>{stateCodesOptions.stateCode}</option>\r\n ))}\r\n </Form.Control>\r\n <Form.Text className=\"text-danger\"></Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"zip\" className=\"col-md-3 col-sm-6\">\r\n <Form.Label>Zip</Form.Label>\r\n <Form.Control type=\"text\" name=\"zip\" value={formValue.zip ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\"></Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"phoneNumber\" className=\"col-sm-6\">\r\n <Form.Label>Phone</Form.Label>\r\n <Form.Control type=\"text\" name=\"phoneNumber\" value={formValue.phoneNumber ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\"></Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"vendorEmail\" className=\"col-sm-6\">\r\n <Form.Label>Email</Form.Label>\r\n <Form.Control type=\"email\" name=\"vendorEmail\" value={formValue.vendorEmail ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\"></Form.Text>\r\n </Form.Group>\r\n <div className=\"form-group col-12\">\r\n <h4 className=\"mb-0\">Vendor Pricing</h4>\r\n </div>\r\n <Form.Group controlId=\"vendorDescription\" className=\"col-12\">\r\n <Form.Label>License Description</Form.Label>\r\n <Form.Control as=\"textarea\" rows={3} name=\"vendorDescription\" value={formValue.vendorDescription ?? ''} onChange={handleChange} />\r\n <Form.Text className=\"text-danger\"></Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"licenseModelId\" className=\"col-sm-6\">\r\n <Form.Label>License Usage</Form.Label>\r\n <Form.Control as=\"select\" name=\"licenseModelId\" value={formValue.licenseModelId ?? 0} onChange={handleChange}>\r\n <option key={0} defaultValue={0} selected hidden>Choose</option>\r\n {licenseModel.map((licenseModelOptions) => (\r\n <option key={licenseModelOptions.id} value={licenseModelOptions.id}>{licenseModelOptions.displayText}</option>\r\n ))}\r\n </Form.Control>\r\n <Form.Text className=\"text-danger\">{errors.licenseModelError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"licenseTypeId\" className=\"col-sm-6\">\r\n <Form.Label>License Type</Form.Label>\r\n <Form.Control as=\"select\" name=\"licenseTypeId\" value={formValue.licenseTypeId ?? 0} onChange={handleChange}>\r\n <option key={0} defaultValue={0} selected hidden>Choose</option>\r\n {licenseType.map((licenseTypeOptions) => (\r\n <option key={licenseTypeOptions.id} value={licenseTypeOptions.id}>{licenseTypeOptions.displayText}</option>\r\n ))}\r\n </Form.Control>\r\n <Form.Text className=\"text-danger\">{errors.licenseTypeError}</Form.Text>\r\n </Form.Group>\r\n </Row>\r\n </Form>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={() => { setFormMode(FormMode.None) }}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n <Modal\r\n show={formMode == FormMode.Delete}\r\n onHide={() => { setFormMode(FormMode.None) }}\r\n animation={false}\r\n backdrop=\"static\"\r\n keyboard={false}>\r\n\r\n <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>Delete Vendor</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n Are you sure you want to delete the vendor ?\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"secondary\" onClick={(e) => { setFormMode(FormMode.None) }}>Cancel</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => { onSave(e, formMode) }}>Delete</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n </div>\r\n )\r\n}","import { AxiosInstances as AxiosInstance} from './BaseService'\r\n\r\nexport default {\r\n getTeachersFromDaap: (locationCode : string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Teacher/Daap/${locationCode}`\r\n }),\r\n\r\n addSchoolLeaders: (req:any) =>\r\n AxiosInstance({\r\n 'method': 'POST',\r\n 'url': '/AddSchoolLeader',\r\n 'data':req\r\n }),\r\n\r\n\r\n getSchoolLeadersDetails: (locationCode : string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/GetSchoolLeaders/${locationCode}`\r\n }),\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Modal, Button, Dropdown, Form, Row } from 'react-bootstrap';\r\nimport {\r\n Grid, GridColumn as Column, GridFilterChangeEvent, GridColumnMenuFilter,\r\n GridColumnMenuProps,\r\n GridSortChangeEvent,\r\n GridColumn\r\n} from '@progress/kendo-react-grid';\r\nimport { filterBy, CompositeFilterDescriptor, } from \"@progress/kendo-data-query\";\r\nimport schoolService from '../../../services/SchoolService'\r\nimport ISchoolSetup from '../../../model/ISchoolSetup'\r\nimport IPrincipalInfo from '../../../model/IPrincipalInfo'\r\nimport ISchoolDaap from '../../../model/ISchoolDaap'\r\nimport { FormMode } from '../../../services/Utility'\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { UserProfileType } from '../../../services/AppContext'\r\nimport LocalStorageService from '../../../services/LocalStorage';\r\nimport { orderBy, SortDescriptor } from \"@progress/kendo-data-query\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport schoolLeaderService from \"../../../services/SchoolLeaderService\";\r\nimport ITeacherFromDaap from \"../../../model/ITeachersFromDaap\";\r\nimport ISchoolLeader from \"../../../model/ISchoolLeader\"\r\nimport { isTemplateSpan } from 'typescript';\r\nimport { propTypes } from 'react-bootstrap/esm/Image';\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 25,\r\n}; \r\n\r\ninterface dropDownData {\r\n id: string\r\n text: string\r\n}\r\n\r\nconst initialSort: Array<SortDescriptor> = [\r\n { field: \"locationCode\", dir: \"asc\" },\r\n];\r\n\r\n\r\n\r\nexport default function SchoolManage() {\r\n\r\n const mountedRef = useRef(true);\r\n const [data, setRowData] = useState<ISchoolSetup[]>([]);\r\n const [principalInfo, setPrincipalInfo] = useState<IPrincipalInfo>({\r\n id: 0,\r\n locationName: '',\r\n locationCode: '',\r\n principalFullName: '',\r\n principalEmail: ''\r\n });\r\n const [schoolsFromDaap, setSchoolsFromDaap] = useState<dropDownData[]>([]);\r\n const [schoolsDaap, setSchoolsDaap] = useState<dropDownData[]>([]);\r\n let [userProfile, setUserProfile] = useState<UserProfileType>();\r\n const [schoolList, setSchoolList] = useState<ISchoolDaap[]>([]);\r\n\r\n const [checkedTeachers, setCheckedTeachers] = useState<ISchoolLeader[]>([]);\r\n const initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [],\r\n };\r\n const [filter, setFilter] = useState(initialFilter);\r\n\r\n // school leaders filter\r\n const [schoolLeadersFilter, setSchoolLeadersFilter] = useState(initialFilter);\r\n\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [page, setPage] = React.useState(initialDataState);\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n };\r\n\r\n const [locationCode, setLocationCode] = React.useState(\"\");\r\n const [teacherList, setTeacherList] = useState<ITeacherFromDaap[]>([]);\r\n\r\n const [headerCheckBoxValue, setHeaderCheckBox] = useState(false);\r\n const onHeaderCheckBoxClick = (event: any, products?: any) => {\r\n let checked = event.target.checked;\r\n if(checked == true){\r\n data.map((t:any)=>t.isSelected = true)\r\n }else{\r\n data.map((t:any)=>t.isSelected = false)\r\n }\r\n setHeaderCheckBox(checked)\r\n }\r\n const onGridCheckBoxClick = (dataItem: any) => {\r\n dataItem.isSelected = !dataItem.isSelected;\r\n if (dataItem.isSelected) {\r\n let items: ISchoolLeader = {\r\n staffID: dataItem.pmsId,\r\n email: dataItem.doeEmail ? dataItem.doeEmail : \"\",\r\n firstName: dataItem.firstName,\r\n lastName: dataItem.lastName,\r\n actionCode: \"A\",\r\n createdBy: LocalStorageService.getUserProfile().userName,\r\n loginID: dataItem.doeEmail ? dataItem.doeEmail.substring(0, dataItem.doeEmail.indexOf(\"@\")) : \"\",\r\n }\r\n if (items.email == \"\") {\r\n setErrors(\"Email is required\")\r\n dataItem.isSelected = !dataItem.isSelected\r\n return\r\n } else {\r\n setCheckedTeachers([...checkedTeachers, items])\r\n }\r\n\r\n } else {\r\n const items = checkedTeachers.filter(item => item.staffID !== dataItem.pmsId);\r\n setCheckedTeachers(items);\r\n }\r\n }\r\n\r\n const addSchoolLeader = (props: any) => {\r\n\r\n let schoolLeader = {\r\n schoolLeader: checkedTeachers,\r\n associatedLocation: locationCode\r\n }\r\n schoolLeaderService.addSchoolLeaders(schoolLeader).then(res => {\r\n if (res.data.isValidResponse == true) {\r\n setSchoolLeaderVisible(!schoolLeaderVisible);\r\n setCheckedTeachers([])\r\n getSchoolData()\r\n setErrors(\"\")\r\n } else {\r\n setErrors(res.data.errors[0])\r\n }\r\n }, error => setErrors(\"Unable to add school leader to D2L\"))\r\n }\r\n\r\n const [visible, setVisible] = React.useState(false);\r\n\r\n const toggleDialog = () => {\r\n setVisible(!visible);\r\n let addSchoolDetails: ISchoolDaap = {\r\n schoolName: '',\r\n districtNumber: '',\r\n boroughCode: '',\r\n locationCode: '',\r\n addressLine1: '',\r\n addressLine2: '',\r\n city: '',\r\n principalName: '',\r\n principalTitle: '',\r\n };\r\n setFormValue(addSchoolDetails)\r\n setErrors(\"\")\r\n };\r\n\r\n const [schoolLeaderVisible, setSchoolLeaderVisible] = React.useState(false);\r\n\r\n const toggleSchoolLeaderDialog = (props: any) => {\r\n if (schoolLeaderVisible == false) {\r\n setLocationCode(props.dataItem.locationCode)\r\n schoolLeaderService.getTeachersFromDaap(props.dataItem.locationCode).then(res => {\r\n setTeacherList(res.data)\r\n })\r\n }\r\n setSchoolLeaderVisible(!schoolLeaderVisible);\r\n setCheckedTeachers([])\r\n setErrors(\"\")\r\n };\r\n\r\n const [principalUpdateVisible, setPrincipalUpdateVisible] = React.useState(false);\r\n\r\n const togglePrincipalUpdateDialog = (props: any) => {\r\n let data:IPrincipalInfo={\r\n id: 0,\r\n locationName: '',\r\n locationCode: '',\r\n principalFullName: '',\r\n principalEmail: ''\r\n }\r\n setPrincipalInfo(data)\r\n if (principalUpdateVisible == false) {\r\n setLocationCode(props.dataItem.locationCode)\r\n schoolService.getPrincipalInfoBySchoolDBN(props.dataItem.locationCode).then(res => {\r\n setPrincipalInfo(res.data)\r\n })\r\n }\r\n setPrincipalUpdateVisible(!principalUpdateVisible);\r\n setErrors(\"\")\r\n };\r\n\r\n\r\n const [schoolLeaderListVisible, setSchoolLeaderListVisible] = React.useState(false);\r\n const [schoolLeaderList, setSchoolLeaderList] = useState<ITeacherFromDaap[]>([]);\r\n\r\n const toggleSchoolLeaderListDialog = (props: any) => {\r\n if (schoolLeaderListVisible == false) {\r\n setLocationCode(props.dataItem.locationCode)\r\n schoolLeaderService.getSchoolLeadersDetails(props.dataItem.locationCode).then(res => {\r\n setSchoolLeaderList(res.data)\r\n })\r\n } else {\r\n setSchoolLeaderList([])\r\n setErrors(\"\")\r\n }\r\n setSchoolLeaderListVisible(!schoolLeaderListVisible);\r\n\r\n };\r\n\r\n const getSchoolData = () => {\r\n schoolService.getData().then(response => {\r\n \r\n let data = response.data.map((s: any) => ({\r\n schoolDetails: s.locationCode + s.schoolName,\r\n locationCode: s.locationCode,\r\n schoolName: s.schoolName,\r\n id: s.id,\r\n districtCode: s.districtCode,\r\n boroughCode: s.boroughCode,\r\n address: s.address,\r\n principalFullName: s.principalFullName,\r\n learningEnvironmentID: s.learningEnvironmentID,\r\n createdBy: s.createdBy,\r\n schoolLeadersCount: s.schoolLeadersCount,\r\n }))\r\n setRowData(data)\r\n })\r\n return () => { mountedRef.current = false }\r\n }\r\n\r\n\r\n\r\n const getSchoolDataFromDaap = () => {\r\n schoolService.getSchoolsFromDaap().then(response => {\r\n let data = response.data.map((sl: any) => ({\r\n id: sl.locationCode,\r\n text: sl.locationCode + ' -- ' + sl.schoolName\r\n }))\r\n setSchoolsFromDaap(data)\r\n setSchoolsDaap(data)\r\n setSchoolList(response.data)\r\n })\r\n return () => { mountedRef.current = false }\r\n }\r\n\r\n useEffect(() => {\r\n getSchoolData();\r\n getSchoolDataFromDaap()\r\n return () => { mountedRef.current = false }\r\n }, []);\r\n\r\n\r\n\r\n const GridColumnButton = (props: any) => {\r\n return (\r\n <td style={{ overflow: 'visible' }}>\r\n <Dropdown>\r\n <Dropdown.Toggle className=\"menu-bars\" size=\"sm\" variant=\"outline-primary\" id=\"dropdown-basic\">\r\n <i className=\"fas fa-bars\"></i>\r\n </Dropdown.Toggle>\r\n <Dropdown.Menu>\r\n <Dropdown.Item onClick={() => { toggleSchoolLeaderDialog(props) }}>Add School Leaders</Dropdown.Item>\r\n <Dropdown.Item onClick={() => { togglePrincipalUpdateDialog(props) }}>Update Principal</Dropdown.Item>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n </td>)\r\n }\r\n\r\n\r\n const GridColumnHighLightText = (props: any) => {\r\n return (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div>\r\n <div className=\"text-dark mb-0 h4 p-0 font-weight-bold\">{props.dataItem.locationCode} - {props.dataItem.schoolName}</div>\r\n <div style={{ color: \"#707782\", margin: \"2px\" }}>{props.dataItem.address}</div>\r\n <div style={{ color: \"#707782\" }}> Principal: {props.dataItem.principalFullName}</div>\r\n </div>\r\n </div>\r\n </td>\r\n )\r\n }\r\n const [formMode, setFormMode] = useState<FormMode>(FormMode.None);\r\n const [formValue, setFormValue] = useState<ISchoolDaap>({\r\n schoolName: '',\r\n districtNumber: '',\r\n boroughCode: '',\r\n locationCode: '',\r\n addressLine1: '',\r\n addressLine2: '',\r\n city: '',\r\n principalName: '',\r\n principalTitle: '',\r\n });\r\n\r\n\r\n const filterData = (filter: any) => {\r\n let data = schoolsFromDaap.slice();\r\n return filterBy(data, filter);\r\n }\r\n\r\n const filterChange = (event: any) => {\r\n let data = filterData(event.filter)\r\n setSchoolsDaap(data)\r\n }\r\n\r\n const handleChange = (event: any) => {\r\n setErrors(\"\");\r\n let school = schoolList.find(s => s.locationCode == event.target.value.id)\r\n if (school) {\r\n\r\n let addSchoolDetails: ISchoolDaap = {\r\n schoolName: school.schoolName,\r\n districtNumber: school.districtNumber,\r\n boroughCode: school.boroughCode,\r\n locationCode: school.locationCode,\r\n addressLine1: school.addressLine1,\r\n addressLine2: school.addressLine2,\r\n city: school.city,\r\n principalName: school.principalName,\r\n principalTitle: school.principalTitle,\r\n };\r\n setFormValue(addSchoolDetails)\r\n }\r\n };\r\n const handlePrincipalChange = (event: any) => {\r\n if (event.target.name == 'principalFullName') {\r\n let data ={\r\n \"id\":principalInfo?.id,\r\n \"locationCode\": principalInfo?.locationCode,\r\n \"locationName\": principalInfo?.locationName,\r\n \"principalFullName\": event.target.value,\r\n \"principalEmail\": principalInfo.principalEmail,\r\n }\r\n setPrincipalInfo(data)\r\n }\r\n if (event.target.name == 'principalEmail') {\r\n let data ={\r\n \"id\":principalInfo?.id,\r\n \"locationCode\": principalInfo?.locationCode,\r\n \"locationName\": principalInfo?.locationName,\r\n \"principalFullName\": principalInfo?.principalFullName,\r\n \"principalEmail\": event.target.value,\r\n }\r\n setPrincipalInfo(data)\r\n }\r\n };\r\n const onFormAction = (schoolId: number, actionType: FormMode) => {\r\n setErrors(\"\");\r\n switch (actionType) {\r\n case FormMode.New:\r\n getSchoolDataFromDaap();\r\n if (schoolList && schoolList.length > 0) {\r\n let addSchoolDetails: ISchoolDaap = {\r\n schoolName: schoolList[1].schoolName,\r\n districtNumber: schoolList[1].districtNumber,\r\n boroughCode: schoolList[1].boroughCode,\r\n locationCode: schoolList[1].locationCode,\r\n addressLine1: schoolList[1].addressLine1,\r\n addressLine2: schoolList[1].addressLine2,\r\n city: schoolList[1].city,\r\n principalName: schoolList[1].principalName,\r\n principalTitle: schoolList[1].principalTitle,\r\n };\r\n setFormValue(addSchoolDetails)\r\n } else {\r\n let addSchoolDetails: ISchoolDaap = {\r\n schoolName: '',\r\n districtNumber: '',\r\n boroughCode: '',\r\n locationCode: '',\r\n addressLine1: '',\r\n addressLine2: '',\r\n city: '',\r\n principalName: '',\r\n principalTitle: '',\r\n };\r\n setFormValue(addSchoolDetails)\r\n }\r\n setFormMode(FormMode.New);\r\n setErrors(\"\");\r\n break;\r\n\r\n default: {\r\n setFormMode(FormMode.None)\r\n setFormValue({\r\n schoolName: '',\r\n districtNumber: '',\r\n boroughCode: '',\r\n locationCode: '',\r\n addressLine1: '',\r\n addressLine2: '',\r\n city: '',\r\n principalName: '',\r\n principalTitle: '',\r\n })\r\n setErrors(\"\");\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const onSave = (event: any, actionType: FormMode) => {\r\n if (!formValue.locationCode || formValue.locationCode == \"\") {\r\n setErrors(\"Please select school \");\r\n return\r\n }\r\n\r\n if (!formValue.schoolName || formValue.schoolName == \"\") {\r\n setErrors(\"Please select school \");\r\n return\r\n }\r\n\r\n if (!formValue.districtNumber || formValue.districtNumber == \"\") {\r\n setErrors(\"Please select school \");\r\n return\r\n }\r\n\r\n if (!formValue.boroughCode || formValue.boroughCode == \"\") {\r\n setErrors(\"Please select school \");\r\n return\r\n }\r\n let checkSchool = data.find(s => s.locationCode == formValue.locationCode)\r\n if (checkSchool) {\r\n setErrors(\"School already setup\")\r\n return\r\n }\r\n userProfile = LocalStorageService.getUserProfile()\r\n let school = {\r\n \"iLearnNYCUserID\": userProfile.userName,\r\n \"locationCode\": formValue.locationCode,\r\n \"schoolName\": formValue.schoolName,\r\n \"districtCode\": formValue.districtNumber,\r\n \"boroughCode\": formValue.boroughCode,\r\n \"principalFullName\": formValue.principalName,\r\n }\r\n schoolService.getSchoolOrgFromEndPoint(school)\r\n .then(response => {\r\n if (response.data.isValidResponse == true) {\r\n toggleDialog();\r\n getSchoolData();\r\n } else {\r\n setErrors(response.data.errors)\r\n }\r\n }, error => {\r\n setErrors(error.message)\r\n });\r\n\r\n }\r\n\r\n const onPrincipalSave = (event: any, actionType: FormMode) => {\r\n let principal = {\r\n \"id\":principalInfo.id,\r\n \"locationCode\": principalInfo.locationCode,\r\n \"locationName\": principalInfo.locationName,\r\n \"principalFullName\": principalInfo.principalFullName,\r\n \"principalEmail\": principalInfo.principalEmail\r\n }\r\n if (principalInfo.principalFullName===\"\" && principalInfo.principalEmail===\"\")\r\n {\r\n setErrors(\"Principal Name and Email are required.\")\r\n }\r\n else if(principalInfo.principalFullName===\"\")\r\n {\r\n setErrors(\"Principal Name is required.\")\r\n }\r\n else if(principalInfo.principalEmail===\"\")\r\n {\r\n setErrors(\"Principal Email is required.\")\r\n }\r\n else{\r\n schoolService.updatePrincipal(principal)\r\n .then(response => {\r\n if (response.data.isValidResponse == true) {\r\n setPrincipalUpdateVisible(!principalUpdateVisible);\r\n getSchoolData();\r\n } else {\r\n setErrors(response.data.errors)\r\n }\r\n }, error => {\r\n setErrors(error.message)\r\n });\r\n }\r\n\r\n }\r\n const [errors, setErrors] = useState(\"\");\r\n return (\r\n <div>\r\n <div className=\"text-right mb-2\">\r\n <Button variant=\"primary\" onClick={toggleDialog}><i className=\"fas fa-plus\"></i></Button>\r\n\r\n </div>\r\n <Grid\r\n data={filterBy(orderBy(data, sort), filter).slice(page.skip, page.take + page.skip)}\r\n filter={filter}\r\n filterable={true}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => {\r\n setSort(e.sort);\r\n }}\r\n pageable={true}\r\n skip={page.skip}\r\n take={page.take}\r\n total={data.length}\r\n onPageChange={pageChange}\r\n onFilterChange={(e: GridFilterChangeEvent) =>{\r\n setFilter(e.filter)\r\n } }>\r\n <Column field=\"School Leaders\" width=\"100px\" filterable={false} title=\" \" cell={\r\n props => (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className=\"svg-app-icon text-secondary\" style={{ width: \"50px\" }}>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 49.551 50\">\r\n <title>School</title>\r\n <g transform=\"translate(-797.418 -33.62)\">\r\n <path d=\"M828.852,59.886a5.756,5.756,0,1,0,5.757,5.756A5.762,5.762,0,0,0,828.852,59.886Zm0,9.29a3.534,3.534,0,1,1,3.535-3.534A3.537,3.537,0,0,1,828.852,69.176Z\" transform=\"translate(-6.659 -6.811)\"></path>\r\n <rect width=\"2.592\" height=\"3.824\" transform=\"translate(805.741 70.388)\"></rect>\r\n <rect width=\"2.592\" height=\"3.824\" transform=\"translate(805.741 76.316)\"></rect>\r\n <path d=\"M832.658,86.042h-6.995a1.3,1.3,0,0,0-1.3,1.3c0,.013,0,.025,0,.037s0,.025,0,.038v8.458a1.3,1.3,0,1,0,2.592,0V88.634H831.4v7.237a1.3,1.3,0,0,0,2.592,0V87.413a1.409,1.409,0,0,0-1.338-1.371Z\" transform=\"translate(-6.988 -13.593)\"></path>\r\n <rect width=\"2.592\" height=\"3.824\" transform=\"translate(836.055 70.388)\"></rect>\r\n <rect width=\"2.592\" height=\"3.824\" transform=\"translate(836.055 76.316)\"></rect>\r\n <path d=\"M857.286,65.881H844.8V62.4l-2.592-1.341V89.439a1.3,1.3,0,1,0,2.592,0V73.679h12.489a1.3,1.3,0,0,0,1.3-1.3v-5.2A1.3,1.3,0,0,0,857.286,65.881Zm-1.3,5.2H844.84V68.474h11.15Z\" transform=\"translate(-11.614 -7.116)\"></path>\r\n <path d=\"M801.168,94.575a1.3,1.3,0,0,0,2.592,0V81.043h-2.592Z\" transform=\"translate(-0.972 -12.297)\"></path>\r\n <path d=\"M857.067,94.575a1.3,1.3,0,0,0,2.592,0V81.043h-2.592Z\" transform=\"translate(-15.467 -12.297)\"></path>\r\n <path d=\"M811.2,65.863h-12.49a1.3,1.3,0,0,0-1.3,1.3v5.2a1.3,1.3,0,0,0,1.3,1.3H811.2V89.42a1.3,1.3,0,1,0,2.592,0V60.988L811.2,62.329Zm-.042,5.2H800.01V68.455h11.151Z\" transform=\"translate(0 -7.097)\"></path>\r\n <path d=\"M811.656,54.125a1.283,1.283,0,0,0,.595-.146l13.3-6.881,13.3,6.881a1.283,1.283,0,0,0,.595.146,1.3,1.3,0,0,0,.6-2.448l-13.114-6.786a1.293,1.293,0,0,0-.121-.184,1.263,1.263,0,0,0,.026-.256v-2.03l7.394-2.989a1.284,1.284,0,0,0,.226-.119l0,0a1.294,1.294,0,0,0,.253-.227c.018-.02.033-.041.051-.061a1.394,1.394,0,0,0,.178-.3l0-.006c.01-.025.014-.051.023-.076a1.36,1.36,0,0,0,.047-.161c.007-.039.009-.076.013-.114s.012-.09.013-.137a1.226,1.226,0,0,0-.012-.128c0-.041-.005-.081-.013-.123a1.2,1.2,0,0,0-.045-.153c-.009-.027-.013-.056-.024-.083l0-.008a1.177,1.177,0,0,0-.093-.176c-.01-.016-.016-.035-.027-.05a1.293,1.293,0,0,0-.3-.315c-.018-.013-.032-.028-.05-.04s-.049-.026-.073-.04a1.5,1.5,0,0,0-.152-.081l-.009,0L826.1,33.715a1.4,1.4,0,0,0-1.86,1.273v9.464a1.27,1.27,0,0,0,.035.287,1.323,1.323,0,0,0-.1.152L811.06,51.677a1.3,1.3,0,0,0,.6,2.448Zm15.175-17.312,3.463,1.411-3.463,1.4Z\" transform=\"translate(-3.356)\"></path>\r\n </g>\r\n </svg>\r\n </div>\r\n </div>\r\n </td>\r\n )} />\r\n <Column field=\"schoolDetails\" title=\"Schools\" cell={GridColumnHighLightText} />\r\n <Column filterable={false} cell={\r\n props => (\r\n <td>\r\n\r\n <div style={{ cursor: 'pointer' }} onClick={() => toggleSchoolLeaderListDialog(props)} ><b>School Leaders({props.dataItem.schoolLeadersCount ? props.dataItem.schoolLeadersCount : 0})</b></div>\r\n\r\n </td>\r\n )} />\r\n <Column field=\"id\" title=\" \" filterable={false} className=\"text-right\" cell={GridColumnButton} width={90} />\r\n </Grid>\r\n {visible &&\r\n <Dialog title={\"Add New School\"} onClose={toggleDialog}>\r\n\r\n {/* <Modal.Header closeButton className=\"bg-primary text-white\">\r\n <Modal.Title>{formMode == FormMode.Edit ? \"Edit\" : \"New School Setup\"}</Modal.Title>\r\n </Modal.Header> */}\r\n {/* <Modal.Body> */}\r\n {\r\n errors != \"\" ?\r\n <div className=\"alert alert-danger\" >\r\n {errors}\r\n </div> : <div></div>\r\n }\r\n <Row>\r\n <div className=\"form-group col-12\">\r\n <DropDownList style={{ width: \"350px\" }}\r\n data={schoolsDaap}\r\n textField=\"text\"\r\n filterable={true}\r\n onChange={handleChange}\r\n onFilterChange={filterChange}\r\n />\r\n </div>\r\n </Row>\r\n\r\n <Form>\r\n <Row>\r\n <Form.Group controlId=\"principalName\" className=\"col-12\">\r\n <Form.Label>Principal Name</Form.Label>\r\n <Form.Control readOnly type=\"text\" name=\"principalName\" value={formValue.principalName ?? ''} />\r\n </Form.Group>\r\n <Form.Group controlId=\"districtNumber\" className=\"col-sm-6\">\r\n <Form.Label>District Number</Form.Label>\r\n <Form.Control readOnly type=\"text\" name=\"districtNumber\" value={formValue.districtNumber ?? ''} />\r\n </Form.Group>\r\n <Form.Group controlId=\"boroughCode\" className=\"col-sm-6\">\r\n <Form.Label>Borough Code</Form.Label>\r\n <Form.Control readOnly type=\"text\" name=\"boroughCode\" value={formValue.boroughCode ?? ''} />\r\n </Form.Group>\r\n </Row>\r\n </Form>\r\n {/* </Modal.Body> */}\r\n <DialogActionsBar>\r\n <Button className=\"m-2\" variant=\"secondary\" onClick={toggleDialog}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onSave(e, formMode)}>Save</Button>\r\n </DialogActionsBar>\r\n </Dialog>\r\n }\r\n\r\n{principalUpdateVisible &&\r\n <Dialog title={\"Update Principal\"} onClose={togglePrincipalUpdateDialog}>\r\n {\r\n errors != \"\" ?\r\n <div className=\"alert alert-danger\" >\r\n {errors}\r\n </div> : <div></div>\r\n }\r\n <Row>\r\n <div className=\"form-group col-12\">\r\n {principalInfo?.locationCode} - {principalInfo?.locationName}\r\n </div>\r\n </Row>\r\n\r\n <Form>\r\n <Row>\r\n <Form.Group controlId=\"principalFullName\" className=\"col-12\">\r\n <Form.Label>Principal Name</Form.Label>\r\n <Form.Control required type=\"text\" name=\"principalFullName\" defaultValue={principalInfo.principalFullName}onBlur={handlePrincipalChange} />\r\n </Form.Group>\r\n <Form.Group controlId=\"principalEmail\" className=\"col-sm-6\">\r\n <Form.Label>Principal Email</Form.Label>\r\n <Form.Control required type=\"text\" name=\"principalEmail\" defaultValue={principalInfo.principalEmail} onBlur={handlePrincipalChange} />\r\n </Form.Group> \r\n </Row>\r\n </Form>\r\n <DialogActionsBar>\r\n <Button className=\"m-2\" variant=\"secondary\" onClick={togglePrincipalUpdateDialog}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => onPrincipalSave(e, formMode)}>Save</Button>\r\n </DialogActionsBar>\r\n </Dialog>\r\n }\r\n\r\n\r\n {schoolLeaderVisible &&\r\n <Dialog title={\"Add New School Leader\"} onClose={toggleSchoolLeaderDialog} style={{ width: \"75%\", position: \"fixed\", left: \"15%\" }} >\r\n {\r\n errors != \"\" ?\r\n <div className=\"alert alert-danger\" >\r\n {errors}\r\n </div> : <div></div>\r\n }\r\n\r\n <Grid\r\n data={filterBy(teacherList, schoolLeadersFilter)}\r\n filter={schoolLeadersFilter}\r\n filterable={true}\r\n onFilterChange={(e: GridFilterChangeEvent) => setSchoolLeadersFilter(e.filter)}\r\n style={{ height: '350px' }}>\r\n <GridColumn field=\"isSelected\" filterable={false} width=\"40px\" headerCell={props => (<input type=\"checkbox\" checked={headerCheckBoxValue} onChange={(e) => onHeaderCheckBoxClick(e)} />)} cell={props => (\r\n <td>\r\n <input type=\"checkbox\" checked={props.dataItem.isSelected} onChange={() => onGridCheckBoxClick(props.dataItem)} />\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"firstName\" title=\"First Name\" />\r\n <GridColumn field=\"lastName\" title=\"Last Name\" />\r\n <GridColumn field=\"doeEmail\" title=\"Email\" />\r\n\r\n </Grid>\r\n\r\n\r\n <DialogActionsBar>\r\n <Button className=\"m-2\" variant=\"secondary\" onClick={toggleSchoolLeaderDialog}>Close</Button>\r\n <Button variant=\"primary\" type=\"button\" onClick={(e) => addSchoolLeader(e)}>Save</Button>\r\n </DialogActionsBar>\r\n </Dialog>\r\n }\r\n\r\n\r\n {schoolLeaderListVisible &&\r\n <Dialog title={\"School Leaders\"} onClose={toggleSchoolLeaderListDialog} style={{ width: \"75%\", position: \"fixed\", left: \"15%\" }} >\r\n {\r\n errors != \"\" ?\r\n <div className=\"alert alert-danger\" >\r\n {errors}\r\n </div> : <div></div>\r\n }\r\n\r\n <Grid\r\n data={schoolLeaderList}\r\n\r\n style={{ height: '350px' }}>\r\n\r\n <GridColumn field=\"firstName\" title=\"First Name\" />\r\n <GridColumn field=\"lastName\" title=\"Last Name\" />\r\n <GridColumn field=\"doeEmail\" title=\"Email\" />\r\n </Grid>\r\n <DialogActionsBar>\r\n <Button className=\"m-2\" variant=\"secondary\" onClick={toggleSchoolLeaderListDialog}>Close</Button>\r\n </DialogActionsBar>\r\n </Dialog>\r\n }\r\n\r\n </div>\r\n )\r\n}","import { AxiosInstances as AxiosInstance } from './BaseService'\r\nexport default {\r\n getStudentByLocationCode: (locationCode: string, schoolYear: number, pageNumber: number, pageSize: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Student/${locationCode}/${schoolYear}/${pageNumber}/${pageSize}`\r\n }),\r\n\r\n\r\n getStaffByLocationCode: (locationCode: string, schoolYear: number, pageNumber: number, pageSize: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Staff/${locationCode}/${schoolYear}/${pageNumber}/${pageSize}`\r\n }),\r\n\r\n SearchStudentByLocationCode: (locationCode: string, schoolYear: number, pageNumber: number, pageSize: number, search: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Student/${locationCode}/${schoolYear}/${pageNumber}/${pageSize}/${search}`\r\n }),\r\n\r\n SearchStaffByLocationCode: (locationCode: string, schoolYear: number, pageNumber: number, pageSize: number, search: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/Staff/${locationCode}/${schoolYear}/${pageNumber}/${pageSize}/${search}`\r\n }),\r\n\r\n getStudentCoursesById: (locationCode: string, schoolYear: number, id: number) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/StudentCourses/${locationCode}/${schoolYear}/${id}`\r\n }),\r\n\r\n getStaffCoursesById: (locationCode: string, schoolYear: number, id: string) =>\r\n AxiosInstance({\r\n 'method': 'GET',\r\n 'url': `/StaffCourses/${locationCode}/${schoolYear}/${id}`\r\n }),\r\n}","import { useEffect, useState, useContext } from \"react\";\r\nimport studentAndStaffService from '../../services/StudentAndStaffService'\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { Year } from '../../services/AppContext';\r\nimport IconCourseEnvelop from '../../assets/icons/icon-envelop-course';\r\ninterface StudentAndStaffCourses {\r\n courseName: string,\r\n courseCode: string,\r\n courseOrginType: string,\r\n courseStatus: string,\r\n isMerged: boolean\r\n}\r\n\r\ninterface StudentAndStaffProps {\r\n id: number,\r\n locationCode: string\r\n}\r\n\r\nexport default function StudentCoursesDetails(props: StudentAndStaffProps) {\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [data, setRowData] = useState<StudentAndStaffCourses[]>([]);\r\n const getAllStudentAndStaffCourses = () => {\r\n studentAndStaffService.getStudentCoursesById(props.locationCode, +orginalSchoolYear.id, props.id).then(response => {\r\n setRowData(response.data)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n getAllStudentAndStaffCourses();\r\n }, [props]);\r\n\r\n return (\r\n <div>\r\n <div className=\"card mt-4\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-10\">\r\n {\"Enrolled in \" + data.length + \" Courses\"}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div className=\"card-body\">\r\n <Grid\r\n data={data}\r\n className=\"k-grid-no-header\"\r\n >\r\n <GridColumn filterable={false} width=\"80px\" field=\"expanded\" title=' ' cell={props => (\r\n <td className=\"pr-0\">\r\n <div className={`svg-app-icon ${props.dataItem.courseStatus.toLowerCase() === \"published\" ? \" text-success\" : \" text-blue-gray\"} mr-3\"`} style={{ height: \"40px\" }}>\r\n <IconCourseEnvelop courseType= {props.dataItem.courseType} courseOrginType={props.dataItem.courseOrginType} merge={props.dataItem.isMerged}></IconCourseEnvelop>\r\n </div>\r\n </td>\r\n\r\n )} />\r\n <GridColumn field=\"\" title=\"\"\r\n cell={\r\n props => (\r\n <td>\r\n <div>{props.dataItem.courseName}</div>\r\n {props.dataItem.courseCode && <div>{props.dataItem.courseCode}</div>}\r\n </td>\r\n )} />\r\n </Grid>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}","import { useEffect, useRef, useState } from \"react\";\r\nimport { IStudentInfo } from '../../model/IStudentAndStaffInfo';\r\nimport studentAndStaffService from '../../services/StudentAndStaffService'\r\nimport { Grid, GridColumn, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport IconStudnetOutline from \"../../assets/icons/icon-student-outline\";\r\nimport StudentCoursesDetails from './StudentCoursesDetails';\r\nimport SplashScreen from '../../shared/SplashScreen'\r\n\r\ninterface Props {\r\n locationCode: string,\r\n schoolYear: number,\r\n searchNameOrId: string,\r\n searchForData: boolean\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\nexport default function Student(props: Props) {\r\n const [data, setRowData] = useState<IStudentInfo[]>([]);\r\n const [page, setPage] = useState(initialDataState);\r\n const [searchForData, setSearchForData] = useState(false);\r\n const [search, setSearch] = useState(false);\r\n const [loading, setIsLoading] = useState(false);\r\n const [pageAlert, setPageAlert] = useState<string>('');\r\n const mountedRef = useRef(true)\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n let currentPage = (event.page.skip / event.page.take) + 1\r\n getStudentDataByLocationCode(currentPage, event.page.take, props.searchNameOrId)\r\n };\r\n\r\n const onGridExpand = (event: any) => {\r\n let newData = data.map(item => {\r\n if (item.id === event.dataItem.id) {\r\n item.expanded = !event.dataItem.expanded;\r\n }\r\n return item;\r\n });\r\n setRowData(newData);\r\n }\r\n\r\n const SubGridHost = (courses: any) => {\r\n return (\r\n <div>\r\n <StudentCoursesDetails id={courses.dataItem.id} locationCode={props.locationCode} />\r\n </div>\r\n )\r\n }\r\n\r\n const getStudentDataByLocationCode = async (pageNumber: number, pageSize: number, search: string) => {\r\n if (props.schoolYear != 0 && props.locationCode != '') {\r\n setIsLoading(true)\r\n if (search != '') {\r\n await studentAndStaffService.SearchStudentByLocationCode(props.locationCode, props.schoolYear, pageNumber, pageSize, search.replaceAll(' ', '')).then(response => {\r\n setRowData(response.data);\r\n setSearch(true)\r\n setIsLoading(false)\r\n setPageAlert('')\r\n mountedRef.current = false\r\n }).catch((ex) => {\r\n setRowData([]);\r\n setSearch(true)\r\n setIsLoading(false);\r\n setPageAlert('Oops!, Something went wrong. Please Try searching by first name last name or search by EIN or OSIS number if available.')\r\n setTimeout(() => { setPageAlert('') }, 15000);\r\n })\r\n }\r\n else {\r\n await studentAndStaffService.getStudentByLocationCode(props.locationCode, props.schoolYear, pageNumber, pageSize).then(response => {\r\n setRowData(response.data);\r\n setIsLoading(false)\r\n setPageAlert('')\r\n mountedRef.current = false\r\n }).catch((ex) => {\r\n setRowData([]);\r\n setIsLoading(false)\r\n setPageAlert('Oops!, Something went wrong. Please try again.')\r\n setTimeout(() => { setPageAlert('') }, 15000);\r\n })\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setPage(initialDataState)\r\n setSearchForData(false)\r\n getStudentDataByLocationCode(1, initialDataState.take, '')\r\n return () => { mountedRef.current = false }\r\n }, [props.locationCode, props.schoolYear]);\r\n\r\n useEffect(() => {\r\n if (mountedRef.current == false) {\r\n setPage(initialDataState)\r\n getStudentDataByLocationCode(1, initialDataState.take, props.searchNameOrId)\r\n }\r\n }, [props.searchForData]);\r\n\r\n return (\r\n <div>\r\n {pageAlert && pageAlert != \"\" && <div className=\"alert alert-danger\" role=\"alert\">\r\n {pageAlert}\r\n </div>}\r\n {loading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n\r\n\r\n <div className=\"card\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-10\">\r\n {\"Enrolled students at\" + ' ' + props.locationCode + ' ' + '(' + (data && data.length > 0 ? data[0].totalPages : 0) + ')'}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div className=\"card-body\">\r\n\r\n <Grid\r\n data={data.slice(0, page.take)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={data && data.length > 0 ? data[0].totalPages : 0}\r\n scrollable={\"none\"}\r\n onPageChange={pageChange}\r\n expandField=\"expanded\"\r\n onExpandChange={onGridExpand}\r\n detail={SubGridHost}\r\n pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n className=\"k-grid-no-header\"\r\n >\r\n <GridNoRecords>\r\n No Records\r\n {props.searchNameOrId && props.searchNameOrId != \"\" && search &&\r\n <div style={{ color: \"#8D8887\", fontFamily: 'Roboto, sans-serif' }}><small>Try searching by first name last name or search by EIN or OSIS number if available</small> </div>}\r\n </GridNoRecords>\r\n <GridColumn width=\"80px\" cell={\r\n props => (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className=\"svg-app-icon text-rust mr-3\" style={{ height: \"40px\" }}>\r\n <IconStudnetOutline />\r\n </div>\r\n </div>\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"\" cell={\r\n props => (\r\n <td>\r\n <div>{props.dataItem.fullName}</div>\r\n <div className=\"small\"> OSIS:{props.dataItem.id}</div>\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"\" cell={\r\n props => (\r\n <td>\r\n <>\r\n <div className=\"small\">Username:</div>\r\n <div>{props.dataItem.emailId}</div>\r\n </>\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"\" title=\"\" cell={\r\n props => (\r\n <td>\r\n <div className=\"small\">Courses</div>\r\n <div>{props.dataItem.courseCount}</div>\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"\" cell={\r\n props => (\r\n <td>\r\n <>\r\n <div className=\"small\">Grade:</div>\r\n <div>{props.dataItem.gradeLevelCode}</div>\r\n </>\r\n </td>\r\n )} />\r\n </Grid>\r\n </div>\r\n </div>\r\n </div >\r\n )\r\n}","import { useEffect, useState, useContext } from \"react\";\r\nimport studentAndStaffService from '../../services/StudentAndStaffService'\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { Year } from '../../services/AppContext';\r\nimport IconCourseEnvelop from '../../assets/icons/icon-envelop-course';\r\ninterface StudentAndStaffCourses {\r\n courseName: string,\r\n courseCode: string,\r\n courseOrginType: string,\r\n courseStatus: string,\r\n isMerged: boolean\r\n}\r\n\r\ninterface StudentAndStaffProps {\r\n id: string,\r\n locationCode: string\r\n}\r\n\r\nexport default function StaffCoursesDetails(props: StudentAndStaffProps) {\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [data, setRowData] = useState<StudentAndStaffCourses[]>([]);\r\n const getAllStudentAndStaffCourses = () => {\r\n studentAndStaffService.getStaffCoursesById(props.locationCode, +orginalSchoolYear.id, props.id).then(response => {\r\n setRowData(response.data)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n getAllStudentAndStaffCourses();\r\n }, [props]);\r\n\r\n return (\r\n <div>\r\n <div className=\"card mt-4\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-10\">\r\n {\"Enrolled in \" + data.length + \" Courses\"}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div className=\"card-body\">\r\n <Grid\r\n data={data}\r\n className=\"k-grid-no-header\"\r\n >\r\n <GridColumn filterable={false} width=\"80px\" field=\"expanded\" title=' ' cell={props => (\r\n <td className=\"pr-0\">\r\n <div className={`svg-app-icon ${props.dataItem.courseStatus.toLowerCase() === \"published\" ? \" text-success\" : \" text-blue-gray\"} mr-3\"`} style={{ height: \"40px\" }}>\r\n <IconCourseEnvelop courseType= {props.dataItem.courseType} courseOrginType={props.dataItem.courseOrginType} merge={props.dataItem.isMerged}></IconCourseEnvelop>\r\n </div>\r\n </td>\r\n\r\n )} />\r\n <GridColumn field=\"\" title=\"\"\r\n cell={\r\n props => (\r\n <td>\r\n <div>{props.dataItem.courseName}</div>\r\n {props.dataItem.courseCode && <div>{props.dataItem.courseCode}</div>}\r\n </td>\r\n )} />\r\n </Grid>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}","import { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { IStaffInfo } from '../../model/IStudentAndStaffInfo';\r\nimport studentAndStaffService from '../../services/StudentAndStaffService'\r\nimport { Grid, GridColumn, GridNoRecords } from '@progress/kendo-react-grid';\r\nimport IconPersonCircle from \"../../assets/icons/icon-person-circle\";\r\nimport StaffCoursesDetails from './StaffCoursesDetails';\r\nimport SplashScreen from '../../shared/SplashScreen'\r\n\r\ninterface Props {\r\n locationCode: string,\r\n schoolYear: number,\r\n searchNameOrId: string,\r\n searchForData: boolean\r\n}\r\n\r\nconst initialDataState = {\r\n skip: 0,\r\n take: 10,\r\n};\r\n\r\n\r\n\r\nexport default function Staff(props: Props) {\r\n const [data, setRowData] = useState<IStaffInfo[]>([]);\r\n const [page, setPage] = useState(initialDataState);\r\n const [searchForData, setSearchForData] = useState(false);\r\n const [search, setSearch] = useState(false);\r\n const [loading, setIsLoading] = useState(false);\r\n const [pageAlert, setPageAlert] = useState<string>('');\r\n const mountedRef = useRef(true)\r\n\r\n\r\n\r\n const pageChange = (event: any) => {\r\n setPage(event.page);\r\n let currentPage = (event.page.skip / event.page.take) + 1\r\n getStaffDataByLocationCode(currentPage, event.page.take, props.searchNameOrId)\r\n };\r\n\r\n\r\n\r\n const onGridExpand = (event: any) => {\r\n let newData = data.map(item => {\r\n if (item.id === event.dataItem.id) {\r\n item.expanded = !event.dataItem.expanded;\r\n }\r\n return item;\r\n });\r\n setRowData(newData);\r\n }\r\n\r\n const SubGridHost = (courses: any) => {\r\n return (\r\n <div>\r\n <StaffCoursesDetails id={courses.dataItem.id} locationCode={props.locationCode} />\r\n </div>\r\n )\r\n }\r\n\r\n\r\n const getStaffDataByLocationCode = async (pageNumber: number, pageSize: number, search: string) => {\r\n if (props.schoolYear != 0 && props.locationCode != '') {\r\n setIsLoading(true)\r\n if (search == \"\") {\r\n await studentAndStaffService.getStaffByLocationCode(props.locationCode, props.schoolYear, pageNumber, pageSize).then(response => {\r\n setRowData(response.data);\r\n setIsLoading(false)\r\n setPageAlert('')\r\n mountedRef.current = false\r\n }).catch((ex) => {\r\n setRowData([]);\r\n setIsLoading(false)\r\n setPageAlert('Oops!, Something went wrong. Please try again.')\r\n setTimeout(() => { setPageAlert('') }, 15000);\r\n })\r\n\r\n } else {\r\n await studentAndStaffService.SearchStaffByLocationCode(props.locationCode, props.schoolYear, pageNumber, pageSize, search.replaceAll(' ', '')).then(response => {\r\n setRowData(response.data);\r\n setSearch(true)\r\n setIsLoading(false)\r\n setPageAlert('')\r\n mountedRef.current = false\r\n }).catch((ex) => {\r\n setRowData([]);\r\n setSearch(true)\r\n setIsLoading(false);\r\n setPageAlert('Oops!, Something went wrong. Please Try searching by first name last name or search by EIN or OSIS number if available.')\r\n setTimeout(() => { setPageAlert('') }, 15000);\r\n })\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setPage(initialDataState);\r\n setSearchForData(false)\r\n getStaffDataByLocationCode(1, initialDataState.take, '')\r\n return () => { mountedRef.current = false }\r\n }, [props.locationCode, props.schoolYear]);\r\n\r\n useEffect(() => {\r\n \r\n if(mountedRef.current == false){\r\n setPage(initialDataState);\r\n setSearchForData(false)\r\n getStaffDataByLocationCode(1, initialDataState.take, props.searchNameOrId)\r\n } \r\n }, [props.searchForData]);\r\n\r\n return (\r\n <div>\r\n {pageAlert && pageAlert != \"\" && <div className=\"alert alert-danger\" role=\"alert\">\r\n {pageAlert}\r\n </div>}\r\n {loading && <div className=\"d-flex justify-content-center\"><SplashScreen /></div>}\r\n\r\n\r\n <div className=\"card\">\r\n <div className=\"card-header font-weight-bold bg-secondary-light\">\r\n <div className=\"row align-items-center\">\r\n <div className=\"col-10\">\r\n {\"Enrolled staff at\" + ' ' + props.locationCode + ' ' + '(' + (data && data.length > 0 ? data[0].totalPages : 0) + ')'}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div className=\"card-body\">\r\n\r\n <Grid\r\n data={data.slice(0, page.take)}\r\n skip={page.skip}\r\n take={page.take}\r\n total={data && data.length > 0 ? data[0].totalPages : 0}\r\n scrollable={\"none\"}\r\n onPageChange={pageChange}\r\n expandField=\"expanded\"\r\n onExpandChange={onGridExpand}\r\n detail={SubGridHost}\r\n pageable={{ pageSizes: [10, 25, 50], info: true }}\r\n className=\"k-grid-no-header\"\r\n >\r\n <GridNoRecords>\r\n No Records\r\n {props.searchNameOrId && props.searchNameOrId != \"\" && search &&\r\n <div style={{ color: \"#8D8887\", fontFamily: 'Roboto, sans-serif' }}><small>Try searching by first name last name or search by EIN or OSIS number if available</small> </div>}\r\n </GridNoRecords>\r\n <GridColumn width=\"80px\" cell={\r\n props => (\r\n <td>\r\n <div className=\"d-flex\">\r\n <div className=\"svg-app-icon text-rust mr-3\" style={{ height: \"40px\" }}>\r\n <IconPersonCircle />\r\n </div>\r\n </div>\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"\" cell={\r\n props => (\r\n <td>\r\n <div>{props.dataItem.fullName}</div>\r\n <div className=\"small\"> EIN:{props.dataItem.id}</div>\r\n </td>\r\n )} />\r\n\r\n\r\n\r\n <GridColumn field=\"\" title=\"\" cell={\r\n props => (\r\n <td>\r\n <div className=\"small\">Courses</div>\r\n <div>{props.dataItem.courseCount}</div>\r\n </td>\r\n )} />\r\n\r\n <GridColumn field=\"\" cell={\r\n props => (\r\n <td>\r\n <>\r\n <div className=\"small\">Username:</div>\r\n <div>{props.dataItem.emailId}</div>\r\n </>\r\n </td>\r\n )} />\r\n </Grid>\r\n </div>\r\n </div>\r\n </div >\r\n )\r\n}","import { useContext, useEffect, useRef, useState } from \"react\";\r\nimport { Button, FormControl, InputGroup, Row, Col } from \"react-bootstrap\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Year } from '../../services/AppContext';\r\nimport Student from './Student'\r\nimport Staff from './Staff'\r\n\r\ninterface ILocationCode {\r\n id: string,\r\n}\r\n\r\nconst dropDownData = ['Student', 'Staff']\r\n\r\nexport default function StudentAndStaff(locationCode: ILocationCode) {\r\n\r\n const { orginalSchoolYear } = useContext(Year);\r\n const [selectedValue, setSelectedValue] = useState(\"Student\");\r\n const [searchNameOrId, setSearchNameOrIdValue] = useState(\"\");\r\n const [searchForData, setSearchForData] = useState(false);\r\n const mountedRef = useRef(true)\r\n\r\n\r\n const onSelectionChange = (e: any) => {\r\n setSelectedValue(e.target.value)\r\n setSearchNameOrIdValue(\"\")\r\n }\r\n\r\n const onChangeSearch = (e: any) => {\r\n if (e.target.value) {\r\n setSearchNameOrIdValue(e.target.value)\r\n }\r\n else {\r\n clearSearch()\r\n }\r\n }\r\n\r\n const clearSearch = () => {\r\n setSearchNameOrIdValue(\"\")\r\n searchData()\r\n }\r\n\r\n const searchData = () => {\r\n setSearchForData(!searchForData)\r\n }\r\n\r\n const searchByClickEnter = (e: any) => {\r\n if (e.charCode == 13) {\r\n searchData()\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setSearchNameOrIdValue(\"\")\r\n return () => { mountedRef.current = false }\r\n }, [locationCode, orginalSchoolYear]);\r\n\r\n return (\r\n <div>\r\n <Row className=\"mb-3\">\r\n <Col sm=\"6\">\r\n <InputGroup className=\"input-group\">\r\n <FormControl\r\n placeholder=\"LastName FirstName or OSIS ID or EIN\"\r\n className=\"form form-control form-control-md text-ellipse\"\r\n maxLength={128}\r\n onChange={onChangeSearch}\r\n value={searchNameOrId}\r\n onKeyPress={searchByClickEnter}\r\n width={500}\r\n />\r\n {searchNameOrId && searchNameOrId != \"\" &&\r\n <button type=\"button\" className=\"close mr-3\" onClick={clearSearch} aria-label=\"Close\">\r\n <span aria-hidden=\"false\">×</span>\r\n </button>\r\n }\r\n <div className=\"input-group-append\">\r\n <Button className=\"btn btn-primary btn-md \" onClick={searchData} >\r\n Search\r\n </Button>\r\n </div>\r\n </InputGroup>\r\n </Col>\r\n <Col sm=\"6\" className=\"text-right\">\r\n <DropDownList\r\n data={dropDownData}\r\n defaultValue={dropDownData[0]}\r\n onChange={onSelectionChange}\r\n style={{ maxWidth: '350px', width: \"100%\" }}\r\n />\r\n\r\n </Col>\r\n </Row>\r\n\r\n {selectedValue == \"Student\" && <Student locationCode={locationCode.id} schoolYear={+orginalSchoolYear.id} searchNameOrId={searchNameOrId} searchForData={searchForData} />}\r\n\r\n {selectedValue == \"Staff\" && <Staff locationCode={locationCode.id} schoolYear={+orginalSchoolYear.id} searchNameOrId={searchNameOrId} searchForData={searchForData} />}\r\n </div >\r\n )\r\n}","import React, { useContext } from 'react';\r\nimport { ErrorContext, IErrorContext } from '../services/AppContext'\r\n\r\nexport default function ErrorDisplay() {\r\n const errorContext = useContext<IErrorContext>(ErrorContext);\r\n let isErrorContentVisible = (errorContext.errorMessages)\r\n return (<div className=\"main-alert-container\">\r\n { \r\n errorContext?.errorMessages?.length != 0 &&\r\n <div className=\"main-alert\">\r\n <div className=\"container pt-5 pb-5\">\r\n <div className=\"alert alert-danger mb-0 shadow-sm pt-0 pb-0\">\r\n {\r\n errorContext.errorMessages.map((msg, i) =>\r\n <div className=\"alert-item pt-2 pb-2 ml-n3 mr-n3 pr-3 pl-6\" key={i.toString()}>\r\n <i className=\"fas fa-bomb alert-icon fa-lg\"></i> {msg}\r\n </div>\r\n )\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>)\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nexport default function IconDOELogo() {\r\n\r\n return (\r\n <svg id=\"doe_logo_svg\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 226.39 40\">\r\n <path d=\"M360.981,175.713h4.436c3.164,0,5.057,1.923,5.057,5.115,0,3.38-1.922,5.2-5.057,5.2h-4.436Zm2.688,8h1.271c2.038-.042,2.846-.837,2.846-2.9a2.508,2.508,0,0,0-2.846-2.788h-1.271Z\" transform=\"translate(-235.318 -174.408)\" fill=\"#036\" />\r\n <path d=\"M378.755,184.188a1.6,1.6,0,0,0,1.676,1.7,1.464,1.464,0,0,0,1.4-.823h2.3a3.549,3.549,0,0,1-3.728,2.485,3.771,3.771,0,0,1-4.1-3.987,3.935,3.935,0,0,1,4.045-3.943c2.687,0,4.031,2.022,3.915,4.566Zm3.049-1.373a1.519,1.519,0,0,0-1.46-1.531,1.618,1.618,0,0,0-1.589,1.531Z\" transform=\"translate(-240.44 -175.715)\" fill=\"#036\" />\r\n <path d=\"M389.665,179.838h2.341v.867h.029a2.4,2.4,0,0,1,2.066-1.083c2.354,0,3.351,2.022,3.351,4.132,0,1.95-1.04,3.8-3.164,3.8a2.511,2.511,0,0,1-2.139-1.024h-.029v3.323h-2.455V179.838Zm2.369,3.67c0,1.315.375,2.167,1.488,2.167S395,184.533,395,183.508c0-.954-.375-2.008-1.46-2.008C392.872,181.5,392.034,181.962,392.034,183.508Z\" transform=\"translate(-244.909 -175.715)\" fill=\"#036\" />\r\n <path d=\"M402.557,182.15a2.308,2.308,0,0,1,1.17-2.009,4.953,4.953,0,0,1,2.384-.52c1.777,0,3.5.389,3.5,2.513v3.28a4.346,4.346,0,0,0,.29,1.922h-2.472a2.972,2.972,0,0,1-.144-.708,3.384,3.384,0,0,1-2.47.924c-1.43,0-2.557-.721-2.557-2.269,0-2.441,2.659-2.253,4.363-2.6.419-.085.65-.23.65-.693,0-.563-.679-.781-1.184-.781a1.1,1.1,0,0,0-1.229.941h-2.3Zm3.178,3.887c1.17,0,1.56-.666,1.5-2.211a6.928,6.928,0,0,1-1.517.4c-.549.13-1.012.362-1.012.954C404.71,185.79,405.187,186.036,405.735,186.036Z\" transform=\"translate(-249.119 -175.714)\" fill=\"#036\" />\r\n <path d=\"M415.41,179.875h2.383v1.315h.029a2.262,2.262,0,0,1,2.255-1.458,2.632,2.632,0,0,1,.578.057v2.24a3.431,3.431,0,0,0-.94-.144,1.724,1.724,0,0,0-1.849,1.777v3.712h-2.456v-7.5Z\" transform=\"translate(-253.518 -175.751)\" fill=\"#036\" />\r\n <path d=\"M428.806,180.4h-1.517v3.409c0,.593.347.722.881.722.2,0,.419-.029.636-.029V186.3c-.449.015-.9.072-1.345.072-2.094,0-2.629-.607-2.629-2.644V180.4H423.59v-1.59h1.243v-2.268h2.456v2.268h1.517v1.59Z\" transform=\"translate(-256.253 -174.684)\" fill=\"#036\" />\r\n <path d=\"M432.852,179.838h2.383v1.026h.03a2.5,2.5,0,0,1,2.151-1.243,2.166,2.166,0,0,1,2.181,1.212,2.749,2.749,0,0,1,2.342-1.212c2.383,0,2.643,1.806,2.643,3.236v4.478h-2.456V182.93c0-.809-.39-1.286-1.026-1.286-1.054,0-1.156.809-1.156,2.022v3.67H437.49v-4.262c0-.882-.26-1.43-.925-1.43-.881,0-1.257.506-1.257,2.037v3.655h-2.456v-7.5Z\" transform=\"translate(-259.35 -175.715)\" fill=\"#036\" />\r\n <path d=\"M454.4,184.188a1.6,1.6,0,0,0,1.676,1.7,1.462,1.462,0,0,0,1.4-.823h2.3a3.548,3.548,0,0,1-3.728,2.485,3.771,3.771,0,0,1-4.1-3.987,3.934,3.934,0,0,1,4.044-3.943c2.687,0,4.032,2.022,3.916,4.566Zm3.049-1.373a1.519,1.519,0,0,0-1.46-1.531,1.619,1.619,0,0,0-1.589,1.531Z\" transform=\"translate(-265.734 -175.715)\" fill=\"#036\" />\r\n <path d=\"M465.314,179.838H467.7v1.026h.029a2.834,2.834,0,0,1,2.356-1.243c2.5,0,2.7,1.819,2.7,2.9v4.811h-2.456V183.71c0-1.026.116-2.065-1.229-2.065-.925,0-1.329.779-1.329,1.6v4.089h-2.456v-7.5Z\" transform=\"translate(-270.204 -175.715)\" fill=\"#036\" />\r\n <path d=\"M482.6,180.4h-1.516v3.409c0,.593.346.722.881.722.2,0,.419-.029.634-.029V186.3c-.447.015-.9.072-1.343.072-2.094,0-2.629-.607-2.629-2.644V180.4h-1.243v-1.59h1.243v-2.268h2.456v2.268H482.6v1.59Z\" transform=\"translate(-274.239 -174.684)\" fill=\"#036\" />\r\n <path d=\"M496.242,179.622a3.965,3.965,0,1,1-3.945,3.972A3.844,3.844,0,0,1,496.242,179.622Zm0,6.053c1.142,0,1.5-1.127,1.5-2.081s-.361-2.094-1.5-2.094-1.488,1.142-1.488,2.094S495.1,185.675,496.242,185.675Z\" transform=\"translate(-279.226 -175.715)\" fill=\"#036\" />\r\n <path d=\"M505.657,180.121h-1.186v-1.59h1.186c0-2.153.75-2.818,2.846-2.818.39,0,.794.03,1.184.043v1.733a5.348,5.348,0,0,0-.664-.042c-.564,0-.91.072-.91.751v.332h1.473v1.59h-1.473v5.908h-2.456Z\" transform=\"translate(-283.296 -174.408)\" fill=\"#036\" />\r\n <path d=\"M360.981,199.56H369.2v2.153h-5.533v1.807h5.057V205.6h-5.057v1.965h5.678v2.312h-8.365Z\" transform=\"translate(-235.318 -182.381)\" fill=\"#036\" />\r\n <path d=\"M382.479,209.876h-2.34v-.867h-.029a2.4,2.4,0,0,1-2.066,1.083c-2.355,0-3.352-2.022-3.352-4.132,0-1.95,1.04-3.8,3.164-3.8a2.508,2.508,0,0,1,2.138,1.024h.029v-3.626h2.456Zm-5.331-3.827c0,1.025.375,2.166,1.5,2.166,1.2,0,1.459-1.142,1.459-2.094,0-1.084-.39-2.081-1.459-2.081C377.524,204.039,377.148,205.094,377.148,206.048Z\" transform=\"translate(-239.903 -182.381)\" fill=\"#036\" />\r\n <path d=\"M395.916,211.292h-2.384v-1.026H393.5a2.762,2.762,0,0,1-2.283,1.243c-2.153,0-2.774-1.243-2.774-3.207v-4.507H390.9v4.349c0,1,.433,1.343,1.213,1.343.535,0,1.344-.347,1.344-1.677v-4.016h2.456Z\" transform=\"translate(-244.502 -183.797)\" fill=\"#036\" />\r\n <path d=\"M406.431,206.43a1.155,1.155,0,0,0-1.2-1.083c-1.373,0-1.59,1.17-1.59,2.21,0,.969.42,1.965,1.46,1.965a1.316,1.316,0,0,0,1.4-1.286h2.383a3.514,3.514,0,0,1-3.77,3.164,3.732,3.732,0,0,1-3.93-3.843,3.8,3.8,0,0,1,3.93-4.088c1.863,0,3.525.982,3.7,2.961Z\" transform=\"translate(-248.762 -183.688)\" fill=\"#036\" />\r\n <path d=\"M413.844,206a2.306,2.306,0,0,1,1.17-2.008,4.954,4.954,0,0,1,2.384-.52c1.777,0,3.5.389,3.5,2.513v3.28a4.342,4.342,0,0,0,.29,1.921h-2.471a2.969,2.969,0,0,1-.144-.708,3.384,3.384,0,0,1-2.47.924c-1.43,0-2.557-.721-2.557-2.268,0-2.441,2.659-2.254,4.363-2.6.419-.086.65-.23.65-.693,0-.564-.679-.781-1.184-.781a1.1,1.1,0,0,0-1.229.941h-2.3Zm3.178,3.887c1.17,0,1.56-.666,1.5-2.211a6.928,6.928,0,0,1-1.517.4c-.549.13-1.012.362-1.012.954C416,209.637,416.474,209.884,417.022,209.884Z\" transform=\"translate(-252.893 -183.688)\" fill=\"#036\" />\r\n <path d=\"M430.661,204.244h-1.517v3.409c0,.594.347.722.881.722.2,0,.419-.029.636-.029v1.806c-.447.015-.9.072-1.343.072-2.1,0-2.63-.607-2.63-2.644v-3.337h-1.243v-1.59h1.243v-2.268h2.456v2.268h1.517v1.59Z\" transform=\"translate(-256.873 -182.657)\" fill=\"#036\" />\r\n <path d=\"M437.247,201.439h-2.456V199.56h2.456Zm-2.456.939h2.456v7.5h-2.456Z\" transform=\"translate(-259.998 -182.381)\" fill=\"#036\" />\r\n <path d=\"M443.964,203.469a3.965,3.965,0,1,1-3.945,3.972A3.844,3.844,0,0,1,443.964,203.469Zm0,6.053c1.142,0,1.5-1.126,1.5-2.08s-.361-2.094-1.5-2.094-1.488,1.142-1.488,2.094S442.822,209.522,443.964,209.522Z\" transform=\"translate(-261.746 -183.688)\" fill=\"#036\" />\r\n <path d=\"M453.377,203.686h2.384v1.026h.029a2.831,2.831,0,0,1,2.354-1.242c2.5,0,2.7,1.819,2.7,2.9v4.811h-2.457v-3.626c0-1.026.116-2.066-1.227-2.066-.925,0-1.33.779-1.33,1.6v4.089h-2.456v-7.5Z\" transform=\"translate(-266.212 -183.689)\" fill=\"#036\" />\r\n <path d=\"M324.887,173.752h-25l-7.5,7.5v25l7.5,7.5h25l7.5-7.5v-7.5l-2.5-2.5h-12.5v2.5h-10v-10h10v2.469h12.5l2.5-2.469v-7.5Z\" transform=\"translate(-212.383 -173.752)\" fill=\"#69c\" />\r\n <path d=\"M209.7,173.752h-10l-2.5,2.5v10l-12.5-12.5h-10l-2.5,2.5v35l2.5,2.5h10l2.5-2.5v-10l12.5,12.5h10l2.5-2.5v-35Z\" transform=\"translate(-172.195 -173.752)\" fill=\"#80b34d\" />\r\n <path d=\"M247.291,213.752h10l2.5-2.5v-7.5l12.5-12.5v-15l-2.5-2.5h-10l-2.5,2.5v5l-5,5-5-5h0v-5l-2.5-2.5h-10l-2.5,2.5v15l12.5,12.5v7.5Z\" transform=\"translate(-192.289 -173.752)\" fill=\"#f93\" />\r\n <g transform=\"translate(115.524 0.001)\">\r\n <g transform=\"translate(0)\">\r\n <path d=\"M345.75,174.11v-.356h1.814v.356h-.693v1.773h-.424V174.11Zm2.782-.356.544,1.525.541-1.525h.611v2.129h-.392v-1.716l-.586,1.716h-.341l-.594-1.716v1.716h-.391v-2.129Z\" transform=\"translate(-345.75 -173.754)\" fill=\"#036\" />\r\n </g>\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\n","\r\nimport IconDOELogo from '../assets/icons/icon-doe-logo'\r\n\r\nexport default function Header(/*props*/) {\r\n return (\r\n <header className=\"header\">\r\n <div className=\"container app-banner\">\r\n <div className=\"row\">\r\n <div className=\"col-3 doe-logo\">\r\n <a href=\"#\">\r\n <IconDOELogo />\r\n </a>\r\n </div>\r\n <div className=\"col-9 app-title-sm text-right d-flex justify-content-end align-items-center\">\r\n { window.location.pathname == '/' || window.location.pathname == '/Home' ? <div className=\"app-txt-main\">LMS Admin</div> : <div className=\"app-txt-main\">iLearn Align</div> }\r\n </div>\r\n </div>\r\n </div>\r\n </header>\r\n \r\n )\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\n\r\nexport default function IconSchool() {\r\n\r\n return (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 49.551 50\">\r\n <title>School</title>\r\n <g transform=\"translate(-797.418 -33.62)\">\r\n <path d=\"M828.852,59.886a5.756,5.756,0,1,0,5.757,5.756A5.762,5.762,0,0,0,828.852,59.886Zm0,9.29a3.534,3.534,0,1,1,3.535-3.534A3.537,3.537,0,0,1,828.852,69.176Z\" transform=\"translate(-6.659 -6.811)\"></path>\r\n <rect width=\"2.592\" height=\"3.824\" transform=\"translate(805.741 70.388)\"></rect>\r\n <rect width=\"2.592\" height=\"3.824\" transform=\"translate(805.741 76.316)\"></rect>\r\n <path d=\"M832.658,86.042h-6.995a1.3,1.3,0,0,0-1.3,1.3c0,.013,0,.025,0,.037s0,.025,0,.038v8.458a1.3,1.3,0,1,0,2.592,0V88.634H831.4v7.237a1.3,1.3,0,0,0,2.592,0V87.413a1.409,1.409,0,0,0-1.338-1.371Z\" transform=\"translate(-6.988 -13.593)\"></path>\r\n <rect width=\"2.592\" height=\"3.824\" transform=\"translate(836.055 70.388)\"></rect>\r\n <rect width=\"2.592\" height=\"3.824\" transform=\"translate(836.055 76.316)\"></rect>\r\n <path d=\"M857.286,65.881H844.8V62.4l-2.592-1.341V89.439a1.3,1.3,0,1,0,2.592,0V73.679h12.489a1.3,1.3,0,0,0,1.3-1.3v-5.2A1.3,1.3,0,0,0,857.286,65.881Zm-1.3,5.2H844.84V68.474h11.15Z\" transform=\"translate(-11.614 -7.116)\"></path>\r\n <path d=\"M801.168,94.575a1.3,1.3,0,0,0,2.592,0V81.043h-2.592Z\" transform=\"translate(-0.972 -12.297)\"></path>\r\n <path d=\"M857.067,94.575a1.3,1.3,0,0,0,2.592,0V81.043h-2.592Z\" transform=\"translate(-15.467 -12.297)\"></path>\r\n <path d=\"M811.2,65.863h-12.49a1.3,1.3,0,0,0-1.3,1.3v5.2a1.3,1.3,0,0,0,1.3,1.3H811.2V89.42a1.3,1.3,0,1,0,2.592,0V60.988L811.2,62.329Zm-.042,5.2H800.01V68.455h11.151Z\" transform=\"translate(0 -7.097)\"></path>\r\n <path d=\"M811.656,54.125a1.283,1.283,0,0,0,.595-.146l13.3-6.881,13.3,6.881a1.283,1.283,0,0,0,.595.146,1.3,1.3,0,0,0,.6-2.448l-13.114-6.786a1.293,1.293,0,0,0-.121-.184,1.263,1.263,0,0,0,.026-.256v-2.03l7.394-2.989a1.284,1.284,0,0,0,.226-.119l0,0a1.294,1.294,0,0,0,.253-.227c.018-.02.033-.041.051-.061a1.394,1.394,0,0,0,.178-.3l0-.006c.01-.025.014-.051.023-.076a1.36,1.36,0,0,0,.047-.161c.007-.039.009-.076.013-.114s.012-.09.013-.137a1.226,1.226,0,0,0-.012-.128c0-.041-.005-.081-.013-.123a1.2,1.2,0,0,0-.045-.153c-.009-.027-.013-.056-.024-.083l0-.008a1.177,1.177,0,0,0-.093-.176c-.01-.016-.016-.035-.027-.05a1.293,1.293,0,0,0-.3-.315c-.018-.013-.032-.028-.05-.04s-.049-.026-.073-.04a1.5,1.5,0,0,0-.152-.081l-.009,0L826.1,33.715a1.4,1.4,0,0,0-1.86,1.273v9.464a1.27,1.27,0,0,0,.035.287,1.323,1.323,0,0,0-.1.152L811.06,51.677a1.3,1.3,0,0,0,.6,2.448Zm15.175-17.312,3.463,1.411-3.463,1.4Z\" transform=\"translate(-3.356)\"></path>\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\n","import React, { useState, useEffect, useRef } from 'react';\r\n\r\nexport default function IconHome() {\r\n\r\n return (\r\n <svg version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 29 32\">\r\n <title>Home</title>\r\n <path d=\"M28.6,10.6L15.2,0.2c-0.4-0.3-1-0.3-1.5,0L0.5,10.6C0.2,10.8,0,11.2,0,11.6v16.3 C0,30.1,1.9,32,4.1,32h20.7c2.3,0,4.1-1.9,4.1-4.1V11.6C29,11.2,28.9,10.8,28.6,10.6z M17.8,29.6h-6.5V17.2h6.5V29.6z M26.7,27.9 c0,1-0.8,1.8-1.8,1.8h-4.7V16c0-0.7-0.5-1.2-1.2-1.2h-8.9c-0.7,0-1.2,0.5-1.2,1.2v13.6H4.1c-1,0-1.8-0.8-1.8-1.8V12.1l12.1-9.4 l12.1,9.4V27.9z\" />\r\n </svg>\r\n )\r\n}\r\n\r\n","import { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\nimport { Grid, GridColumn } from \"@progress/kendo-react-grid\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { Button, Form, Row } from \"react-bootstrap\";\r\nimport SchoolYearService from \"../../../services/SchoolYearService\";\r\nimport Moment from 'moment';\r\n\r\ninterface ISchoolYear {\r\n schoolYear: number,\r\n schoolYearName: string,\r\n schoolYearRange?: string,\r\n schoolYearStartDate: Date,\r\n schoolYearEndDate: Date,\r\n canAddNewSchoolYear?: boolean\r\n}\r\n\r\n\r\n\r\n\r\n\r\nexport default function SchoolYearManage() {\r\n\r\n const [visible, setVisible] = useState(false);\r\n const [schoolYears, setSchoolYears] = useState<ISchoolYear[]>();\r\n const [isSchoolYearChanging, setIsSchoolYearChanging] = useState(false);\r\n const [pageAlert, setPageAlert] = useState<string>('');\r\n const [pageError, setPageErrors] = useState<string>('');\r\n const [errors, setErrors] = useState({\r\n startDateError: '',\r\n endDateError: '',\r\n })\r\n const [formValue, setFormValue] = useState<ISchoolYear>({\r\n schoolYear: 0,\r\n schoolYearName: '',\r\n schoolYearStartDate: new Date(),\r\n schoolYearEndDate: new Date()\r\n });\r\n\r\n\r\n const addNewSchoolYear = () => {\r\n setVisible(!visible);\r\n }\r\n const handleChange = (event: any) => {\r\n const target = event.target //as HTMLSelectElement\r\n setFormValue({ ...formValue, [target.name]: target.value });\r\n\r\n };\r\n\r\n const GridColumnStartDate = (props: any) => {\r\n return (\r\n <td>\r\n <div>\r\n {Moment(props.dataItem.schoolYearStartDate).format('MM/DD/YYYY')}\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n const GridColumnEndDate = (props: any) => {\r\n return (\r\n <td>\r\n <div>\r\n {Moment(props.dataItem.schoolYearEndDate).format('MM/DD/YYYY')}\r\n </div>\r\n </td>\r\n )\r\n }\r\n\r\n const validateFormValues = () => {\r\n let error = {\r\n startDateError: '',\r\n endDateError: '',\r\n }\r\n if (!formValue.schoolYearEndDate) { error.endDateError = \"School Year End date is required.\" }\r\n if (!formValue.schoolYearStartDate) { error.startDateError = \"School Year Start date is required.\" }\r\n if (Moment(formValue.schoolYearEndDate).format('YYYY-MM-DD') < Moment(formValue.schoolYearStartDate).format('YYYY-MM-DD')) { error.endDateError = \"End date must not be less than start date.\" }\r\n if (Moment(formValue.schoolYearEndDate).format('YYYY-MM-DD') <= Moment(Date.now()).format('YYYY-MM-DD')) { error.endDateError = \"End date must be greater than today's date.\" }\r\n setErrors(error);\r\n if (error.endDateError || error.startDateError) {\r\n return false\r\n } else {\r\n return true\r\n }\r\n }\r\n\r\n const onSave = () => {\r\n if (validateFormValues()) {\r\n SchoolYearService.AddNewSchoolYear(formValue).then(response => {\r\n if (!response.data.isValidResponse) {\r\n setPageErrors(response.data.errors.join())\r\n\r\n } else {\r\n getCurrentSchoolYear();\r\n setVisible(!visible);\r\n setPageAlert('Success: The new school year has been created. Please refresh the page to see the changes.')\r\n }\r\n }).catch((ex) => {\r\n setPageErrors('Oops!, Something went wrong. Please try again.')\r\n })\r\n }\r\n }\r\n\r\n const getCurrentSchoolYear = () => {\r\n SchoolYearService.getCurrentSchoolYear().then(res => {\r\n let schoolYears = []\r\n schoolYears.push(res.data)\r\n setSchoolYears(schoolYears)\r\n if (res.data.canAddNewSchoolYear) {\r\n let newYear: ISchoolYear = res.data\r\n setFormValue({\r\n schoolYear: +newYear.schoolYear + 1,\r\n schoolYearName: `${+newYear.schoolYear + 1}Term`,\r\n schoolYearStartDate: new Date(+newYear.schoolYear + 1, 7, 20),\r\n schoolYearEndDate: new Date(+newYear.schoolYear + 2, 7, 20)\r\n })\r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n getCurrentSchoolYear()\r\n setPageAlert(\"\")\r\n setPageErrors(\"\")\r\n\r\n }, []);\r\n\r\n return (\r\n\r\n <div>\r\n <div className=\"text-right mb-2\">\r\n <Button variant=\"primary\" onClick={addNewSchoolYear}><i className=\"fas fa-plus\"></i></Button>\r\n\r\n </div>\r\n {pageAlert && pageAlert != \"\" && <div className=\"alert alert-success\" role=\"alert\">\r\n {pageAlert}\r\n </div>}\r\n <Grid\r\n data={schoolYears}\r\n >\r\n\r\n <GridColumn field=\"schoolYear\" title=\"School Year\"></GridColumn>\r\n <GridColumn field=\"schoolYearName\" title=\"School Year Name\"></GridColumn>\r\n <GridColumn field=\"schoolYearRange\" title=\"School Year Range\" ></GridColumn>\r\n <GridColumn field=\"schoolYearStartDate\" title=\"School Year Start Date\" cell={GridColumnStartDate}></GridColumn>\r\n <GridColumn field=\"schoolYearEndDate\" cell={GridColumnEndDate} title=\"School Year End Date\" ></GridColumn>\r\n </Grid>\r\n {visible &&\r\n <Dialog title={\"Add New Year\"} onClose={addNewSchoolYear} width={500}>\r\n {pageError && pageError != \"\" && <div className=\"alert alert-danger\" role=\"alert\">\r\n {pageError}\r\n </div>}\r\n {schoolYears && schoolYears[0].canAddNewSchoolYear ?\r\n <Form>\r\n <Row>\r\n <Form.Group controlId=\"schoolYear\" className=\"col-6\" >\r\n <Form.Label>School Year</Form.Label>\r\n <Form.Control readOnly type=\"text\" name=\"schoolYear\" value={formValue ? formValue.schoolYear : 0} disabled />\r\n </Form.Group>\r\n <Form.Group controlId=\"schoolYearName\" className=\"col-sm-6\" >\r\n <Form.Label>School Year Name</Form.Label>\r\n <Form.Control readOnly type=\"text\" name=\"schoolYearName\" value={formValue ? formValue.schoolYearName : ''} disabled />\r\n </Form.Group>\r\n\r\n <Form.Group controlId=\"startDate\" className=\"col-sm-6\">\r\n <Form.Label>School Start Date</Form.Label>\r\n <Form.Control\r\n value={\r\n formValue\r\n ? Moment(formValue.schoolYearStartDate).format('YYYY-MM-DD')\r\n : Moment(new Date()).format('YYYY-MM-DD')\r\n }\r\n type=\"date\" name=\"schoolYearStartDate\" onChange={handleChange} ></Form.Control>\r\n <Form.Text className=\"text-danger\">{errors.startDateError}</Form.Text>\r\n </Form.Group>\r\n <Form.Group controlId=\"endDate\" className=\"col-sm-6\">\r\n <Form.Label>School End Date</Form.Label>\r\n <Form.Control\r\n value={\r\n formValue\r\n ? Moment(formValue.schoolYearEndDate).format('YYYY-MM-DD')\r\n : Moment(new Date()).format('YYYY-MM-DD')\r\n }\r\n type=\"date\" name=\"schoolYearEndDate\" onChange={handleChange} ></Form.Control>\r\n <Form.Text className=\"text-danger\">{errors.endDateError}</Form.Text>\r\n </Form.Group>\r\n\r\n <Form.Group controlId=\"changeSchoolYear\" className=\"col-sm-12\">\r\n <Form.Check\r\n type=\"checkbox\"\r\n label=\"I agree to create a new school year\"\r\n checked={isSchoolYearChanging}\r\n onChange={(e) => setIsSchoolYearChanging(e.target.checked)}\r\n />\r\n </Form.Group>\r\n <div className=\"alert alert-warning\" style={{ marginLeft: \"10px\", marginRight: \"10px\" }}>\r\n <strong>Note:</strong> Once the new school year is created, all NYCDOE vendors will be moved to the new year.\r\n </div>\r\n </Row>\r\n </Form>\r\n\r\n : <div>\r\n You've already added the school year for {schoolYears ? schoolYears[0].schoolYear : 0}. You can add the next year after 8/1/{schoolYears ? +schoolYears[0].schoolYear + 1 : 0}.\r\n </div>}\r\n {/* </Modal.Body> */}\r\n <DialogActionsBar>\r\n <Button className=\"m-2\" variant=\"secondary\" onClick={addNewSchoolYear}>Close</Button>\r\n {schoolYears && schoolYears[0].canAddNewSchoolYear ? <Button variant=\"primary\" type=\"button\" onClick={onSave} disabled={!isSchoolYearChanging}>Save</Button> : ''}\r\n </DialogActionsBar>\r\n </Dialog>\r\n }\r\n </div>\r\n )\r\n}","import React, { useCallback, useEffect, useState } from 'react';\r\nimport { Navbar, Nav, Container, Row, Col, DropdownButton, Dropdown } from 'react-bootstrap';\r\nimport AnnouncementManage from '../components/adminManagement/announcementManagement/AnnouncementManage'\r\nimport Dashboard from '../components/Dashboard'\r\nimport SchoolDropDown from '../components/SchoolDropDown';\r\nimport SchoolYearDropDown from '../components/SchoolYearDropDown';\r\nimport GlobalMenu from './GlobalMenu'\r\nimport { LocationContext, AuthContext, ErrorContext, IErrorContext, ErrorContextDefault, Year } from '../services/AppContext'\r\nimport SchoolBanner from '../components/SchoolBanner'\r\nimport VendorContent from '../components/vendorLicenseAllocation/VendorContent';\r\nimport Courses from '../components/courses/Courses';\r\nimport PurchaseOrder from '../components/PurchaseOrder';\r\nimport Report from '../components/Reports/Reports';\r\nimport ProfileMenu from './ProfileMenu';\r\nimport VendorManage from '../components/adminManagement/VendorManagement/VendorManage';\r\nimport SchoolManage from '../components/adminManagement/schoolManagement/SchoolManage';\r\nimport StudentAndStaff from '../components/studentAndStaff/studentAndStaff'\r\nimport ErrorDisplay from '../shared/ErrorDisplay';\r\nimport Header from './Header';\r\nimport { useParams, withRouter } from 'react-router-dom';\r\nimport IconSchool from '../assets/icons/icon-school'\r\nimport IconHome from '../assets/icons/icon-home'\r\nimport {\r\n BrowserRouter,\r\n Switch,\r\n Route,\r\n Link,\r\n useLocation,\r\n useHistory\r\n} from \"react-router-dom\";\r\nimport LocalStorageService from '../services/LocalStorage';\r\nimport { AuthContextDefault, UserProfileType } from '../services/AppContext';\r\nimport SchoolYearManage from '../components/adminManagement/schoolYearManage/SchoolYearManage';\r\n\r\n\r\n\r\nexport default function ILearnLayout(props?: any, isManageActivated?: boolean) {\r\n const loadingPanel = (\r\n <div className=\"k-loading-mask\">\r\n <span className=\"k-loading-text\">Loading</span>\r\n <div className=\"k-loading-image\"></div>\r\n <div className=\"k-loading-color\"></div>\r\n </div>\r\n );\r\n\r\n const [isManageRouteEnabled, setIsManageRouteEnabled] = useState(isManageActivated)\r\n const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile);\r\n // const errorContext1 = useContext<AuthContextType>(AuthContext);\r\n const [locationCode, setLocationCode] = useState('');\r\n const value = { locationCode, setLocationCode };\r\n\r\n //const [location,setLocation] = useState(window.location.pathname)\r\n\r\n\r\n const [currentPath, setCurrentPath] = useState('');\r\n interface SchoolYear {\r\n id: string,\r\n isCurrent: number,\r\n schoolYearEndDate: Date\r\n }\r\n\r\n let [orginalSchoolYear, setOrginalSchoolYear] = useState<SchoolYear>({ id: '', isCurrent: 0, schoolYearEndDate: new Date() });\r\n const v = { orginalSchoolYear, setOrginalSchoolYear };\r\n useEffect(() => {\r\n setIsManageRouteEnabled(window.location.pathname.startsWith(\"/ILearn/manage/\"))\r\n setUserProfile(LocalStorageService.getUserProfile())\r\n if ((LocalStorageService.getUserProfile().role.roleName != \"System Administrator\" && LocalStorageService.getUserProfile().role.roleName != \"Central Staff\") && LocalStorageService.getUserProfile().role.locations.length > 0) {\r\n setLocationCode(LocalStorageService.getUserProfile().role?.locations[0].LocationCode)\r\n }\r\n if (window.location.pathname.slice(15) == \"years\") {\r\n setCurrentPath('School Year')\r\n } else {\r\n setCurrentPath(window.location.pathname.slice(15))\r\n }\r\n\r\n }, [isManageRouteEnabled,])\r\n\r\n const onBack = () => {\r\n setIsManageRouteEnabled(false)\r\n }\r\n\r\n\r\n\r\n\r\n\r\n const onMenuClick = (e: any, menuName: string) => {\r\n \r\n if (window.location.pathname.slice(15) == \"years\") {\r\n setCurrentPath('School Year')\r\n } else {\r\n setCurrentPath(window.location.pathname.slice(15))\r\n }\r\n\r\n }\r\n\r\n const onNavaigationProfile = () => {\r\n if (window.location.pathname.slice(15) == \"years\") {\r\n setCurrentPath('School Year')\r\n } else {\r\n setCurrentPath(window.location.pathname.slice(15))\r\n }\r\n setIsManageRouteEnabled(true)\r\n }\r\n\r\n const PublicHeader = useCallback(() => {\r\n return (\r\n <div className=\"pt-5 welcome-heading\">\r\n <div className=\"container\">\r\n <div className=\"d-md-flex align-items-center\">\r\n <div className=\"text-center\">\r\n <div className=\"svg-app-icon text-secondary d-inline\" style={{ width: \"50px\" }}>\r\n <IconSchool />\r\n </div>\r\n </div>\r\n {locationCode != \"\" && <SchoolBanner id={locationCode} />}\r\n </div>\r\n <div>\r\n <GlobalMenu />\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }, [isManageRouteEnabled, locationCode])\r\n\r\n const ManageHeader = () => {\r\n return (\r\n <div className=\"pt-5 welcome-heading bg-blue-gray pb-5\">\r\n <Container className=\"container\">\r\n <Row>\r\n <Col sm=\"8\">\r\n <div className=\"d-flex\">\r\n <Link to='/ILearn' onClick={onBack} className=\"text-secondary pt-2 pb-2 pl-4 pr-4 border-secondary border-right\" ><i className=\"fas fa-arrow-circle-left fa-lg\"></i></Link>\r\n <h1 className=\"p-1 mb-0 ml-3 text-capitalize\" >Manage {currentPath}</h1>\r\n </div>\r\n </Col>\r\n <Col sm=\"4\" className=\"text-center text-sm-right\">\r\n <DropdownButton\r\n menuAlign=\"right\"\r\n title={currentPath}\r\n id=\"manage_pages_menu\"\r\n variant=\"outline-dark\"\r\n className=\"text-capitalize\"\r\n >\r\n <Dropdown.Item href=\"/ILearn/manage/announcements\" onClick={(e) => onMenuClick(e, '/ILearn/manage/announcements')}>Announcements</Dropdown.Item>\r\n <Dropdown.Item href='/ILearn/manage/vendors' onClick={(e) => onMenuClick(e, '/ILearn/manage/vendors')}> Vendors </Dropdown.Item>\r\n <Dropdown.Item href=\"/ILearn/manage/schools\" onClick={(e) => onMenuClick(e, '/ILearn/manage/schools')}> Schools </Dropdown.Item>\r\n <Dropdown.Item href=\"/ILearn/manage/years\" onClick={(e) => onMenuClick(e, '/ILearn/manage/years')}> School Year </Dropdown.Item>\r\n <Dropdown.Item href=\"/ILearn/manage/reports\" onClick={(e) => onMenuClick(e, '/ILearn/manage/reports')}> Reports </Dropdown.Item>\r\n </DropdownButton>\r\n </Col>\r\n </Row>\r\n </Container>\r\n </div>\r\n )\r\n }\r\n return (\r\n <BrowserRouter >\r\n <LocationContext.Provider value={value}>\r\n <Year.Provider value={v}>\r\n <Header />\r\n <Navbar variant=\"dark\" expand=\"lg\" className=\"navbar-mobile-links\">\r\n <Container className=\"justify-content-end\">\r\n <Navbar.Toggle aria-controls=\"basic-navbar-nav\" />\r\n <Navbar.Collapse id=\"basic-navbar-nav\" className=\"position-relative navbar-mobile-visible\">\r\n <Nav className=\"mr-auto position-relative\">\r\n <Nav.Link href=\"/Home\" className=\"link-mobile-visible link-mobile-home\">\r\n <div className=\"svg-app-icon text-white\" style={{ height: \"30px\" }}>\r\n <IconHome />\r\n </div>\r\n </Nav.Link>\r\n <li className=\"nav-item kendo-dropdown circle-dropdown k-school-dropdown\">\r\n <div className=\"nav-link main-and-sub\">\r\n <label className=\"list-sub-title\">Schools</label>\r\n <SchoolDropDown />\r\n </div>\r\n </li>\r\n <li className=\"nav-item kendo-dropdown circle-dropdown\">\r\n <div className=\"nav-link main-and-sub\">\r\n <label className=\"list-sub-title\">Year</label>\r\n <SchoolYearDropDown />\r\n </div>\r\n </li>\r\n </Nav>\r\n <ProfileMenu onNavigation={onNavaigationProfile} userProfile={userProfile} />\r\n </Navbar.Collapse>\r\n </Container>\r\n </Navbar>\r\n <React.Fragment>\r\n <ErrorDisplay />\r\n {\r\n isManageRouteEnabled ? <ManageHeader /> : <PublicHeader />\r\n }\r\n </React.Fragment>\r\n <div className=\"main-wrap\">\r\n <main className=\"container mt-5\">\r\n <Switch>\r\n <Route path=\"/ILearn/Courses\" render={(props) => <Courses {...props} id={locationCode} />} />\r\n <Route path=\"/ILearn/VendorContent\" render={(props) => <VendorContent {...props} id={locationCode} />} />\r\n <Route path=\"/ILearn/StudentStaffs\" render={(props) => <StudentAndStaff {...props} id={locationCode} />} />\r\n <Route path=\"/ILearn/PurchaseOrders\" render={(props) => <PurchaseOrder {...props} id={locationCode} />} />\r\n {/* <Route exact path=\"/StudentStaffs\">\r\n <AnnouncementManage />\r\n </Route> */}\r\n <Route exact path=\"/ILearn/Reports\" >\r\n {(locationCode != \"\" && orginalSchoolYear.id != \"\") &&\r\n <Report id={locationCode} />}\r\n </Route>\r\n <Route exact path=\"/ILearn/manage/reports\" >\r\n {(locationCode != \"\" && orginalSchoolYear.id != \"\") &&\r\n <Report id=\"AllSchools\" />}\r\n </Route>\r\n <Route exact path=\"/ILearn/manage/announcements\" component={AnnouncementManage} />\r\n <Route exact path=\"/ILearn/manage/vendors\" component={VendorManage} />\r\n <Route exact path=\"/ILearn/manage/schools\" component={SchoolManage} />\r\n <Route exact path=\"/ILearn/manage/years\" component={SchoolYearManage} />\r\n <Route exact path=\"/ILearn\">\r\n {(locationCode != \"\" && orginalSchoolYear.id != \"\") &&\r\n <Dashboard id={locationCode} />}\r\n </Route>\r\n </Switch>\r\n </main>\r\n </div>\r\n </Year.Provider>\r\n </LocationContext.Provider>\r\n </BrowserRouter>\r\n )\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","import { Log, UserManager } from 'oidc-client';\r\nimport appsettings from '../../assets/appsettings.json';\r\n\r\nexport default class AuthService {\r\n constructor() {\r\n const settings = {\r\n authority: appsettings.OIDC.REACT_APP_OIDC_AUTHORITY,\r\n metadataUrl: appsettings.OIDC.REACT_APP_OIDC_METADATA_URL,\r\n client_id: appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID,\r\n redirect_uri: appsettings.OIDC.REACT_APP_OIDC_REDIRECT_URI,\r\n silent_redirect_uri: appsettings.OIDC.REACT_APP_OIDC_SILENT_REDIRECT_URI,\r\n post_logout_redirect_uri: appsettings.OIDC.REACT_APP_OIDC_REDIRECT_URI,\r\n response_type: 'code',\r\n scope: \"openid profile offline_access\",\r\n filterProtocolClaims: true,\r\n loadUserInfo: false\r\n };\r\n this.userManager = new UserManager(settings);\r\n\r\n Log.logger = console;\r\n Log.level = Log.INFO;\r\n\r\n }\r\n\r\n isAuthenticated() {\r\n this.authService.getUser().then(user => {\r\n return (user)\r\n });\r\n }\r\n\r\n getUser() {\r\n return this.userManager.getUser();\r\n }\r\n\r\n login() {\r\n return this.userManager.signinRedirect().then(res => {\r\n //they use implicit flow => \r\n });\r\n }\r\n\r\n\r\n\r\n logout() {\r\n this.userManager.removeUser().catch((reason) => {\r\n console.error(reason)\r\n })\r\n this.userManager.signoutRedirect({\r\n id_token_hint: localStorage.getItem(\"id_token\")\r\n });\r\n\r\n this.userManager.clearStaleState();\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n clearInterval()\r\n return this.userManager.signoutRedirectCallback();\r\n }\r\n}","import React, { useState, useRef, useContext, useEffect } from 'react';\r\nimport { useHistory } from \"react-router-dom\";\r\nimport AuthService from '../services/openid/AuthService';\r\nimport { AuthContext, AuthContextType, AuthContextDefault } from '../services/AppContext';\r\nimport Header from \"./Header\";\r\n\r\n\r\nexport default function Login() {\r\n const authService = useRef(new AuthService())\r\n const [user, setUser] = useState<any>({});\r\n let history = useHistory();\r\n const { userProfile, setUserProfile } = useContext<AuthContextType>(AuthContext);\r\n const params = new URLSearchParams(window.location.search)\r\n const [loggedOut, setLoggedOut] = useState(false)\r\n\r\n useEffect(() => {\r\n if (window.location.search == \"?logout\") {\r\n authService.current.logout()\r\n setLoggedOut(true)\r\n }\r\n }, [window.location.search])\r\n\r\n const onSignIn = (e: any) => {\r\n const user1 = authService.current.getUser().then(user => {\r\n if (!user) {\r\n authService.current.login()\r\n }\r\n else {\r\n setUser(user);\r\n setUserProfile(AuthContextDefault.userProfile)\r\n history.push('/Home')\r\n }\r\n })\r\n }\r\n\r\n if (!loggedOut) {\r\n return (\r\n <div className='sign-in-page'>\r\n <Header />\r\n <div className=\"hero position-relative\">\r\n <div className=\"hero-gradient\"></div>\r\n <div className=\"hero-image\" style={{ \"background\": \"url(https://www.nycenet.edu/ui/apps/resources/graphics/patterns/oriental-tiles.png)\" }}></div>\r\n <div className='hero-signin-form'>\r\n <div className=\"container\">\r\n <div className=\"row\">\r\n <div className=\"col-md-8 offset-md-2 pl-3 pr-3\">\r\n <div className=\"app-txt-main h1 text-success\">LMS Admin</div>\r\n <div className=\"app-txt-sub h4 text-success\">Learning Management System</div>\r\n <div className=\"pt-2 pb-2 font-weight-normal\">\r\n Synchronize grades, rosters, courses and content between STARS systems and LMSs like iLearnNYC and Google Classroom.\r\n </div>\r\n\r\n <a asp-controller=\"Home\" asp-action=\"Login\" className=\"btn btn-warning btn-lg btn-block mt-4 col-6 offset-3 col-sm-4 offset-sm-4\"\r\n onClick={(e) => onSignIn(e)}>Sign In</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n else {\r\n return (<div>\r\n <h1>Redirecting...</h1>\r\n </div>)\r\n }\r\n}\r\n","import React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { Navbar, Nav, Container, Spinner } from 'react-bootstrap';\r\nimport { useHistory, useLocation } from 'react-router-dom'\r\nimport RbacService from '../services/RBACService'\r\nimport { IRBACUser } from '../model/IRBACUser';\r\nimport jwt_decode from \"jwt-decode\";\r\nimport appsettings from '../assets/appsettings.json'\r\nimport { AuthContext, AuthContextType, ErrorContext, IErrorContext, UserProfileType } from '../services/AppContext';\r\nimport Header from './Header'\r\nimport ProfileMenu from './ProfileMenu';\r\nimport AuthService from '../services/openid/AuthService';\r\nimport LocalStoreService from '../services/LocalStorage'\r\nimport IconHome from '../assets/icons/icon-home'\r\nimport SplashScreen from './SplashScreen'\r\nexport default function Home() {\r\n const [loadingStatus, setloadingStatus] = useState({\r\n isLoading: true,\r\n isSuccess: false\r\n });\r\n const authService = useRef(new AuthService())\r\n const history = useHistory();\r\n const mountedRef = useRef(true);\r\n const { userProfile, setUserProfile } = useContext<AuthContextType>(AuthContext);\r\n const { errorMessages, setErrorMessages } = useContext<IErrorContext>(ErrorContext);\r\n\r\n useEffect(() => {\r\n let userLoggedIn = sessionStorage.getItem(`lmi.user:claim:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`)\r\n if (!userLoggedIn) {\r\n authService.current.getUser().then((user) => {\r\n RbacService.getUserRole().then((claim) => {\r\n sessionStorage.setItem(`lmi.user:claim:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`, JSON.stringify(claim.data))\r\n let rbacUser = jwt_decode<IRBACUser>(claim.data.rbac_token)\r\n let userProfileFromClaim: UserProfileType = {\r\n userName: user?.profile.name, role: rbacUser\r\n }\r\n LocalStoreService.setUserProfile(userProfileFromClaim)\r\n LocalStoreService.setExpirationTime()\r\n setUserProfile(userProfileFromClaim);\r\n setloadingStatus({ isLoading: false, isSuccess: true })\r\n }).catch((e) => {\r\n setErrorMessages([...errorMessages, 'Oops!, Something went wrong. Please sign out and try again. ' + e]) //when session token is not created.\r\n setloadingStatus({ isLoading: false, isSuccess: false })\r\n })\r\n }) \r\n } \r\n \r\n else {\r\n setloadingStatus({ isLoading: false, isSuccess: true })\r\n }\r\n \r\n return () => { mountedRef.current = false }\r\n }, []);\r\n\r\n const onILearn = () => {\r\n history.push('/ILearn')\r\n }\r\n\r\n const onNavigation = () => {\r\n\r\n }\r\n\r\n return (\r\n <div>\r\n <Header />\r\n <Navbar variant=\"dark\" expand=\"lg\" className=\"navbar-mobile-links\">\r\n <Container className=\"justify-content-end\">\r\n <Navbar.Toggle aria-controls=\"basic-navbar-nav\" />\r\n <Navbar.Collapse id=\"basic-navbar-nav\" className=\"position-relative navbar-mobile-visible\">\r\n <Nav className=\"mr-auto position-relative\">\r\n <Nav.Link href=\"/Home\" className=\"link-mobile-visible link-mobile-home\">\r\n <div className=\"svg-app-icon text-white\" style={{ height: \"30px\" }}>\r\n <IconHome />\r\n </div>\r\n </Nav.Link>\r\n </Nav>\r\n <ProfileMenu onNavigation={onNavigation} userProfile={userProfile} />\r\n </Navbar.Collapse>\r\n </Container>\r\n </Navbar>\r\n\r\n <div className=\"pt-4 pb-4 welcome-heading\">\r\n <div className=\"container\">\r\n <div className=\"d-md-flex align-items-center\">\r\n <div className=\"text-center\">\r\n <h1 className=\"h1 mb-0\">Home</h1>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {loadingStatus.isLoading\r\n ? <SplashScreen />\r\n : !loadingStatus.isSuccess\r\n ? <React.Fragment><div className=\"container\"><div className='alert alert-danger mt-3 text-center'>{errorMessages}</div></div></React.Fragment>\r\n : <React.Fragment>\r\n <div className=\"container mt-4\">\r\n <div className=\"row\">\r\n <div className=\"col-xl-3 col-sm-6 d-flex\">\r\n <div className=\"card bg-light w-100\">\r\n <a href=\"#\" className=\"card-body text-center card-body-link text-dark\" onClick={onILearn}>\r\n <div className=\"svg-app-icon mb-3\" style={{ \"height\": \"60px\", \"color\": \"#e87511\" }}>\r\n <svg version='1.1' xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 32 23'><path d='M29.2,0H2.8C1.3,0,0,1.3,0,2.8v17.4C0,21.7,1.3,23,2.8,23h26.4c1.5,0,2.8-1.3,2.8-2.8 V2.8C32,1.3,30.7,0,29.2,0z M30.1,20.2c0,0.5-0.4,0.9-0.9,0.9h-2.3v-1.8c0-0.5-0.4-0.9-0.9-0.9H14.5c-0.5,0-0.9,0.4-0.9,0.9v1.8H2.8 c-0.5,0-0.9-0.4-0.9-0.9V2.8c0-0.5,0.4-0.9,0.9-0.9h26.4c0.5,0,0.9,0.4,0.9,0.9V20.2z' /><path d='M16,5.3H5.5c-0.5,0-0.8,0.4-0.8,0.9C4.7,6.6,5.1,7,5.5,7H16c0.5,0,0.8-0.4,0.8-0.9 C16.8,5.6,16.4,5.3,16,5.3z' /><path d='M16,8.7H5.5c-0.5,0-0.8,0.4-0.8,0.9c0,0.5,0.4,0.8,0.8,0.8H16c0.5,0,0.8-0.4,0.8-0.9 C16.8,9,16.4,8.7,16,8.7z' /><path d='M16,12.1H5.5c-0.5,0-0.9,0.4-0.9,0.9c0,0.5,0.4,0.9,0.9,0.9H16c0.5,0,0.9-0.4,0.9-0.9 C16.8,12.4,16.4,12.1,16,12.1z' /><path d='M22.7,5.5l-0.9,1.8l-2,0.3c-0.2,0-0.4,0.3-0.4,0.5c0,0.1,0.1,0.2,0.1,0.3 L21,9.9l-0.3,2c0,0.2,0.1,0.5,0.4,0.5c0.1,0,0.2,0,0.3,0l1.8-1l1.8,1c0.2,0.1,0.5,0,0.6-0.2c0-0.1,0.1-0.2,0-0.3l-0.3-2l1.5-1.4 c0.2-0.2,0.2-0.5,0-0.6c-0.1-0.1-0.2-0.1-0.3-0.1l-2-0.3l-0.9-1.8c-0.1-0.2-0.4-0.3-0.6-0.2C22.8,5.4,22.7,5.4,22.7,5.5z' /></svg>\r\n </div>\r\n <h2 className=\"card-title\">iLearn Align</h2>\r\n <div className=\"card-text\">Sync STARS courses for teachers into iLearnNYC</div>\r\n </a>\r\n </div>\r\n </div>\r\n <div className=\"col-xl-3 col-sm-6 d-flex mt-2 mt-sm-0\">\r\n <div className=\"card bg-light w-100\">\r\n <a href=\"https://www.nycenet.edu/lmsadmin/GsuiteDashboard/Index?Dbn=&Year=&Term=\" className=\"card-body text-center card-body-link text-dark\">\r\n <div className=\"svg-app-icon mb-3\" style={{ \"height\": \"60px\" }}>\r\n <svg version='1.1' xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 32 23'><g transform='translate(0.751 -0.018)'><g transform='translate(-0.751 0.018)'><path style={{ 'fill': '#0F9D58' }} d='M2.4,2.4h27.2v18.1H2.4V2.4z' /><path style={{ 'fill': '#57BB8A' }} d='M20.8,12.1c0.7,0,1.4-0.6,1.4-1.4c0-0.7-0.6-1.4-1.4-1.4c-0.7,0-1.4,0.6-1.4,1.4 C19.5,11.5,20.1,12.1,20.8,12.1L20.8,12.1z M20.8,13c-1.5,0-3,0.8-3,1.7v1h6v-1C23.8,13.8,22.3,13,20.8,13L20.8,13z M11.2,12.1 c0.7,0,1.4-0.6,1.4-1.4c0-0.7-0.6-1.4-1.4-1.4c-0.7,0-1.4,0.6-1.4,1.4C9.8,11.5,10.4,12.1,11.2,12.1L11.2,12.1z M11.2,13 c-1.5,0-3,0.8-3,1.7v1h6v-1C14.2,13.8,12.6,13,11.2,13L11.2,13z' /><path style={{ 'fill': '#F7F7F7' }} d='M16,10.9c1,0,1.8-0.8,1.8-1.8c0-1-0.8-1.8-1.8-1.8c-1,0-1.8,0.8-1.8,1.8c0,0,0,0,0,0 C14.2,10.1,15,10.9,16,10.9C16,10.9,16,10.9,16,10.9z M16,12.1c-2,0-4.2,1.1-4.2,2.4v1.2h8.5v-1.2C20.2,13.2,18,12.1,16,12.1z' /><path style={{ 'fill': '#F1F1F1' }} d='M21.1,19.3h5.4v1.2h-5.4V19.3z' /><path style={{ 'fill': '#F4B400' }} d='M30.2,0H1.8C0.8,0,0,0.8,0,1.8v19.3c0,1,0.8,1.8,1.8,1.8h28.4c1,0,1.8-0.8,1.8-1.8 V1.8C32,0.8,31.2,0,30.2,0z M29.6,20.5H2.4V2.4h27.2V20.5z' /><path style={{ 'opacity': '0.2', 'fill': '#FFFFFF' /*enable-background:new;'*/ }} d='M30.2,0H1.8C0.8,0,0,0.8,0,1.8V2 c0-1,0.8-1.8,1.8-1.8h28.4C31.2,0.2,32,1,32,2V1.8C32,0.8,31.2,0,30.2,0z' /><path style={{ 'opacity': '0.2', 'fill': '#BF360C' /*enable-background:new;'*/ }} d='M30.2,22.8H1.8C0.8,22.8,0,22,0,21v0.2 c0,1,0.8,1.8,1.8,1.8h28.4c1,0,1.8-0.8,1.8-1.8V21C32,22,31.2,22.8,30.2,22.8z' /><linearGradient gradientUnits='userSpaceOnUse' x1='-269.7468' y1='377.8292' x2='-269.7468' y2='377.7399' gradientTransform='matrix(21.944 0 0 -6.754 5944.3672 2572.1851)'><stop offset='0' style={{ 'stopColor': '#BF360C', \"stopOpacity\": 0.2 }} /><stop offset='1' style={{ 'stopColor': '#BF360C', 'stopOpacity': 2.000000e-02 }} /></linearGradient><path style={{ 'opacity': '.1' }} d='M26.6,20.5h-5.4l2.4,2.4H29L26.6,20.5z' /><path style={{ 'opacity': '0.2', 'fill': '#263238' /*'enableBackground' : 'new'*/ }} d='M2.4,2.3h27.2v0.2H2.4V2.3z' /><path style={{ 'opacity': '0.2', 'fill': '#FFFFFF', /*'enableBackground' : 'new'*/ }} d='M2.4,20.5h27.2v0.2H2.4V20.5z' /></g></g></svg>\r\n </div>\r\n <h2 className=\"card-title\">Google Classroom Align</h2>\r\n <div className=\"card-text\">Sync, create, and manage Google Classroom and STARS courses</div>\r\n </a>\r\n </div>\r\n </div>\r\n <div className=\"col-xl-3 col-sm-6 d-flex mt-2 mt-sm-4 mt-xl-0\">\r\n <div className=\"card bg-light w-100\">\r\n <a href=\"https://www.nycenet.edu/lmsadmin/Group/Index\" className=\"card-body text-center card-body-link text-dark\">\r\n <i className=\"fas fa-users text-success mb-3\" style={{ \"fontSize\": \"60px\" }}></i>\r\n <h2 className=\"card-title\">Google Groups</h2>\r\n <div className=\"card-text\">Create and manage your Google Groups</div>\r\n </a>\r\n </div>\r\n </div>\r\n <div className=\"col-xl-3 col-sm-6 d-flex mt-2 mt-sm-4 mt-xl-0\">\r\n <div className=\"card bg-light w-100\">\r\n <a href=\"https://idmapps.nycenet.edu/passwordreset\" className=\"card-body text-center card-body-link text-dark\" target=\"_blank\">\r\n <div className=\"svg-app-icon mb-3\" style={{ \"height\": \"60px\" }}>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"86.534\" height=\"51.71\" viewBox=\"0 0 86.534 51.71\">\r\n <g transform=\"translate(0 32.669)\">\r\n <path style={{ \"fill\": \"#036\" }} d=\"M360.981,175.713h3.2a3.375,3.375,0,0,1,3.646,3.689c0,2.437-1.386,3.75-3.646,3.75h-3.2v-7.439Zm1.938,5.772h.917c1.469-.03,2.052-.6,2.052-2.094a1.809,1.809,0,0,0-2.052-2.011h-.917Z\" transform=\"translate(-360.981 -175.713)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M378.07,182.914a1.154,1.154,0,0,0,1.209,1.228,1.056,1.056,0,0,0,1.011-.594h1.656a2.559,2.559,0,0,1-2.688,1.792,2.719,2.719,0,0,1-2.959-2.875,2.837,2.837,0,0,1,2.917-2.843c1.938,0,2.907,1.458,2.823,3.292Zm2.2-.99a1.1,1.1,0,0,0-1.053-1.1,1.167,1.167,0,0,0-1.146,1.1Z\" transform=\"translate(-368.947 -177.746)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M389.665,179.778h1.688v.625h.021a1.728,1.728,0,0,1,1.49-.781c1.7,0,2.417,1.458,2.417,2.979,0,1.406-.75,2.74-2.281,2.74a1.811,1.811,0,0,1-1.542-.739h-.021V187h-1.771v-7.22Zm1.708,2.646c0,.948.271,1.562,1.073,1.562s1.063-.823,1.063-1.562c0-.688-.271-1.448-1.053-1.448C391.977,180.976,391.373,181.31,391.373,182.424Z\" transform=\"translate(-375.897 -177.746)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M402.472,181.444a1.664,1.664,0,0,1,.844-1.449,3.572,3.572,0,0,1,1.719-.375c1.282,0,2.521.28,2.521,1.812V183.8a3.133,3.133,0,0,0,.209,1.386h-1.782a2.144,2.144,0,0,1-.1-.51,2.44,2.44,0,0,1-1.781.666c-1.031,0-1.844-.52-1.844-1.636,0-1.76,1.917-1.625,3.146-1.875.3-.061.469-.166.469-.5,0-.406-.49-.563-.854-.563a.793.793,0,0,0-.886.678h-1.657Zm2.292,2.8c.844,0,1.125-.48,1.084-1.594a5,5,0,0,1-1.094.291c-.4.094-.73.261-.73.688S404.369,184.247,404.764,184.247Z\" transform=\"translate(-382.444 -177.745)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M415.41,179.835h1.718v.948h.021a1.631,1.631,0,0,1,1.626-1.052,1.9,1.9,0,0,1,.417.041v1.615a2.474,2.474,0,0,0-.678-.1,1.243,1.243,0,0,0-1.333,1.282v2.677H415.41v-5.407Z\" transform=\"translate(-389.285 -177.802)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M427.351,179.32h-1.094v2.458c0,.428.25.521.635.521.145,0,.3-.021.458-.021v1.3c-.324.011-.646.052-.97.052-1.51,0-1.9-.438-1.9-1.906V179.32h-.9v-1.146h.9v-1.636h1.771v1.636h1.094v1.147Z\" transform=\"translate(-393.539 -176.142)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M432.852,179.778h1.718v.74h.022a1.8,1.8,0,0,1,1.551-.9,1.562,1.562,0,0,1,1.573.874,1.982,1.982,0,0,1,1.689-.874c1.718,0,1.906,1.3,1.906,2.333v3.229H439.54v-3.177c0-.584-.281-.927-.74-.927-.76,0-.833.584-.833,1.458v2.647H436.2v-3.073c0-.636-.188-1.031-.667-1.031-.636,0-.907.365-.907,1.469v2.636h-1.771v-5.407Z\" transform=\"translate(-398.355 -177.746)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M453.718,182.914a1.153,1.153,0,0,0,1.209,1.228,1.054,1.054,0,0,0,1.01-.594h1.656a2.558,2.558,0,0,1-2.688,1.792,2.719,2.719,0,0,1-2.959-2.875,2.837,2.837,0,0,1,2.916-2.843c1.938,0,2.907,1.458,2.824,3.292Zm2.2-.99a1.1,1.1,0,0,0-1.053-1.1,1.167,1.167,0,0,0-1.146,1.1Z\" transform=\"translate(-408.285 -177.746)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M465.314,179.778h1.718v.74h.021a2.043,2.043,0,0,1,1.7-.9c1.8,0,1.948,1.312,1.948,2.094v3.469h-1.771V182.57c0-.74.084-1.489-.886-1.489-.667,0-.958.562-.958,1.156v2.949h-1.771v-5.407Z\" transform=\"translate(-415.236 -177.746)\" /><path style={{ \"fill\": \"#036\" }} d=\"M481.143,179.32H480.05v2.458c0,.428.25.521.635.521.145,0,.3-.021.457-.021v1.3c-.323.011-.646.052-.969.052-1.51,0-1.9-.438-1.9-1.906V179.32h-.9v-1.146h.9v-1.636h1.771v1.636h1.093v1.147Z\" transform=\"translate(-421.512 -176.142)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M495.141,179.622a2.859,2.859,0,1,1-2.844,2.864A2.772,2.772,0,0,1,495.141,179.622Zm0,4.364c.823,0,1.084-.813,1.084-1.5s-.261-1.51-1.084-1.51-1.073.823-1.073,1.51S494.318,183.986,495.141,183.986Z\" transform=\"translate(-429.268 -177.746)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M505.326,178.891h-.855v-1.146h.855c0-1.552.541-2.032,2.052-2.032.281,0,.573.022.854.031v1.25a3.861,3.861,0,0,0-.479-.03c-.407,0-.656.052-.656.541v.24h1.062v1.146H507.1v4.26h-1.771Z\" transform=\"translate(-435.598 -175.713)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M360.981,199.56h5.928v1.552h-3.99v1.3h3.646v1.5h-3.646v1.417h4.094V207h-6.032V199.56Z\" transform=\"translate(-360.981 -188.114)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M380.307,207H378.62v-.625H378.6a1.728,1.728,0,0,1-1.49.781c-1.7,0-2.417-1.458-2.417-2.979,0-1.406.75-2.74,2.282-2.74a1.809,1.809,0,0,1,1.542.739h.021v-2.615h1.771Zm-3.844-2.76c0,.739.271,1.562,1.083,1.562.864,0,1.052-.823,1.052-1.51,0-.782-.281-1.5-1.052-1.5C376.734,202.79,376.463,203.551,376.463,204.238Z\" transform=\"translate(-368.111 -188.113)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M393.832,209.2h-1.719v-.74h-.021a1.992,1.992,0,0,1-1.646.9c-1.552,0-2-.9-2-2.313v-3.25h1.771v3.136c0,.719.312.969.875.969.385,0,.969-.25.969-1.209v-2.9h1.771Z\" transform=\"translate(-375.263 -190.316)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M404.968,205.6a.833.833,0,0,0-.864-.781c-.99,0-1.147.844-1.147,1.594,0,.7.3,1.417,1.053,1.417a.949.949,0,0,0,1.01-.927h1.718a2.534,2.534,0,0,1-2.719,2.281,2.691,2.691,0,0,1-2.834-2.771,2.737,2.737,0,0,1,2.834-2.948,2.427,2.427,0,0,1,2.667,2.135Z\" transform=\"translate(-381.888 -190.147)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M413.759,205.292a1.663,1.663,0,0,1,.844-1.448,3.572,3.572,0,0,1,1.719-.375c1.282,0,2.521.28,2.521,1.812v2.365a3.132,3.132,0,0,0,.209,1.385H417.27a2.144,2.144,0,0,1-.1-.51,2.44,2.44,0,0,1-1.781.666c-1.031,0-1.844-.52-1.844-1.636,0-1.76,1.917-1.625,3.146-1.875.3-.062.469-.166.469-.5,0-.407-.49-.563-.854-.563a.793.793,0,0,0-.886.678h-1.657Zm2.292,2.8c.844,0,1.125-.48,1.084-1.594a5,5,0,0,1-1.094.291c-.4.094-.73.261-.73.688S415.656,208.095,416.051,208.095Z\" transform=\"translate(-388.313 -190.147)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M429.206,203.167h-1.094v2.458c0,.428.25.521.635.521.146,0,.3-.021.458-.021v1.3c-.323.011-.646.052-.969.052-1.511,0-1.9-.438-1.9-1.906v-2.406h-.9v-1.146h.9v-1.636h1.771v1.636h1.094v1.147Z\" transform=\"translate(-394.504 -188.543)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M436.562,200.915h-1.771V199.56h1.771Zm-1.771.677h1.771V207h-1.771Z\" transform=\"translate(-399.363 -188.114)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M442.863,203.469a2.859,2.859,0,1,1-2.844,2.864A2.772,2.772,0,0,1,442.863,203.469Zm0,4.364c.823,0,1.084-.812,1.084-1.5s-.261-1.51-1.084-1.51-1.073.823-1.073,1.51S442.04,207.833,442.863,207.833Z\" transform=\"translate(-402.082 -190.147)\" />\r\n <path style={{ \"fill\": \"#036\" }} d=\"M453.377,203.626H455.1v.74h.021a2.041,2.041,0,0,1,1.7-.9c1.8,0,1.949,1.312,1.949,2.094v3.469h-1.772v-2.615c0-.74.084-1.49-.885-1.49-.667,0-.959.562-.959,1.156v2.949h-1.771v-5.407Z\" transform=\"translate(-409.029 -190.147)\" />\r\n </g>\r\n <path style={{ \"fill\": \"#69c\" }} d=\"M315.822,173.752H297.795l-5.408,5.408v18.028l5.408,5.408h18.027l5.409-5.408v-5.408l-1.8-1.8h-9.015v1.8H303.2v-7.212h7.211v1.781h9.015l1.8-1.781V179.16Z\" transform=\"translate(-234.697 -173.752)\" />\r\n <path style={{ \"fill\": \"#80b34d\" }} d=\"M199.237,173.752h-7.211l-1.8,1.8v7.211l-9.014-9.013H174l-1.8,1.8v25.239l1.8,1.8h7.211l1.8-1.8v-7.212l9.014,9.015h7.211l1.8-1.8V175.554Z\" transform=\"translate(-172.195 -173.752)\" />\r\n <path style={{ \"fill\": \"#f93\" }} d=\"M243.107,202.6h7.211l1.8-1.8v-5.408l9.015-9.014V175.554l-1.8-1.8H252.12l-1.8,1.8v3.606l-3.606,3.6-3.606-3.6h0v-3.606l-1.8-1.8h-7.211l-1.8,1.8v10.817l9.014,9.014v5.408Z\" transform=\"translate(-203.446 -173.752)\" />\r\n <g transform=\"translate(83.303 0.001)\">\r\n <path style={{ \"fill\": \"#69c\" }} d=\"M345.75,174.011v-.257h1.308v.257h-.5v1.278h-.306v-1.278Zm2.006-.257.393,1.1.39-1.1h.441v1.535H348.7v-1.237l-.422,1.237h-.246l-.429-1.237v1.237h-.282v-1.535Z\" transform=\"translate(-345.75 -173.754)\" />\r\n </g>\r\n </svg>\r\n </div>\r\n <h2 className=\"card-title\">Student Password Reset Admin</h2>\r\n <div className=\"card-text\">Reset student passwords and unlock their accounts</div>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"row mt-3\">\r\n <div className=\"col\">\r\n <div className=\"card text-center\">\r\n <div className='card-body'>\r\n <div className=\"svg-app-icon mr-2 d-inline text-primary\" style={{ \"height\": \"20px\" }}>\r\n <svg role=\"img\" aria-label=\"person wearing microphone headset\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 29.25\">\r\n <g>\r\n <path d=\"M25.74,14.33V11.12a.86.86,0,0,0-.58-.82l-.25-.09-.05,0a15,15,0,0,1-5.73-3.28c-.57-.58-1.06-1.09-1.74-1s-.85.68-1.11,1.33a7.64,7.64,0,0,1-8.7,5,.86.86,0,0,0-1,.66.87.87,0,0,0,.66,1c.08,0,7.63,1.55,10.63-5.87l0,0A16.38,16.38,0,0,0,24,11.74V16a.86.86,0,0,0,.87.87h0a.83.83,0,0,0,.61-.25,1.78,1.78,0,0,1,0,.47c0,.2-.8,4.8-6.51,5.39a1.9,1.9,0,0,0-1.79-1.27H15.14a1.91,1.91,0,0,0-1.91,1.91v.47a1.91,1.91,0,0,0,1.91,1.91h2.07A1.92,1.92,0,0,0,19,24.22c7.24-.64,8.21-6.83,8.22-6.9A2.87,2.87,0,0,0,25.74,14.33Zm-8.36,9.25a.17.17,0,0,1-.17.17H15.14a.17.17,0,0,1-.17-.17v-.47a.16.16,0,0,1,.17-.16h2.07a.16.16,0,0,1,.17.16Z\" />\r\n <path d=\"M22.86,24.49a.86.86,0,0,0-1.18.33c-.95,1.69-3.08,2.69-5.69,2.69H15.8c-6.62,0-8-10-8-10a.87.87,0,1,0-1.73.21c.06.48,1.53,11.58,9.69,11.58H16c3.25,0,5.94-1.34,7.2-3.58A.86.86,0,0,0,22.86,24.49Z\" />\r\n <path d=\"M12.59,16.13a.39.39,0,0,0-.39-.39.39.39,0,0,0,0,.77A.39.39,0,0,0,12.59,16.13Z\" />\r\n <path d=\"M13.46,16.13a1.26,1.26,0,1,0-1.26,1.25A1.26,1.26,0,0,0,13.46,16.13Z\" />\r\n <path d=\"M20.53,16.13a.38.38,0,0,0-.38-.39.39.39,0,1,0,0,.77A.38.38,0,0,0,20.53,16.13Z\" />\r\n <path d=\"M21.4,16.13a1.26,1.26,0,1,0-1.25,1.25A1.25,1.25,0,0,0,21.4,16.13Z\" />\r\n <path d=\"M31.7,23.65c-1.87-1.64-1.9-2.58-1.93-3.89,0-.16,0-.33,0-.5a9.71,9.71,0,0,1,.35-3.2l.21-1a.2.2,0,0,0,0-.07c.52-4.19-.37-7.63-2.65-10.21C24.36,1,18.78,0,16,0,15.23,0,8.38.13,4.32,4.72,2,7.3,1.15,10.75,1.67,15a.64.64,0,0,1,0,.07l.21,1a9.8,9.8,0,0,1,.35,3.21c0,.17,0,.34,0,.51,0,1.3-.06,2.25-1.93,3.88a.85.85,0,0,0-.16,1.12,3.79,3.79,0,0,0,3.21,1.64,6,6,0,0,0,2.91-.85.87.87,0,0,0,.33-1.19A.86.86,0,0,0,5.41,24c-1.66.93-2.72.64-3.29.28A5.64,5.64,0,0,0,4,19.81c0-.15,0-.31,0-.47a11.41,11.41,0,0,0-.38-3.65c-.07-.29-.13-.61-.21-1C3,11,3.7,8.06,5.63,5.88,9.24,1.79,15.73,1.74,16,1.74s6.73.05,10.37,4.16c1.93,2.19,2.68,5.15,2.23,8.81-.08.37-.15.69-.21,1A11.41,11.41,0,0,0,28,19.34c0,.16,0,.32,0,.47a5.66,5.66,0,0,0,1.84,4.51c-.57.36-1.62.65-3.28-.28a.86.86,0,0,0-1.18.33.87.87,0,0,0,.33,1.19c3.27,1.83,5.43.29,6.12-.79A.85.85,0,0,0,31.7,23.65Z\" />\r\n </g>\r\n </svg>\r\n </div>\r\n For any LMI support issue, please create a ticket in <a href=\"https://supporthub.schools.nyc\" target=\"_blank\" >Support Hub</a> Application.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n }\r\n </div>\r\n )\r\n}","import React, { Component } from 'react';\r\nimport AuthService from './AuthService';\r\n//import { useHistory } from \"react-router-dom\";\r\n\r\nexport default class SigninCallback extends Component {\r\n componentDidMount() {\r\n let authService = new AuthService();\r\n let mgr = authService.userManager;\r\n mgr.signinRedirectCallback()\r\n .then(() => { \r\n window.history.replaceState({}, window.document.title, window.location.origin);\r\n window.location = \"/Home\" \r\n })\r\n .catch((error) => this.onRedirectError(error));\r\n } \r\n\r\n onRedirectError = (error) => {\r\n window.location ='/'\r\n };\r\n\r\n render() {\r\n return (\r\n <div>\r\n <h1>Redirecting...</h1>\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Nav, NavItem } from 'react-bootstrap';\r\n\r\nexport default function Footer(/*props*/) {\r\n return (\r\n <footer className=\"footer\" id = \"footer\" >\r\n <div className=\"footer-container\">\r\n <div className=\"container\"> \r\n <div className=\"row\">\r\n <div className=\"footer-links col-sm-5\">\r\n <a className=\"anchor-links\" href=\"https://www.schools.nyc.gov/privacy-policy\" target=\"_blank\">Privacy Policy</a>\r\n </div>\r\n <div className=\"col-sm-7 footer-copyright\">© {new Date().getFullYear()} The New York City Department of Education</div>\r\n </div>\r\n </div>\r\n </div>\r\n </footer >\r\n )\r\n}","import { Redirect, Router } from \"react-router\";\r\nimport React, { useRef } from \"react\";\r\nimport { Route, RouteComponentProps, RouteProps } from \"react-router-dom\";\r\nimport AuthService from \"../services/openid/AuthService\";\r\nimport { render } from \"react-dom\";\r\nimport appsettings from '../assets/appsettings.json'\r\n\r\n// export default function ProtectedRoute({ children, ...rest})\r\n// {\r\n// return (\r\n// <Router {...rest} render={() => {\r\n// return true \r\n// ? component\r\n// : <Redirect to ='/Login' />\r\n// }} ></Router>\r\n// )\r\n// }\r\ninterface Props extends RouteProps {\r\n component: React.ComponentType;\r\n}\r\n\r\nconst PrivateRoute: React.SFC<RouteProps> =\r\n ({ component: Component, ...rest }) => {\r\n const authService = useRef(new AuthService())\r\n\r\n let isAuth = sessionStorage.getItem(`oidc.user:${appsettings.OIDC.REACT_APP_OIDC_AUTHORITY}:${appsettings.OIDC.REACT_APP_OIDC_CLIENT_ID}`)\r\n if (!Component) {\r\n return null;\r\n }\r\n if (!isAuth) {\r\n authService.current.userManager.signinRedirect()\r\n return <span>loading</span>;\r\n }\r\n else {\r\n return (\r\n\r\n <Route\r\n {...rest}\r\n render={(props: RouteComponentProps<{}>) => <Component {...props} />} />\r\n\r\n );\r\n }\r\n };\r\n\r\nexport default PrivateRoute;\r\n// export const ProtectedRoute = ({ component : Component, ...rest }: Props) => {\r\n// const authService = useRef(new AuthService())\r\n// const isAuth : boolean = true\r\n// return (\r\n// <Route\r\n// {...rest}\r\n// render={(props) => <Component {...props} />}\r\n// />\r\n// );\r\n// };\r\n\r\n\r\n\r\n// const renderFn = Component => props => (\r\n// <>\r\n// {({ isAuthenticated, signinRedirect }) => {\r\n// if (!!Component && isAuth) {\r\n// return <Component {...props} />;\r\n// } else {\r\n// signinRedirect();\r\n// return <span>loading</span>;\r\n// }\r\n// }}\r\n// </>\r\n// );\r\n\r\n// return <Route {...rest} render={renderFn(component)} />;","import React, {Component} from \"react\";\r\nimport AuthService from \"./LMIAuthService\";\r\n\r\nconst AuthContext = React.createContext({\r\n signinRedirectCallback: () => ({}),\r\n logout: () => ({}),\r\n signoutRedirectCallback: () => ({}),\r\n isAuthenticated: () => ({}),\r\n signinRedirect: () => ({}),\r\n signinSilentCallback: () => ({}),\r\n createSigninRequest: () => ({})\r\n});\r\n\r\nexport const AuthConsumer = AuthContext.Consumer;\r\n\r\nexport class AuthProvider extends Component {\r\n authService;\r\n constructor(props) {\r\n super(props);\r\n this.authService = new AuthService();\r\n }\r\n render() {\r\n return <AuthContext.Provider value={this.authService}>{this.props.children}</AuthContext.Provider>;\r\n }\r\n}","import React from \"react\";\r\nimport { AuthConsumer } from \"./authProvider\";\r\nexport const SilentRenew = () => (\r\n <AuthConsumer>\r\n { ({ signinSilentCallback }) => {\r\n signinSilentCallback()\r\n return <span>loading</span>;\r\n }} \r\n </AuthConsumer>\r\n);","import React, { useState, useEffect, useRef } from 'react';\r\nimport './App.css';\r\nimport ILearnLayout from './shared/ILearnLayout'\r\n\r\nimport { AuthContext, AuthContextDefault, ErrorContext, ErrorContextDefault, LocationContext, UserProfileType } from './services/AppContext'\r\nimport { Route, Switch } from 'react-router-dom';\r\nimport Login from './shared/Login';\r\nimport Home from './shared/Home';\r\nimport SigninCallback from './services/openid/SigninCallback';\r\nimport Header from \"./shared/Header\";\r\nimport Footer from \"./shared/Footer\";\r\nimport ProtectedRoute from \"./shared/ProtectedRoute\"\r\nimport { refreshToken, isTokenExpired } from './services/BaseService'\r\nimport moment from 'moment';\r\nimport LocalStorageService from './services/LocalStorage';\r\nimport { SilentRenew } from './services/oidc/silentRenew';\r\n\r\n\r\nexport default function App() {\r\n const [userProfile, setUserProfile] = useState<UserProfileType>(AuthContextDefault.userProfile)\r\n const [errorMessages, setErrorMessages] = useState<Array<string>>(ErrorContextDefault.errorMessages)\r\n const [locationCode, setLocationCode] = useState('');\r\n \r\n const getIntervalTime = () => {\r\n let now = moment();\r\n let expirationDate = moment(LocalStorageService.getExpirationTime());\r\n let time = expirationDate.diff(now, 'seconds') + 3\r\n return time * 1000\r\n }\r\n \r\n useEffect(() => {\r\n setInterval(() => {\r\n if (isTokenExpired()) {\r\n refreshToken()\r\n }\r\n }, getIntervalTime())\r\n })\r\n\r\n return (\r\n\r\n <AuthContext.Provider value={{ userProfile, setUserProfile }}>\r\n <div className=\"main-body\">\r\n <ErrorContext.Provider value={{ errorMessages, setErrorMessages }}>\r\n <LocationContext.Provider value={{ locationCode, setLocationCode }}>\r\n <Switch>\r\n\r\n <Route exact path=\"/\" component={Login} />\r\n <ProtectedRoute exact path=\"/Home\" component={Home} />\r\n <ProtectedRoute path=\"/ILearn\" component={ILearnLayout}\r\n render={({ match: { url } }) => (\r\n <>\r\n <ProtectedRoute path={`${url}/:tabName`} render={(props) => <ILearnLayout />} />\r\n <ProtectedRoute path={`${url}/manage/:tabName`} render={(props) => <ILearnLayout {...props} isManageActivated={true} />} />\r\n </>\r\n )} />\r\n <Route exact path='/silent-renew' component={SilentRenew} />\r\n <Route exact path='/signin-callback' component={SigninCallback} />\r\n <Route render={() =>\r\n <div>\r\n <Header />\r\n <div className=\"navbar\" style={{ \"height\": \"73px\" }}></div>\r\n\r\n <div className=\"container text-center\">\r\n <i className=\"fas fa-robot fa-4x text-rust m-5\"></i>\r\n <h1>Resource Not Found</h1>\r\n <div>That's all we know. Please check the URL.</div>\r\n <a href=\"/Home\" className=\"btn btn-primary mt-5\">Back to Home</a>\r\n </div>\r\n\r\n </div>\r\n } />\r\n\r\n </Switch>\r\n </LocationContext.Provider>\r\n </ErrorContext.Provider>\r\n </div>\r\n <Footer />\r\n </AuthContext.Provider>\r\n\r\n\r\n )\r\n}","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.scss';\r\n//import './styles/scss/lmi.scss' /* Compile lmi.scss file if any style changes have been made. Removed it here because it's slow to compile. Importing CSS styles instead. */\r\nimport './styles/css/lmi.css'\r\nimport App from './App';\r\nimport Login from '../src/shared/Login';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport registerServiceWorker from './registerServiceWorker';\r\nimport {\r\n BrowserRouter,\r\n Switch,\r\n Route,\r\n Link,\r\n NavLink,\r\n useRouteMatch,\r\n useParams,\r\n withRouter\r\n} from \"react-router-dom\";\r\n \r\nReactDOM.render(\r\n <React.StrictMode>\r\n \r\n <BrowserRouter>\r\n<App /> \r\n </BrowserRouter>\r\n \r\n \r\n </React.StrictMode>,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\nregisterServiceWorker();"],"names":["reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","name","length","prototype","caller","callee","arguments","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","Object","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","module","exports","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","i","key","descriptor","e","utils","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","request","extend","create","instanceConfig","CanceledError","CancelToken","isCancel","VERSION","toFormData","AxiosError","Cancel","all","promises","Promise","spread","isAxiosError","isStandardBrowserEnv","originURL","msie","test","navigator","userAgent","urlParsingNode","document","createElement","resolveURL","url","href","setAttribute","protocol","replace","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","isString","Array","isArray","arr","toString","call","f","g","Fragment","Symbol","for","h","m","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","n","hasOwnProperty","p","ref","__self","__source","q","c","a","k","b","d","l","$$typeof","props","_owner","current","jsx","jsxs","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","err","Error","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","baseURL","relativeURL","t","r","o","enumerable","get","toStringTag","value","__esModule","default","s","this","split","targets","indexOf","u","v","V","sort","join","cache","Intl","NumberFormat","useToLocaleString","useGrouping","grouping","slice","y","maximumSignificantDigits","minimumIntegerDigits","fractionDigits","groupingSeparator","decimalSeparator","w","S","maximumFractionDigits","minimumFractionDigits","x","parseFloat","format","toLocaleString","T","toPrecision","toFixed","O","_","D","reverse","parseInt","push","j","Math","abs","M","P","shift","label","toLowerCase","durationLabelsStandard","SS","ss","mm","hh","dd","ww","MM","yy","durationLabelsShort","durationTimeTemplates","HMS","HM","MS","durationLabelTypes","durationPluralKey","precision","template","returnMomentTypes","largest","outputTypes","E","defaults","asMilliseconds","asMonths","isValid","duration","years","months","weeks","days","hours","minutes","seconds","milliseconds","escape","general","types","L","F","RegExp","source","I","apply","N","C","R","G","stopTrim","match","U","localeData","_durationTimeTemplates","userLocale","locale","z","useLeftUnits","H","usePlural","W","$","forceLength","A","B","trunc","K","useSignificantDigits","Y","J","Q","minValue","X","Z","maxValue","ee","te","ne","re","oe","ie","trim","ae","ue","se","ce","fe","me","pe","ge","ye","he","de","index","text","token","ve","be","we","as","floor","subtract","rawValue","wholeValue","decimalValue","isSmallest","isLargest","tokenLength","Se","round","Te","pow","Oe","_e","xe","significantDigits","formattedValue","formattedValueEn","formattedValueMS","Ve","De","_durationLabelTypes","_data","fn","updateLocale","momentDurationFormatSetup","moment","iterator","constructor","filter","propertyIsEnumerable","configurable","writable","setPrototypeOf","__proto__","Reflect","construct","sham","Proxy","Date","ReferenceError","TypeError","interval","clearTimer","pooledTimer","timer","setInterval","update","titleFormat","getDatetime","globalFormat","clearInterval","removePooledElement","globalMoment","state","content","clearPooledTimer","pooledElements","forEach","console","error","splice","utc","unix","date","parse","tz","local","children","globalParse","globalLocal","globalTimezone","globalLocale","fromNow","fromNowDuring","from","add","toNow","to","ago","calendar","diff","durationFromNow","unit","decimal","Boolean","globalFilter","setTimer","pushPooledElement","onChange","getContent","setState","withTitle","assign","title","getTitle","globalElement","getOwnPropertyDescriptors","defineProperties","dateTime","Component","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","parseProtocol","config","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","val","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","abort","subscribe","aborted","ERR_BAD_REQUEST","send","normalizedName","propIsEnumerable","test1","String","test2","fromCharCode","map","test3","letter","shouldUseNative","target","symbols","toObject","validators","thing","deprecatedWarnings","validator","version","message","formatMessage","opt","desc","opts","ERR_DEPRECATED","warn","assertOptions","options","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","code","inherits","toJSON","description","fileName","lineNumber","columnNumber","stack","descriptors","customProps","axiosError","toFlatObject","obj","aa","ba","Set","ca","da","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","qa","ma","isNaN","na","la","removeAttribute","setAttributeNS","xlinkHref","ra","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","set","Qa","tag","_render","Ra","_context","_payload","_init","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","cb","ownerDocument","eb","Children","db","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","ob","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","style","setProperty","substring","ub","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","flags","$b","memoizedState","dehydrated","ac","cc","child","sibling","bc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","Map","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","log","LN2","unstable_UserBlockingPriority","ed","fd","gd","hd","id","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","documentMode","le","color","datetime","email","month","range","tel","time","week","event","listeners","qe","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","Ee","Fe","He","Ie","Je","Ke","Le","offset","nextSibling","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","contentEditable","Pe","Qe","Re","Ue","start","selectionStart","end","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","We","Xe","Ye","Ze","Yb","listener","$e","has","af","bf","random","cf","df","capture","passive","Nb","ef","ff","parentWindow","gf","hf","je","char","ke","unshift","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","clearTimeout","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","next","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","yg","zg","eventTime","lane","payload","callback","Ag","Bg","Cg","Dg","Eg","Fg","refs","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","mode","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","documentElement","tagName","fh","gh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","useState","getSnapshot","useEffect","setSnapshot","Oh","Ph","Qh","Rh","destroy","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","hi","ii","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","ri","pendingContext","Bi","Ci","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","last","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onClick","onclick","size","createElementNS","createTextNode","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","WeakMap","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","display","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","then","mj","nj","ceil","oj","pj","qj","rj","sj","tj","uj","vj","Infinity","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","min","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","kk","hk","_calculateChangedBits","unstable_observedBits","unmount","querySelectorAll","JSON","stringify","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","condition","args","argIndex","framesToPop","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","process","getDefaultAdapter","transformRequest","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isFileList","isObjectPayload","isObject","contentType","_FormData","env","FormData","parser","encoder","stringifySafely","transformResponse","silentJSONParsing","forcedJSONParsing","strictJSONParsing","ERR_BAD_RESPONSE","maxContentLength","maxBodyLength","validateStatus","common","merge","fns","ignoreDuplicateOf","line","substr","exec","validate","checkType","componentNameSafe","propFullNameSafe","_len","_key","chainedCheckType","StrictMode","Profiler","Suspense","forceUpdate","_status","_result","IsSomeRendererActing","count","toArray","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","isValidElement","lazy","memo","transformData","throwIfCancellationRequested","throwIfRequested","reason","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","hookCallback","some","hooks","setHookCallback","hasOwnProp","isObjectEmpty","isNumber","isDate","res","arrLen","createUTC","strict","createLocalOrUTC","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","len","momentProperties","updateInProgress","copyConfig","prop","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","argLen","deprecations","deprecateSimple","isFunction","Function","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","mom","output","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","max","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","aliases","dates","day","weekdays","weekday","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hour","ms","millisecond","minute","quarters","quarter","second","weekyears","weekyear","GG","isoweekyears","isoweekyear","isoweeks","isoweek","year","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","daysInMonth","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","values","getLocale","defineLocale","abbr","parentLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","makeAs","alias","asSeconds","asMinutes","asHours","asDays","asWeeks","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","kindOf","str","kindOfTest","isPlainObject","TypedArray","isTypedArray","Uint8Array","pattern","ArrayBuffer","isView","pipe","product","assignValue","thisArg","stripBOM","charCodeAt","superConstructor","sourceObj","destObj","merged","endsWith","searchString","position","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","warning","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","encode","serializedParams","hashmarkIndex","exportName","VENDOR_PREFIXES","TEST_ELEMENT","setTimeoutContext","bindFn","invokeArrayArg","each","deprecationMessage","nextKey","dest","src","inherit","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","addEventListeners","handler","splitStr","removeEventListeners","hasParent","parent","inStr","find","inArray","findByKey","uniqueArray","results","prefixed","camelProp","_uniqueId","getWindowForElement","doc","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","DIRECTION_VERTICAL","DIRECTION_UP","PROPS_XY","PROPS_CLIENT_XY","Input","manager","self","inputTarget","domHandler","ev","enable","init","inputHandler","eventType","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","deltaTime","angle","getAngle","distance","getDistance","offsetDelta","prevDelta","prevInput","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","lastInterval","computeIntervalInputData","srcEvent","computeInputData","emit","recognize","sqrt","atan2","PI","evEl","evTarget","evWin","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SingleTouchInput","started","normalizeSingleTouches","changed","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","identifier","changedTargetTouches","touch","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","compute","actions","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","preventSrc","STATE_FAILED","Recognizer","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","reset","attrTest","optionPointers","isRecognized","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","toggleCssProps","stop","force","stopped","curRecognizer","existing","remove","on","events","off","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","define","debug","info","Log","Global","_testing","setXMLHttpRequest","localStorage","sessionStorage","MetadataService","JsonService","_settings","_jsonService","resetSigningKeys","signingKeys","getMetadata","metadata","metadataUrl","getJson","metadataSeed","getIssuer","_getMetadataProperty","getAuthorizationEndpoint","getUserInfoEndpoint","getTokenEndpoint","getCheckSessionIframe","getEndSessionEndpoint","getRevocationEndpoint","getKeysEndpoint","getSigningKeys","_metadataUrl","authority","UrlUtility","addQueryParam","parseUrlFragment","lastIndexOf","decodeURIComponent","JoseUtil","jws","KeyUtil","X509","crypto","hextob64u","b64tohex","AllowedSigningAlgs","OidcClientSettings","client_id","client_secret","response_type","scope","redirect_uri","post_logout_redirect_uri","client_authentication","prompt","max_age","ui_locales","acr_values","resource","response_mode","filterProtocolClaims","loadUserInfo","staleStateAge","clockSkew","clockService","ClockService","userInfoJwtIssuer","mergeClaims","stateStore","WebStorageStateStore","ResponseValidatorCtor","ResponseValidator","MetadataServiceCtor","extraQueryParams","tt","et","extraTokenParams","rt","_authority","_metadata","_metadataSeed","_signingKeys","_client_id","_client_secret","_response_type","_scope","_redirect_uri","_post_logout_redirect_uri","_client_authentication","_prompt","_display","_max_age","_ui_locales","_acr_values","_resource","_response_mode","_filterProtocolClaims","_loadUserInfo","_staleStateAge","_clockSkew","_clockService","_userInfoJwtIssuer","_mergeClaims","_stateStore","_validator","_metadataService","_extraQueryParams","_extraTokenParams","getEpochTime","_store","_prefix","setItem","getItem","removeItem","getAllKeys","_contentTypes","_XMLHttpRequest","_jwtHandler","onload","getResponseHeader","startsWith","postForm","SigninRequest","id_token_hint","login_hint","request_uri","request_type","skipUserInfo","isOidc","isCode","SigninState","nonce","code_verifier","code_challenge","isOAuth","State","created","_id","_created","_request_type","toStorageString","fromStorageString","clearStaleState","OidcClient","createSigninRequest","readSigninResponseState","SigninResponse","processSigninResponse","validateSigninResponse","createSignoutRequest","SignoutRequest","readSignoutResponseState","SignoutResponse","ErrorResponse","processSignoutResponse","validateSignoutResponse","settings","metadataService","TokenClient","exchangeCode","grant_type","exchangeRefreshToken","refresh_token","error_description","error_uri","session_state","_nonce","_code_verifier","hashString","_code_challenge","hexToBase64Url","_skipUserInfo","getRandomValues","msCrypto","User","id_token","access_token","token_type","profile","expires_at","expires_in","AccessTokenEvents","accessTokenExpiringNotificationTime","accessTokenExpiringTimer","Timer","accessTokenExpiredTimer","_accessTokenExpiringNotificationTime","_accessTokenExpiring","_accessTokenExpired","load","unload","addAccessTokenExpiring","addHandler","removeAccessTokenExpiring","removeHandler","addAccessTokenExpired","removeAccessTokenExpired","Event","_name","_callbacks","findIndex","raise","SessionMonitor","CheckSessionIFrame","_userManager","_CheckSessionIFrameCtor","addUserLoaded","_start","addUserUnloaded","_stop","getUser","monitorAnonymousSession","querySessionStatus","sub","sid","catch","_sub","_sid","_checkSessionIFrame","_checkSessionInterval","_stopCheckSessionOnError","_callback","_raiseUserSessionChanged","_raiseUserSignedOut","_raiseUserSignedIn","checkSessionInterval","stopCheckSessionOnError","_url","_interval","_stopOnError","_frame_origin","_frame","visibility","_boundMessageEvent","_message","origin","_session_state","postMessage","TokenRevocationClient","_XMLHttpRequestCtor","revoke","_revoke","CordovaPopupWindow","_promise","_resolve","_reject","features","popupWindowFeatures","popupWindowTarget","startUrl","_isInAppBrowserInstalled","navigate","cordova","_error","_popup","InAppBrowser","_exitCallbackEvent","_exitCallback","_loadStartCallbackEvent","_loadStartCallback","promise","_success","_cleanup","close","Version","InMemoryWebStorage","UserManager","CordovaPopupNavigator","CordovaIFrameNavigator","UserInfoService","_userInfoService","_joseUtil","_tokenClient","_processSigninParams","_validateTokens","_processClaims","isOpenIdConnect","getClaims","_processCode","_validateIdTokenAndAccessToken","_validateIdToken","_validateIdTokenAttributes","validateJwtAttributes","_validateAccessToken","_getSigningKeyForJwt","header","kid","_filterByAlg","alg","_getSigningKeyForJwtWithSingleRetry","parseJwt","validateJwt","kty","at_hash","_getClaimsFromJwt","iss","KEYUTIL","superclass","lib","Base","mixIn","$super","WordArray","words","sigBytes","clamp","enc","Hex","Latin1","Utf8","BufferedBlockAlgorithm","_nDataBytes","_append","_process","blockSize","_minBufferSize","_doProcessBlock","Hasher","cfg","_doReset","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","x64","Word","high","low","toX32","Base64","_map","SHA256","_hash","HmacSHA256","SHA512","nt","HmacSHA512","SHA384","HmacSHA384","fromNumber","fromString","appName","am","DB","DM","DV","FV","F1","F2","fromInt","mp","invDigit","mpl","mph","um","mt2","r2","q3","ONE","dlShiftTo","mu","divide","convert","compareTo","revert","reduce","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","ZERO","subTo","copyTo","drShiftTo","fromRadix","lShiftTo","rShiftTo","isEven","exp","negate","toRadix","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","Rt","It","Dt","chunkSize","signum","intValue","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","getLowestSetBit","shiftRight","modPow","byteValue","shortValue","toByteArray","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","multiply","remainder","divideAndRemainder","modInverse","gcd","square","appVersion","dmp1","dmq1","coeff","curve","zinv","fromBigInteger","infinity","doPublic","setPublic","isPublic","isPrivate","encrypt","encryptOAEP","MessageDigest","Util","getCanonicalAlgName","getHashLength","Nr","hashHex","Ur","toBigInteger","getX","getY","isInfinity","twice","getInfinity","multiplyTwo","getQ","getA","getB","decodePointHex","getByteLength","getEncoded","toByteArrayUnsigned","decodeFrom","decodeFromHex","add2D","twice2D","multiply2D","isOnCurve","Sr","KJUR","asn1","ASN1Util","integerToByteHex","bigIntToMinTwosComplementsHex","getPEMStringFromHex","Mr","newObject","ASN1Object","DERBoolean","DERInteger","DERBitString","DEROctetString","DERNull","DERObjectIdentifier","DEREnumerated","DERUTF8String","DERNumericString","DERPrintableString","DERTeletexString","DERIA5String","DERUTCTime","DERGeneralizedTime","DERVisibleString","DERBMPString","DERSequence","DERSet","DERTaggedObject","explicit","jsonToASN1HEX","getEncodedHex","oidHexToInt","oidIntToHex","getLengthHexFromValue","hV","hTLV","isModified","getFreshValueHex","hL","hT","getValueHex","setByParam","tlv","DERAbstractString","getString","setString","Dr","setStringHex","hex","DERAbstractTime","localDateToUTC","formatDate","zeroPadding","Pr","setByDateValue","setByDate","DERAbstractStructured","setByASN1ObjectArray","asn1Array","appendASN1Object","setByBigInteger","setByInteger","setValueHex","int","setHexValueIncludingUnusedBits","setUnusedBitsAndHexValue","setByBinaryString","setByBooleanArray","newFalseArray","bin","setValueOidString","setValueName","x509","OID","name2oid","setValueNameOrOid","oid","withMillis","millis","sortFlag","sortflag","isExplicit","asn1Object","setASN1Object","tage","tagi","wr","Fr","Er","xr","Ar","kr","Cr","Tr","Rr","Ir","qr","Gr","Lr","Jr","Br","Or","jr","Hr","Vr","Kr","Wr","zr","Yr","Xr","$r","getLblen","getL","getVblen","getVidx","getV","getTLV","getTLVblen","getNextSiblingIdx","getChildIdx","getNthChildIdx","getIdxbyList","getIdxbyListEx","isContextTag","getTLVbyList","getTLVbyListEx","getVbyList","getVbyListEx","getInt","getOID","Qr","getOIDName","oid2name","hextooidstr","dump","ommit_long_octet","isASN1HEX","oidname","x509ExtName","checkStrictDER","isHex","utf8tob64u","b64utoutf8","isInteger","isBase64","isBase64URL","isIntegerArray","isPrintable","isIA5","isMail","DIGESTINFOHEAD","sha1","sha224","sha256","sha384","sha512","md2","md5","ripemd160","DEFAULTPROVIDER","hmacmd5","hmacsha1","hmacsha224","hmacsha256","hmacsha384","hmacsha512","hmacripemd160","MD5withRSA","SHA1withRSA","SHA224withRSA","SHA256withRSA","SHA384withRSA","SHA512withRSA","RIPEMD160withRSA","MD5withECDSA","SHA1withECDSA","SHA224withECDSA","SHA256withECDSA","SHA384withECDSA","SHA512withECDSA","RIPEMD160withECDSA","SHA1withDSA","SHA224withDSA","SHA256withDSA","MD5withRSAandMGF1","SHAwithRSAandMGF1","SHA1withRSAandMGF1","SHA224withRSAandMGF1","SHA256withRSAandMGF1","SHA384withRSAandMGF1","SHA512withRSAandMGF1","RIPEMD160withRSAandMGF1","CRYPTOJSMESSAGEDIGESTNAME","MD5","SHA1","SHA224","RIPEMD160","getDigestInfoHex","getPaddedDigestInfoHex","digestString","digestHex","sha256Hex","sha512Hex","isKey","DSA","ECDSA","prov","SECURERANDOMGEN","getRandomHexOfNbytes","getRandomBigIntegerOfNbytes","getRandomHexOfNbits","getRandomBigIntegerOfNbits","getRandomBigIntegerZeroToMax","getRandomBigIntegerMinToMax","setAlgAndProvider","updateString","updateHex","digest","sjcl","codec","toBits","fromBits","algName","provName","HASHLENGTH","Mac","algProv","mac","pass","doFinal","doFinalString","doFinalHex","setPassword","utf8","rstr","b64","b64u","Signature","_setAlgNames","mdAlgName","pubkeyAlgName","_zeroPaddingOfSignature","Zr","getKey","prvKey","pubKey","sHashHex","ecprvhex","eccurvename","prv","hSign","signWithMessageHashPSS","pssSaltLen","signWithMessageHash","signString","signHex","verify","ecpubhex","pub","verifyWithMessageHashPSS","verifyWithMessageHash","algProvName","initParams","psssaltlen","prvkeypem","prvkeypas","Cipher","getAlgByKeyAndName","decrypt","decryptOAEP","oidhex2name","ECParameterDB","getName","getBigRandom","setNamedCurve","ecparams","getByName","prvKeyHex","pubKeyHex","curveName","setPrivateKeyHex","setPublicKeyHex","getPublicKeyXYHex","keylen","getShortNISTPCurveName","generateKeyPairHex","biRSSigToASN1Sig","fromByteArrayUnsigned","serializeSig","verifyHex","parseSigHex","verifyRaw","Bitcoin","parseSig","toByteArraySigned","parseSigCompact","readPKCS5PrvKeyHex","readPKCS8PrvKeyHex","readPKCS8PubKeyHex","readCertPubKeyHex","parseSigHexInHexRS","asn1SigToConcatSig","concatSigToASN1Sig","hexRSSigToASN1Sig","regist","AES","iv","ciphertext","proc","eproc","ivlen","TripleDES","DES","cipher","ivsalt","keyhex","ivhex","parsePKCS5PEM","getKeyAndUnusedIvByPasscodeAndIvsalt","decryptKeyB64","getDecryptedKeyHex","getEncryptedPKCS5PEMFromPrvKeyHex","parseHexOfEncryptedPKCS8","encryptionSchemeAlg","encryptionSchemeIV","pbkdf2Salt","pbkdf2Iter","getPBKDF2KeyHexFromParam","PBKDF2","keySize","iterations","_getPlainPKCS8HexFromEncryptedPKCS8PEM","getKeyFromEncryptedPKCS8PEM","getKeyFromPlainPrivatePKCS8Hex","parsePlainPrivatePKCS8Hex","algparam","algoid","keyidx","getKeyFromPlainPrivatePKCS8PEM","_getKeyFromPublicPKCS8Hex","parsePublicRawRSAKeyHex","parsePublicPKCS8Hex","xy","dp","dq","co","setPrivateEx","setPrivate","crv","getPublicKeyFromCertHex","getPublicKeyFromCertPEM","generateKeypair","generate","prvKeyObj","pubKeyObj","getPEM","SubjectPublicKeyInfo","seq","octstr","bitstr","null","getKeyFromCSRPEM","getKeyFromCSRHex","parseCSRHex","p8pubkeyhex","getKeyID","getJWKFromKey","getPosArrayOfChildrenFromHex","getHexValueArrayOfChildrenFromHex","readPrivateKeyFromPEMString","readPKCS5PubKeyHex","readCertHex","getPublicKeyHex","tn","en","rn","nn","AlgorithmIdentifier","PSSNAME2ASN1TLV","HEX2STAG","foffset","aExtInfo","getVersion","getSerialNumberHex","getSignatureAlgorithmField","getAlgorithmIdentifierName","getX500Name","getIssuerHex","getIssuerString","hex2dn","getSubject","getSubjectHex","getSubjectString","getNotBefore","getNotAfter","getPublicKeyIdx","getPublicKeyContentIdx","getPublicKey","getSignatureAlgorithmName","getSignatureValueHex","verifySignature","parseExt","critical","vidx","getExtInfo","getExtBasicConstraints","extname","cA","pathLen","getExtKeyUsage","getExtKeyUsageString","getExtKeyUsageBin","KEYUSAGE_NAME","getExtSubjectKeyIdentifier","getExtAuthorityKeyIdentifier","getGeneralNames","issuer","dn","sn","getExtExtKeyUsage","getExtExtKeyUsageName","getExtSubjectAltName","getExtIssuerAltName","getGeneralName","rfc822","dns","uri","ip","getExtSubjectAltName2","getExtCRLDistributionPoints","getDistributionPoint","dpname","getDistributionPointName","full","getExtCRLDistributionPointsURI","getExtAIAInfo","ocsp","caissuer","getExtAuthorityInfoAccess","getExtCertificatePolicies","getPolicyInformation","policyoid","getPolicyQualifierInfo","cps","unotice","getUserNotice","exptext","getDisplayText","getExtCRLNumber","num","getExtCRLReason","getExtOcspNonce","getExtOcspNoCheck","getExtAdobeTimeStamp","reqauth","getX500NameRule","ds","getX500NameArray","dnarraytostr","getRDN","getAttrTypeAndValue","oid2atype","readCertPEM","getParam","serial","sigalg","notbefore","notafter","subject","sbjpubkey","ext","getExtParamArray","sighex","getExtParam","extn","findExt","updateExtCDPFullURI","updateExtAIAOCSP","updateExtAIACAIssuer","getInfo","dname","doPrivate","signPSS","verifyPSS","SALT_LEN_HLEN","SALT_LEN_MAX","SALT_LEN_RECOVER","hex2rdn","hex2attrTypeValue","getPublicKeyInfoPropOfCertPEM","JWS","isSafeJSONString","parseJWS","parsedJWS","sigvalH","headB64U","payloadB64U","sigvalB64U","sigvalBI","headS","payloadS","readSafeJSONString","jwsalg2sigalg","headerObj","payloadObj","headerPP","payloadPP","sigHex","verifyJWT","includedArray","aud","IntDate","getNow","verifyAt","gracePeriod","nbf","iat","jti","HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","PS256","PS384","PS512","none","getEncodedSignatureValueFromJWS","getJWKthumbprint","getZulu","intDate2UTCString","toUTCString","intDate2Zulu","SecureRandom","rng_seed_time","BigInteger","RSAKey","EDSA","an","un","cn","hn","ln","ASN1HEX","CryptoJS","b64toBA","stoBA","BAtos","BAtohex","stohex","stob64","stob64u","b64utos","b64tob64u","b64utob64","hex2b64","b64utohex","utf8tob64","b64toutf8","utf8tohex","hextoutf8","hextorstr","rstrtohex","hextob64","hextob64nl","b64nltohex","hextopem","pemtohex","hextoArrayBuffer","DataView","setUint8","ArrayBuffertohex","byteLength","getUint8","zulutomsec","zulutosec","zulutodate","datetozulu","uricmptohex","hextouricmp","ipv6tohex","hextoipv6","hextoip","iptohex","encodeURIComponentAll","newline_toUnix","newline_toDos","hextoposhex","intarystrtohex","strdiffidx","xn","An","kn","Pn","Buffer","TYPED_ARRAY_SUPPORT","RangeError","isEncoding","write","copy","readUInt16BE","Number","fromByteArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","kMaxLength","poolSize","_augment","species","fill","allocUnsafe","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","includes","_arr","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","x5c","_validateJwt","azp","scopes","SilentRenewService","UserManagerSettings","_events","UserManagerEvents","_silentRenewService","automaticSilentRenew","startSilentRenew","monitorSession","_sessionMonitor","_tokenRevocationClient","_loadUser","removeUser","storeUser","signinRedirect","useReplaceToNavigate","_signinStart","_redirectNavigator","signinRedirectCallback","_signinEnd","signinPopup","popup_redirect_uri","_signin","_popupNavigator","signinPopupCallback","_signinCallback","signinSilent","_useRefreshToken","includeIdTokenInSilentRenew","validateSubOnSilentRenew","current_sub","_signinSilentIframe","_validateIdTokenFromTokenRefreshToken","auth_time","silent_redirect_uri","_iframeNavigator","silentRequestTimeout","signinSilentCallback","signinCallback","signoutCallback","signoutRedirectCallback","signoutPopupCallback","query_status_response_type","prepare","signoutRedirect","_signoutStart","_signoutEnd","signoutPopup","popup_post_logout_redirect_uri","_signout","revokeAccessTokenOnSignout","_revokeInternal","revokeAccessToken","_revokeAccessTokenInternal","_revokeRefreshTokenInternal","stopSilentRenew","_userStore","_userStoreKey","redirectNavigator","popupNavigator","iframeNavigator","userStore","RedirectNavigator","PopupNavigator","IFrameNavigator","_popup_redirect_uri","_popup_post_logout_redirect_uri","_popupWindowFeatures","_popupWindowTarget","_silent_redirect_uri","_silentRequestTimeout","_automaticSilentRenew","_validateSubOnSilentRenew","_includeIdTokenInSilentRenew","_monitorSession","_monitorAnonymousSession","_query_status_response_type","_revokeAccessTokenOnSignout","PopupWindow","notifyOpener","_checkForPopupClosedTimer","_checkForPopupClosed","closed","opener","IFrameWindow","notifyParent","_timeout","_origin","_userLoaded","_userUnloaded","_silentRenewError","_userSignedIn","_userSignedOut","_userSessionChanged","removeUserLoaded","removeUserUnloaded","addSilentRenewError","removeSilentRenewError","_raiseSilentRenewError","addUserSignedIn","removeUserSignedIn","addUserSignedOut","removeUserSignedOut","addUserSessionChanged","removeUserSessionChanged","_nowFunc","expiration","_timerHandle","_expiration","_tokenExpiring","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","requestAnimationFrame","port2","port1","onmessage","pop","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","formData","convertValue","Blob","build","parentKey","fullKey","el","append","ERR_CANCELED","__CANCEL__","isAbsoluteURL","combineURLs","requestedURL","executor","resolvePromise","_listeners","onfulfilled","expires","path","domain","secure","cookie","toGMTString","checkDCE","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","group","modifier","asterisk","partial","optional","prevText","escapeGroup","restrictBacktrack","escapeString","encodeURIComponentPretty","encodeURI","pretty","segment","attachKeys","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","hasOwn","classNames","classes","appendClass","parseValue","newClass","Uint16Array","threadID","identifierPrefix","uniqueID","listing","pre","textarea","suppressContentEditableWarning","suppressHydrationWarning","domNamespace","childIndex","footer","exhausted","currentSelectValue","previousWasTextNode","makeStaticMarkup","suspenseDepth","contextIndex","contextStack","contextValueStack","clearProviders","pushProvider","popProvider","fallbackFrame","renderDOM","renderToStaticMarkup","dispatchRequest","interceptors","configOrUrl","boolean","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","_createChainableTypeChecker2","_len2","_key2","_createChainableTypeChecker","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","definition","chunkId","miniCssF","globalThis","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","onScriptComplete","prev","doneFns","head","nmd","paths","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","ThemeContext","React","useBootstrapPrefix","defaultPrefix","prefixes","_excluded","Container","_ref","bsPrefix","fluid","_ref$as","className","_objectWithoutPropertiesLoose","_extends","DEVICE_SIZES","Row","noGutters","decoratedBsPrefix","sizePrefix","brkPoint","cols","propValue","infix","Col","spans","span","_propValue$span","matchesImpl","qsa","selector","optionsSupported","onceSupported","once","canUseDOM","eventName","wrappedHandler","__once","onceHandler","defaultKey","_toPropertyKey","hint","prim","toPrimitive","_toPrimitive","useUncontrolledProp","wasPropRef","_useState","stateValue","isProp","wasProp","useUncontrolled","fieldName","_extends2","Utils","propsValue","rest","handlerName","_useUncontrolledProp","nextProps","prevState","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","__suppressDeprecationWarning","usePrevious","useForceUpdate","useEventCallback","useCommittedRef","useGlobalListener","eventTarget","useEventListener","useCallbackRef","useMounted","mounted","getBasePlacement","placement","getWindow","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","offsetLeft","offsetTop","right","bottom","getLayoutRect","rootNode","getRootNode","isSameNode","getNodeName","getComputedStyle","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","auto","basePlacements","viewport","popper","variationPlacements","acc","placements","modifierPhases","getVariation","unsetSides","mapToStyles","_ref2","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","getOppositePlacement","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","list","_element$ownerDocumen","scrollParent","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","strategy","html","clientWidth","clientHeight","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","reference","basePlacement","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","rects","elements","clippingClientRect","contextElement","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","axis","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","enabled","phase","requires","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","scroll","getNodeScroll","modifiers","visited","requiresIfExists","dep","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","attributes","styles","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","orderModifiers","mergeByName","_ref$options","effect","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","referenceRect","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","arrow","_options$scroll","_options$resize","resize","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","querySelector","initialPopperStyles","disabledApplyStylesModifier","ariaDescribedByModifier","ids","_popper$getAttribute","_state$elements2","role","EMPTY_MODIFIERS","referenceElement","popperElement","_temp","_ref3$enabled","_ref3$placement","_ref3$strategy","_ref3$modifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","_useSafeState","useSafeState","popperState","updateModifier","safeFindDOMNode","componentOrElement","ReactDOM","noop","getRefTarget","onRootClose","_ref$clickTrigger","clickTrigger","preventMouseRootCloseRef","onClose","handleMouseCapture","_e$composedPath$","isLeftClickEvent","composedPath","handleMouse","handleKeyUp","currentEvent","removeMouseCaptureListener","listen","removeMouseListener","removeKeyupListener","mobileSafariHackListeners","mergeOptionsWithPopperConfig","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","enableEvents","flip","fixed","containerPadding","_ref$popperConfig","popperConfig","toModifierMap","eventListeners","useDropdownMenu","DropdownContext","_useCallbackRef","attachArrowRef","hasShownRef","rootCloseEvent","_options$fixed","_options$popperConfig","_options$usePopper","usePopper","shouldUsePopper","show","alignEnd","drop","setMenu","menuElement","toggleElement","menuProps","hasShown","toggle","arrowProps","useRootClose","DropdownMenu","_useDropdownMenu","useDropdownToggle","_ref$show","_ref$toggle","setToggle","handleClick","DropdownToggle","_useDropdownToggle","focusFirstItemOnShow","itemSelector","defaultShow","onToggle","useRefWithUpdate","attachRef","Dropdown","rawShow","rawOnToggle","_ref$itemSelector","_useRefWithUpdate","menuRef","_useRefWithUpdate2","toggleRef","lastShow","lastSourceEvent","focusInDropdown","nextShow","focusToggle","maybeFocusFirst","focusType","nativeMatch","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","first","getNextFocusedChild","items","_menuRef$current","_toggleRef$current","fromMenu","fromToggle","_next","_menuRef$current2","Toggle","makeEventKey","eventKey","NavContext","funcs","isTrivialHref","SafeAnchor","onKeyDown","tabIndex","createChainedFunction","DropdownItem","onSelect","propActive","active","onSelectCtx","SelectableContext","activeKey","toFnRef","refA","refB","mergeRefs","useWrappedRefWithWarning","hasClass","classList","baseVal","getMargins","marginTop","marginRight","marginBottom","marginLeft","usePopperMarginModifiers","overlayRef","margins","arrowMargins","popoverClass","dropdownMenuClass","overlay","margin","_margins$current","_arrowMargins$current","_getMargins","alignDirection","alignPropType","sm","xl","align","alignRight","showProps","renderOnMount","isNavbar","NavbarContext","_usePopperMarginModif","popperRef","marginModifiers","alignClasses","_useDropdownMenu$","useMergedRefs","Button","variant","block","childBsPrefix","toggleProps","rHyphen","pascalCase","chr","createWithBsPrefix","_ref$displayName","BsComponent","_ref2$as","Tag","resolvedPrefix","DropdownHeader","DropdownDivider","DropdownItemText","pProps","_useUncontrolled","_useUncontrolled$as","navbar","handleToggle","handleSelect","BaseDropdown","Divider","Header","Item","ItemText","menuAlign","menuRole","renderMenuOnMount","DropdownButton","NavbarBrand","psuedoElement","ownerWindow","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","transforms","getPropertyValue","isTransform","removeProperty","cssText","forceReflow","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","_this","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","_inheritsLoose","_proto","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","performEnter","performExit","_this2","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","_this3","onExit","onExiting","onExited","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","_this$props","childProps","TransitionGroupContext","emulateTransitionEnd","called","handle","triggerEvent","transitionEnd","mult","parseDuration","removeEmulate","transitionEndListener","triggerBrowserReflow","_collapseStyles","MARGINS","getDefaultDimensionValue","dimension","elem","collapseStyles","getDimensionValue","Collapse","_ref$dimension","_ref$getDimensionValu","computedDimension","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","innerProps","NavbarCollapse","expanded","NavbarToggle","NavbarText","Navbar","initialBsPrefix","expand","sticky","_onToggle","collapseOnSelect","controlledProps","handleCollapse","expandClass","navbarContext","Brand","Text","getControlledId","getControllerId","needsRefocusRef","parentOnSelect","tabContext","TabContext","listNode","getNextActiveChild","currentListNode","activeChild","nextIndex","mergedRef","nextActiveChild","dataset","rbEventKey","NavItem","AbstractNavItem","navKey","navContext","isActive","contextControllerId","contextControlledId","handleOnclick","NavLink","Nav","uncontrolledProps","_classNames","navbarBsPrefix","cardHeaderBsPrefix","justify","navbarScroll","cardContext","CardContext","AbstractNav","Link","AuthContextDefault","userProfile","userName","userId","roleName","roleID","locations","LocationCode","LocationName","setUserProfile","AuthContext","ErrorContextDefault","errorMessages","setErrorMessages","ErrorContext","LocationContextDefault","locationCode","setLocationCode","LocationContext","OrginalSchoolYearDefault","orginalSchoolYear","isCurrent","schoolYearEndDate","setOrginalSchoolYear","Year","LocalStorageService","getUserProfile","_this$getItem","getExpirationTime","setExpirationTime","expirationDate","appsettings","clear","getUserRole","AxiosInstance","atob","nopLogger","logger","level","NONE","ERROR","WARN","INFO","DEBUG","_len3","_key3","_len4","_key4","testing","newRequest","additionalContentTypes","XMLHttpRequestCtor","jwtHandler","req","allowedContentTypes","found","basicAuth","OidcMetadataUrlPath","JsonServiceCtor","seed","jwks_uri","keySet","YAHOO","dbits","b64map","int2char","nbi","rr","vv","BI_RM","BI_RC","intAt","nbv","nbits","Classic","Montgomery","op_and","op_or","op_xor","op_andnot","lbit","cbit","NullExp","nNop","Barrett","lowprimes","lplim","Arcfour","rng_state","rng_pool","rng_pptr","rng_get_byte","parseBigInt","oaep_mgf1_arr","ECFieldElementFp","ECPointFp","ECCurveFp","pkcs1pad2","oaep_pad","jsonParse","oidtohex","ishex","bitstrtoint","strpad","hextooid","_RE_HEXDECONLY","pss_mgf1_str","_rsasign_getAlgNameAndHashFromHexDisgestInfo","_crypto","jwt","audience","timeInsensitive","lowerNow","upperNow","getJoseUtil","joseUtil","claims","issuerPromise","clockSkewInSeconds","super","ProtocolClaims","UserInfoServiceCtor","TokenClientCtor","claims1","claims2","tokenResponse","hashAlg","hashBits","sha","left_b64u","DefaultResponseType","DefaultScope","DefaultClientAuthentication","DefaultStaleStateAge","DefaultClockSkewInSeconds","idx","counter","_cryptoUuidv4","_uuidv4","storageString","storage","age","cutoff","oidc","expired","signinRequest","signinState","removeState","useQuery","storedStateString","signoutState","stateKey","keepOpen","popup","frame","DefaultAccessTokenExpiringNotificationTime","DefaultCheckSessionInterval","nowFunc","timerDuration","container","expiring","user","raiseEvent","userManager","stopOnError","CheckSessionIFrameCtor","tmpUser","timerHandle","required","xhr","SilentRenewServiceCtor","SessionMonitorCtor","TokenRevocationClientCtor","navParams","idTokenValidation","navResponse","signinResponse","navigatorParams","postLogoutRedirectUri","signoutRequest","signoutResponse","success","atSuccess","rtSuccess","AuthService","async","base64","navigateToScreen","isAuthenticated","oidcStorage","REACT_APP_AUTH_URL","REACT_APP_IDENTITY_CLIENT_ID","logout","REACT_APP_PUBLIC_URL","login","renewToken","AxiosInstances","authService","refreshingToken","onRequest","_sessionStorage$getIt","claimToken","claim","rbac_token","onRequestError","onResponse","onResponseError","_error$response","getData","getRecent","requestdata","isPresent","isBlank","isNotNullOrEmptyString","isNullOrEmptyString","isNumeric","isCompositeFilterDescriptor","filters","ifElse","predicate","compose","reduceRight","curr","getterCache","FIELD_REGEX","what","safe","fields","indexAccessor","pairwise","accessor","isNotEmpty","isNotEmptyArray","runOrEmpty","formatDescriptors","formatter","sanitizeDateLiterals","removeAfterDot","directionFormatter","_b","take","aggregates","skip","formatSort","formatGroup","formatAggregates","aggregate","formatDateValue","transformSkip","transformTake","transformGroup","transformSort","transformAggregates","filterFormatter","operator","ignoreCase","g1","mapper","translateAggregate","translateAggregates","valueOrDefault","translateGroup","hasSubgroups","Aggregates","Member","member","HasSubgroups","Items","Key","__spreadArray","pack","ar","SuppressedError","FilterOperator","localeCompare","compareDesc","descriptorAsFunc","initial","groupCombinator","agg","groupValue","valueToString","__position","aggregatesCombinator","functions","fieldAccessor","aggregateName","aggregateAccessor","fieldAggregates","aggregateFunction","average","calc","NEGATIVE_INFINITY","POSITIVE_INFINITY","sum","aggregatesFuncs","isTransformerResult","__value","reduced","length_1","identity","aggregateBy","transformers","expandAggregates","normalizeOperator","equal","equalto","greater","greaterthan","greaterthanequal","isempty","isequalto","isgreaterthan","isgreaterthanorequalto","islessthan","islessthanorequalto","isnotempty","isnotequalto","isnull","less","lessthan","lessthanequal","notequal","notequals","notequalto","notsubstringof","normalizeFilters","logic","normalizeDescriptor","operatorsMap","doesnotcontain","doesnotendwith","doesnotstartwith","endswith","eq","gt","gte","isnotnull","lt","lte","neq","startswith","dateRegExp","transformFilter","itemProp","stringValue","typedGetter","op","transformCompositeFilter","combiner","compileFilter","filterBy","normalizeGroups","groupBy","originalData","aggregateResult","filteredData","orderBy","comparer","composeSortDescriptors","skipCount","takeCount","filterDescriptor","sortDescriptors","hasFilters","hasGroups","__extends","extendStatics","__","GridColumnMenuItem","iconClass","GridColumnMenuItemGroup","addKeys","addLeafKeys","addClass","replaceClassName","origClass","classToRemove","removeClass","removeOneClass","CSSTransition","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","_this$resolveArgument2","_this$resolveArgument3","getClassNames","isStringClassNames","baseClassName","activeClassName","doneClassName","addOneClass","_addClass","_this$appliedClasses$","computedStyles","__assign","__rest","util","AnimationChild","_element","transitionName","transitionEnterDuration","transitionExitDuration","onAfterExited","animationEnteringStyle","animationEnteredStyle","animationExitingStyle","animationExitedStyle","childAnimationContainerClassNames","defaultStyle","transitionDelay","animationStyle","entering","transitionDuration","entered","exiting","exited","transitionProps","animatedElement","appearActive","enterActive","exitActive","div","getChildMapping","mapFn","getProp","getNextChildMapping","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","TransitionGroup","handleExited","_assertThisInitialized","contextValue","firstRender","currentChildMapping","childFactory","_0x4bd098","_0x5109","_0x3a49a3","_0x495a4c","_0xae363","_0x1203d3","_0x130e","GRACE_SUBSCRIPTION_DAYS","JWT_LICENSE_EVIDENCE_TYPE","LOG_HEADER","PUBLIC_KEY","logHeader","_0x11636d","_0x204796","toNumericDate","_0x40de20","_0x16bd58","getCurrentDate","decodeBase64","_0x4e6e70","_0x1df651","_0x4061f0","_0x1a9b78","_0x2bf536","_0x1b6993","_0x12b927","_0x399873","_0x57172b","_0x4df6cb","_0x12826e","_0x47ad02","_0xe237cc","_0x44fb56","decodeString","_0x417625","_0x8ffb0d","_0x3c5297","_0x1cf2cd","_0x49e8f7","_0x19be6d","decodeBase64Url","_0x43449a","_0x39e9cf","_0x24e9fa","isExpired","_0x50cae0","_0x179161","_0x48575f","_0x4db944","findPackageLicense","_0x4b3cae","_0x7efda","_0x871201","_0x145c14","_0x4121a9","_0x39d8a6","_0x1e36c9","_0x5d7c13","_0x7197b9","_0x157c80","_0x1a6f3e","_0x401aef","_0x4e556c","_0x3392fb","_0x15c005","_0x375744","_0x5bea9c","_0x3dcbdb","_0x69aae3","_0x8ffc86","_0xb3e088","_0x114de2","_0x374eb2","_0x28c5ce","_0xf201b7","addDays","_0x9c85c3","_0x404a3e","_0x3e3424","_0x2b6d73","_0x533cf8","findRuntimeLicense","_0x7c0429","_0x3e910a","_0x4fe0f7","_0x30aaff","_0x239b5f","_0x37a0f2","_0x2ef3dc","_0x5caa2f","_0x4b47b5","_0x3d2477","_0x3a23c3","_0x40df55","_0x406c9f","decodeLicenseEvidence","_0x5ba7eb","_0xa095f7","_0x24811c","getProductCode","_0x110acb","NoLicenseFoundRuntimeError","_0xff243f","_0x47c299","ProductNotLicensedRuntimeError","_0x3824d6","_0x3031f0","ExpiredTrialLicenseRuntimeError","_0x4b4b3c","_0x444c0c","_0x598663","ExpiredLicenseRuntimeError","_0x522d83","_0x51444e","_0x3f7281","_0x4440d3","_0x409566","_0x264276","TrialLicenseRuntimeInfo","_0x48d96e","_0x308b08","_0x6a913","_0x5f4de9","_0x4176de","_0x130e83","_0x5109b4","_0x34f247","_0x48c7a9","_0x51a49e","_0x1b3695","_0x58511f","_0x455fe6","_0x4c54ce","_0x362053","_0x491338","_0x26d6df","_0x47cbbd","verifyLicenseEvidence","_0x2f2d8c","_0x2bb694","_0x3bf3ba","TextEncoder","TextDecoder","_0x206f1e","_0x4cb6ad","_0x4b71ba","_0x4b6c91","_0x219374","_0x2d4e98","_0x50906f","_0x509f36","_0x182f0b","_0x3f7008","_0x33ad4e","_0x5bd875","_0xf69dd1","_0x3d269b","_0x887631","_0x5722f1","_0x54d5fa","_0x8d662b","_0x1f9790","_0x16804c","_0x3f8878","_0x3b1502","_0x2db284","_0x39e83f","_0x11c562","_0x125ea0","_0x40cf3b","_0x25b9da","_0x21bf50","_0x43e577","_0x312283","_0x2d5dfe","importRsaKey","_0x53e9d8","_0x3e805f","_0x50976e","_0x30c83b","_0xfceadb","_0x1f8947","_0x4fcf84","publicKey","touchedProducts","setScriptKey","_0x298e29","_0x5669f6","_0xb64709","_0xe5eb72","_0x50f533","_0x2673fe","_0x26c22e","_0x2e7961","_0x4042ed","_0x444df6","_0x42a906","_0x323a2b","_0x4ee691","_0x4f70dc","_0x74dad4","_0x413a17","_0x382d4b","_0x4de0e1","decodeScriptKey","_0x470fb5","_0x43108a","_0x4cfbaa","_0x94db33","_0x4dbdff","_0x246fdf","_0x9d9187","_0x249db6","_0x2a5dfc","_0x1c7df6","_0x1f1c82","_0x18be76","_0x304ab6","_0x1da5cd","_0x14444d","_0x3afafb","_0x407694","_0x189e57","_0x1442c3","_0x2213b1","_0x19d574","_0x62ec63","validateEvidencesCache","validateEvidences","_0x259c7c","_0x55e7f9","_0x378754","_0x130e2e","_0x4f695d","_0x50932b","_0x1846f5","_0x1190a7","_0x341952","_0x5dcf1f","_0x2fa417","_0x51028c","_0x4e5bb2","_0x39464d","validatePackage","_0x46c3e2","_0x573e89","_0x5e6f70","_0x34a5fb","_0x2e8f88","_0x151852","_0x15f616","KendoLicensing","_0x2bf27a","_0xa81798","_0x1d8662","_0x239787","_0x17e88c","_0xecb034","_0x4aefcb","_0x987e30","_0x1ce124","_0x40960c","_0x4cb652","_0x2050b3","_0xedbfdf","_0x394fb7","_0x4e4a40","_0xc5f8de","_0x20d9bf","daysSinceToday","_0x1ee1d4","_0x32cb16","_0x271286","_0x1edba6","_0x2b1b27","_0x4c1cc4","_0x5ef509","_0x64532a","_0x51c717","_0xdf90ce","_0x27a146","_0x28bea4","_0x435200","_0x1bc90e","_0xebc000","_0x5d66f4","_0x4fe018","_0x4ec368","_0x2bfbf5","_0x3ad8f4","_0x359c8a","_0x2bf47e","_0x5ab9b0","_0x350274","_0x43255b","_0x3b2e16","_0x2abcbd","_0x135a58","_0x2f5bd4","_0x10f7da","_0x3d12d9","_0x50aff3","_0x21d313","_0xa46d78","_0x40e5b4","_0x5cdd4a","_0xcc5331","_0x2ae5db","_0x5cfa1f","_0x56fa68","_0x5ea82e","_0x53cc20","_0x41cb8b","_0x1d71a0","_0x31d51a","_0x5ab4c3","_0x432064","_0x3caf0d","_0x5838f2","_0x5b7a47","_0x2884e3","_0x17310a","_0x3a588b","_0x5a6256","_0x42aea4","_0x59fc92","_0x243781","_0x17aaac","_0xa638ad","_0x50bfc2","_0x14dc9e","_0x394c34","_0x4d5e1a","_0x4ad696","_0x4a1472","_0x4099c5","_0xa5984c","_0x17afe4","_0x300394","_0x191b5c","_0x2c88f3","_0x19e56a","_0x427669","_0x45e4e1","_0x3bfc7c","_0x242f63","_0x544c82","_0x2be709","_0x566a92","_0x2df0e3","_0xebc692","_0x13f41d","_0x3ba99b","onMessage","_0x4c7470","_0x2613c6","_0xe61a4","_0x11b633","_0x47be01","_0x541119","_0x3515bc","_0x533279","_0x4b9398","_0x131c27","_0x62251b","_0x514ed8","packageMetadata","licensing","productName","productCodes","publishDate","licensingDocsUrl","Animation","componentChildStyle","stackChildren","componentChildClassName","Reveal","maxHeight","maxWidth","componentWillEnter","onBeforeEnter","updateContainerDimensions","componentIsEntering","componentWillExit","newHeight","newWidth","GridColumnMenuItemContent","_number","_cldrVersion","language","territory","numbers","percentSign","plusSign","minusSign","exponential","superscriptingExponent","perMille","nan","timeSeparator","patterns","groupSize","scientific","percent","currency","currencies","BGN","EUR","USD","localeCurrency","accounting","gmtFormat","gmtZeroFormat","dateTimeFormats","long","medium","short","availableFormats","Bhm","Bhms","EBhm","EBhms","Ed","Ehm","EHm","Ehms","EHms","Gy","GyMMM","GyMMMd","GyMMMEd","Hm","hms","Hms","hmsv","Hmsv","hmv","Hmv","MEd","MMM","MMMd","MMMEd","MMMMd","yM","yMd","yMEd","yMMM","yMMMd","yMMMEd","yMMMM","yQQQ","yQQQQ","timeFormats","dateFormats","abbreviated","wide","dayPeriods","midnight","noon","pm","morning1","afternoon1","evening1","night1","dateFields","dayperiod","supplemental","likelySubtags","currencyData","region","US","_from","weekData","firstDay","weekendStart","weekendEnd","formatRegExp","IntlError","flattenValues","flatten","formattedMessage","errors","cldr","defaultData","getLocaleInfo","localeInfo","suffixes","fullName","localeFullName","availableLocaleInfo","NoLocale","localeTerritory","likelyName","part","territoryFromName","DECIMAL","CURRENCY","ACCOUNTING","PERCENT","SCIENTIFIC","CURRENCY_PLACEHOLDER","NUMBER_PLACEHOLDER","POINT","EMPTY","DEFAULT_LOCALE","dateFormatNames","nameType","standAlone","lower","formatType","lowerNameType","formatNames","lowerArray","lowerObject","cloneLower","parseRangeDate","NoCurrency","NoCurrencyDisplay","NoSupplementalCurrency","NoCurrencyRegion","NoValidCurrency","SYMBOL","GLOBAL_CURRENCIES","getCurrencyInfo","throwIfNoValid","currencyDisplayInfo","lengthComparer","territoryCurrencyCode","regionCurrencies","currencyCode","latestValidUntil","latestValidUntilRange","latestStillValid","latestStillValidDate","_tender","_to","validFrom","validTo","stillValidDate","regionCurrency","DAYS_OF_WEEK","NoWeekData","NoFirstDay","isNegativeZero","formatCurrencySymbol","currencyDisplay","currencyInfo","groupInteger","decimalIndex","groupSizes","integerEnd","integer","integerLength","newGroupSize","isCurrencyStyle","pad","digits","padString","decimals","trailingZeroRegex","fractionOptions","currencyFractions","isCurrency","fractions","_digits","currencyFractionOptions","standardNumberFormat","toExponential","negative","negativeZero","fraction","currencyUnitPattern","applyPattern","literalRegExp","PLACEHOLDER","setStyleOptions","formatOptions","setFormatLiterals","literals","quoteChar","literal","SHARP","trailingZerosRegExp","trailingPointRegExp","commaRegExp","roundNumber","zeroIndex","sharpIndex","hasZero","hasSharp","trailingZeros","lastZero","trimRegex","trimTrailingZeros","setValueSpecificFormat","hasNegativeFormat","zeroFormat","isConstantFormat","constant","placeholderIndex","index1","index2","applyCustomFormat","lastZeroIndex","hasGroup","replacement","replacePlaceHolders","replaceLiterals","replaceStyleSymbols","customNumberFormat","setGroupOptions","setPlaceholderIndices","standardFormatRegExp","formatAndPrecision","standardFormatOptions","formatNumber","exponentRegExp","nonBreakingSpaceRegExp","cleanNegativePattern","cleanCurrencyNumber","displays","currencyDisplays","cleanNumber","parseNumber","isPercent","cleanLiterals","negativeCurrency","currencyNumber","negativeSignIndex","isNegative","formatString","LENGHT_DELTA","PENALTIES","VALUE_FORMAT_LENGTH","numeric","TIME_SPECIFIERS_REGEX","DATE_OPTIONS_MAP","specifier","getSpecifier","hour12","STAND_ALONE_SPECIFIERS","specifiersRegex","resolvedFormats","getSpecifierRegex","skeletonSpecifiers","skeleton","character","findBestMatch","specifiers","bestMatches","specifiersLength","maxScore","MAX_VALUE","currentFormat","delta","idx$1","bestMatch","matchSpecifier","skeletonFormat","timeStartIndex","dateSkeleton","timeSkeleton","cacheFormat","datePattern","option","spcifier","skeletonFromOptions","dateNameType","formatLength","ZONE","QUARTER","DATE_FIELD_MAP","dateFormatRegExp","formatMonth","formatQuarter","formatTimeZone","shortHours","optionalMinutes","localizedName","zZeroOffset","hoursMinutes","formatDayOfWeek","firstDayIndex","formatDayOfWeekIndex","formatters","convertTimeZone","fromOffset","toOffset","fromLocalOffset","offsetDate","toLocalOffset","timeZoneOffsetRegExp","offsetRegExp","numberRegExp","numberRegex","leadingSpacesRegex","trailingSpacesRegex","standardDateFormats","FORMATS_SEQUENCE","outOfRange","lookAhead","getNumber","valueIdx","getIndexByName","nameLength","subValue","matchLength","matchIdx","checkLiteral","parseTimeZoneOffset","noSeparator","zLiteral","NoGMTInfo","calendarGmtFormats","hoursMatch","minutesMatch","hoursOffset","minutesOffset","parseMonth","parseDayOfWeek","dayOfWeek","parsers","addFormatSpaces","parseExact","pmHour","hasTime","adjustDST","parseMicrosoftDateFormat","tzoffset","parseMicrosoftDateOffset","parseDate","parseFormats","defaultFormats","currentYear","periodFormats","shortFormat","NAME_TYPES","minLength","LITERAL","addLiteral","lastPart","isHour12","placeholderFormat","IntlService","coreIntl","dateFieldName","NoDateFieldNames","fieldNameInfo","splitDateFormat","patternLength","numberSymbols","messages","LocalizationService","toLanguageString","GlobalizationContext","intl","localization","provideIntlService","provideLocalizationService","registerForIntl","registerForLocalization","noRecords","groupPanelEmpty","filterClearButton","filterSubmitButton","filterTitle","filterChooseOperator","sortAriaLabel","filterAriaLabel","pagerMessagesMap","pagerMessageKey","messageKey","_match","defaultMessage","filterLogicList","operators","IsUnaryFilter","operatorMap","iterable","service","booleanFilterValues","defaultHideSecondFilter","cellInputChange","defaultOperator","getDefaultOperator","filterType","syntheticEvent","filterOperators","getFilterType","cellBoolDropdownChange","cellOperatorChange","currentValue","opened","getTabIndex","useDefaultTabIndexWhenDisabled","parsedTabIndex","Keys","usePropsContext","contextPropsCallback","createPropsContext","withPropsContext","contextProps","labelsOptional","FloatingLabel","focused","handleFocus","handleBlur","editorId","editorValue","editorPlaceholder","editorValid","editorDisabled","localizationService","localizedOptional","optionalElement","spanClassNames","labelClassNames","onFocus","onBlur","htmlFor","clearSlide","firefox","ZIndexContext","anchorRect","anchorAlign","elementRect","elementAlign","anchorHorizontal","horizontal","anchorVertical","vertical","elementHorizontal","elementVertical","horizontalMargin","verticalMargin","point","fit","viewPortSize","anchorSize","anchorAlignPoint","elementAlignPoint","marginToAdd","alignPoint","isBeforeAnchor","collisions","viewPort","elementTop","elementLeft","elementHeight","elementWidth","viewPortHeight","viewPortWidth","isVerticalFit","collision","isHorizontalFit","isVerticalFlip","isHorizontalFlip","flippedVertical","flippedHorizontal","fittedVertical","fittedHorizontal","flipped","fitted","hasRelativeStackingContext","memoize","elementSource","currentDocument","isDifferent","eitherRect","scaleRect","removeStackingOffset","stackingOffset","cachedWidth","scrollbarWidth","windowViewport","wnd","getDocument","innerHeight","innerWidth","scrollPosition","docElement","rectOfHiddenElement","offsetParentElement","elementScrollPosition","parentScrollPosition","elementStyles","offsetRect","parentElement","useRelative","parentOffset","parentStyles","borderTopWidth","borderLeftWidth","firstElementChild","nextElementSibling","STYLES","OVERFLOW_REGEXP","overflowStyle","overflowElementStyle","overflowComputedStyle","getRelativeContextElement","zoomLevel","domUtils","addOffset","addition","addScroll","boundingOffset","getFontStyles","font","hasOffsetParent","offsetBase","offsetAtPoint","currentLocation","currentOffset","popupElement","ref$1","offsetParentScrollPosition","positionScale","positionWithScroll","removeScroll","restrictToView","scrollableParents","parentElements","stackingElementOffset","relativeContextElement","stackingElementScroll","stackingElementViewPort","useRelativePosition","windowViewPort","isZoomed","siblingElements","parents","containerElement","siblings","siblingContainer","zIndexStyle","positionMode","currentScale","scrollPos","stackScale","stackScroll","stackOffset","absoluteRect","relativeRect","elementOffset","FRAME_DURATION","isEquivalent","aProps","bProps","Status","DEFAULT_OFFSET","ANIMATION_CONTAINER_SHOWN","PopupWithoutContext","hidden","previous","setPosition","animate","onOpened","shown","popupAlign","alignedOffset","alignElement","positionElement","_collisions","onPosition","event_1","attachRepositionHandlers","onOpen","animationDirection","down","up","slideClass","slideActiveClass","deafultView","slide","animationDuration","onClosing","detachRepositionHandlers","onClosed","hiding","getCurrentZIndex","reposition","wait","later","leading","remaining","trailing","throttle","appendTo","popupClass","contentKey","showing","closing","currentZIndex","openDuration","closeDuration","_scrollableParents","CollisionEnum","AlignPoint","PopupPropsContext","Popup","popupProps","ListContainer","itemsCount","popupSettings","ListFilter","matchText","word","itemIndexStartsWith","itemText","getItemValue","data_1","areSame","item1","item2","getFocusedItem","textField","selectedIndex","matchCase","casing","getItemIndexByText","preventDefaultNonInputs","ListDefaultItem","defaultItem","onMouseDown","ListItem","dataItem","renderer","nodata","List","renderItems","valueField","groupField","optionsGuid","focusedIndex","_c","highlightSelected","itemRender","realIndex","renderNoValueElement","noDataRender","noDataElement","wrapperCssClass","wrapperStyle","listStyle","listRef","wrapperRef","listClassName","onScroll","unselectable","VirtualScroll","containerHeight","pageSize","itemHeight","prevScrollPos","listTranslate","scrollSyncing","scrollerRef","vs","calcScrollElementHeight","heightChanged","scrollElement","scrollHandler","changePage","newSkip","PageChange","translateTo","dY","scrollToEnd","localScrollUp","targetTranslate","additionalOnTop","validateTranslate","localScrollDown","itemsLenght","scrollNonStrict","floatItemIndex","itemIndex","translate","Navigation","step","guid","DropDownBase","navigation","handleItemClick","initState","handleItemSelect","togglePopup","applyState","filterChanged","filterable","calculatePopupWidth","pageChange","page","triggerOnPageChange","scrollToVirtualItem","virtual","selectedItemIndex","scrollToItem","renderScrollWrapper","getPopupSettings","renderScrollElement","listBoxId","didMount","popupWidth","shouldUpdate","calculateDir","dirCalculated","wrapper","vsEnabled","virtualScroll","scrollElem","viewportHeight","itemOffsetTop","eventArgs","triggerPageChangeCornerItems","dataItemKey","basicPropTypes","accessKey","loading","listNoDataRender","focusedItemIndex","onFilterChange","onPageChange","validityStyles","DropDownListWithoutContext","searchState","_skipFocusEvent","_filterInput","_navigated","newSelected","triggerOnChange","renderDropDownWrapper","iconClassName","valueRender","valueDefaultRendering","valueElement","handleKeyDown","onKeyPress","handleKeyPress","handleWrapperClick","ariaLabelledBy","ariaDescribedBy","dummySelect","_select","border","valueMap","renderListContainer","listContainerProps","onPopupOpened","onPopupClosed","renderListFilter","renderDefaultItem","renderList","float","filterText","handleListFilterChange","handleDefaultItemClick","_typingTimeout","selectNext","mappedData","isInLoop","sameCharsOnly","dataLength","startIndex","splitIndex","shuffleData","loopMatch","nextMatch","_valueDuringOnChange","leftRightKeysNavigation","homeOrEndKeys","upOrDownKeys","shouldOpen","shouldClose","shouldNavigate","onNavigate","focusElement","setValidity","setCustomValidity","validity","valid","validationMessage","customError","valueMissing","prevTotal","prevOpened","opening","selectedItem_1","prevSelectedItem","selectedItemChanged","dropdownlist","dropdown","newIndex","hasSelected","DropDownList","useInternationalization","useLocalization","eventHandler","dispatchedEvent","eventBaseData","numericIncreaseValue","numericDecreaseValue","checkboxValidation","checkboxOptionalText","DEFAULT_NUMBER","DIGITS_REGEX","getStateOrPropsValue","formatValue","intlService","fractionLength","maxFractionLength","value1","value2","toFixedPrecision","maxPrecision","limitPrecision","increaseValue","newState","increasedValue","rangeValue","eventValue","currentLooseValue","getLastNumberIndex","decreaseValue","decreasedValue","rangeSelection","nextLooseValue","formatInfo","maxPosition","nextValue","formatSuffixIndex","currSuffix","getMaxCursorPosition","minPosition","formatPrefixIndex","currPrefix","getMinCursorPosition","setSelection","setInvalid","prevLooseValue","valueIsCorrected","getInitialPosition","decimalIdex","reverseString","inputRegex","getPrefix","getSuffix","reversedString","getFirstNumberIndex","getDecimalCount","currentDecimalPlace","changeBasedSelection","selectionPosition","isDelete","sanitizeRegex","isCurrentLeadingZero","isNextLeadingZero","numberCounter","newSelection","sanitizeNumber","restrictedSymbols","positiveResult","negativeResult","zeroResult","oneResult","getFormatSymbols","currentLooseValueAsString","prevLooseValueAsString","sanitizeGroupRegex","allSymbolsRegex","sanitizedString","numberStart","numberEnd","sanitizedFormattedString","formattedMax","maxDecimalIndex","maxDecimalCount","formattedMin","minDecimalIndex","minDecimalCount","positivePrefix","negativePrefix","zeroPrefix","onePrefix","positiveInfo","negativeInfo","zeroInfo","oneInfo","getFormatPrefixSufix","isFormatContainPrefixSuffix","nestedInfo","isPercentFormat","isPaste","newText","oldText","isMinusSymbolAdded","currentNumberStart","oldNumberStart","isMinusSymbolRemoved","valueCandidate","currentLastNumberIndex","isDecimalDuplicated","formatInfoIndex","prefixIndex","suffixIndex","prefixFound","suffixFound","prefixGap","suffixGap","isSpecialSymbolDeleted","currentDecimalCount","endsOnDecimal","valueUntillDecimal","looseDecimalPlace","NumericTextBoxPropsContext","NumericTextBox","directProps","calculatedId","inputId","elementRef","elementWrapperRef","valueDuringChangeRef","setForceUpdate","stateRef","decimalSelect","valueIsOutOfRange","isPasteRef","prevLooseValueRef","stateValueRef","looseValue","validityGetter","valueGetter","nameGetter","requiredGetter","validityStylesGetter","propsGetter","getImperativeHandle","getCurrentState","triggerChange","rangedValue","wrapper_1","_x","onChangeHandler","stateCandidate","rangeOnEnter","onPasteHandler","onIncrease","readOnly","onDecrease","onWheelHandler","numerictextbox","placeholder","spellCheck","autoComplete","autoCorrect","inputType","onPaste","onWheel","spinners","cloneDate","newDate","AsyncFocusBlur","onSyncFocus","onSyncBlur","tick","nextTick","useAsyncFocusBlur","isEqual","candidate","expected","lastDayOfMonth","addMonths","expectedMonth","normalize","Mask","dateSymbolMap","wrapperClasses","KendoDate","intlProvider","formatPlaceholder","leadingZero","typedMonthPart","knownParts","_value","monthNames","allFormatedMonths","modifyExisting","hasValue","getExisting","getDateObject","getTextAndFormat","dateFormatString","sampleFormat","setExisting","modifyPart","newValue","parsePart","currentChar","resetLeadingZero","baseDate","dateParts","baseFormat","replaced","parsedDate","matchMonth","middle","middleNumber","monthNumber","isAbbrMonth","partMap","symbolMap","hasLeadingZero","partPattern","typedChar","monthAsNum","dateFormatParts","partLength","mask","resultText","resultFormat","currentSymbol","EMPTY_SELECTIONRANGE","getters","viewInRange","MIDNIGHT_DATE","MIN_DATE","MAX_DATE","getToday","isInRange","isInSelectionRange","intersects","shiftWeekNames","dateInRange","domContainerFactory","today","toggleCalendar","defaultGetters","normalizeTimes","snappersFactory","candidateValue","MIN_TIME","MAX_TIME","DateInputWithoutContext","kendoDate","paste","_wrapper","_inputId","updateOnPaste","oldValue","spinnersMouseDown","preventScroll","handlePaste","elementChange","dateBeforeChange","oldTextOrigin","oldFormat","newTextOrigin","oldTextSeparator","deletedSymbol","approximateStringMatching","selection","navigationOnly","selectionBySymbol","switchDateSegment","elementClick","selectionByIndex","nativeWheel","wheel","increasePart","decreasePart","modifyDateSegmentValue","elementKeyDown","elementOnFocus","elementOnBlur","_lastSelectedSymbol","currentText","ariaProps","wrapperClassesInstance","dateinput","ariaExpanded","ariaHasPopup","onInput","valueDuringOnChange","DateInput","inRange","isInTimeRange","minTime","maxTime","rangeOverflow","rangeUnderflow","setSelectionRange","previousFormatSymbol","currentStepSymbol","steps","timeZoneName","ScrollDirection","isEqualDate","RowHeightService","rowHeight","detailRowHeight","heights","rowIndex","expandDetail","updateRowHeight","collapseDetail","totalHeight","ScrollAction","PageAction","ScrollerService","onScrollAction","onPageAction","firstLoaded","bottomOffset","topOffset","rowHeightService","lastLoaded","lastScrollTop","offsetBufferRows","rowsForHeight","skipWithOffset","rowOffset","offsetSize","firstItemIndex","lastItemIndex","nonVisibleBuffer","Day","Direction","scrollModifiers","Forward","Backward","scrollNormalizers","scrollValidators","Virtualization","animationInProgress","scrollTo","scrollProperty","scrollContainer","scrollToIndex","scrollToIndexTimeout","animateToIndex","cancelAnimation","indexOffset","getContainerScrollDirection","scrollRange","scrollStep","modifyScroll","normalizeScroll","isScrollValid","progress","scrollToBottom","scrollDuration","containerScroll","containerScrollPosition","staticOffset","maxScrollDifference","maxScroll","containerMaxScroll","difference","containerScrollSize","containerOffsetSize","initServices","itemWidth","scrollerService","scrollOffsetSize","getContainerProperty","handleScroll","scrollAction","pageAction","handleScrollAction","handlePageAction","activeIndex","itemOffset","isIndexVisible","containerTop","containerBottom","isListScrolled","onMount","lastTotal","lastDirection","lastTake","vertexLength","placeholderStyle","rootClassNames","scrollableClassNames","forceScroll","CalendarViewEnum","weekDay","newDay","moveDateToWeekStart","weekStartDay","Monday","prevDayOfWeek","calcWeekInYear","firstWeekInYear","diffInMS","CalendarCell","handleMouseEnter","onMouseEnter","handleMouseLeave","onMouseLeave","newProps","xProps","yProps","compareProps","isWeekend","isFocused","isSelected","isRangeStart","isRangeMid","isRangeEnd","isRangeSplitStart","isRangeSplitEnd","isToday","isEndActive","activeRangeEnd","isStartActive","rootClassName","CalendarWeekCell","firstDate","WeekNamesService","getWeekNames","includeWeekNumber","weekNames","emptyCell","View","buildWeekNumber","row","weekCellValue","getWeekNumber","cellProps","weekCell","buildRow","cell","aria","activeView","firstWeekDateContext","rowCtx","weekNumber","ctx","onCellEnter","onCellLeave","showWeekNumbers","selectedDate","weekService","colSpan","rowLength","viewDate","cellUID","focusedDate","isActiveView","bus","canMoveDown","isMonthView","isHorizontal","prevWeekDate","nextWeekDate","weekInYear","toggleIfApplicable","togglable","_selectedTemp","look","primary","icon","imageUrl","imageAlt","htmlAttributes","hasIcon","hasChildren","buttonProps","iconEl","alt","iconClasses","iconElement","CalendarHeaderTitle","rangeLength","nextDate","addToDate","handleTitleClick","canMoveUp","moveUp","titleClassNames","headerTitleProps","headerTitle","commands","TodayCommand","todayIsInRange","isTodayClick","todayMessage","todayClassNames","ViewList","shouldScroll","focusActiveDate","focusedCell","nextActiveCell","blurActiveDate","handleVirtualizationMount","virtualization","table","viewOffset","indexToScroll","buildMonthView","buildDates","calendarView","handleDateChange","calculateHeights","dom","scrollableHeight","scrollableContentHeight","scrollableYearContentHeight","viewHeight","headerHeight","getTake","handleTodayClick","lastView","lastFocus","smoothScroll","_prevProps","_prevState","didViewChange","activeDate","didViewChanged","decade","century","datesList","viewListBody","didCalculate","Action","CalendarNavigationItem","buildNavigationItem","navigationTitle","navigationItemProps","navigationItem","calendarHeight","navigationItemHeight","maxViewHeight","monthViewHeight","navigationBody","DOMService","ensureHeights","containerFactory","ul","tr","tbody","thead","monthHeader","scrollable","navigationList","navElement","viewFactory","renderWeekHeader","viewElement","cells","rows","contentElement","getScrollable","scrollableElement","monthView","yearView","decadeView","paddingLeft","paddingRight","getBody","hostContainer","batch","calendarWidth","monthViewWidth","scrollableContentWidth","yearViewHeight","yearViewWidth","decadeViewHeight","centuryViewHeight","decadeViewWidth","centuryViewWidth","viewType","viewDimension","viewWidth","viewProp","appendedContent","setYear","addYears","addDecades","addCenturies","normalizeYear","firstDecadeOfCentury","lastDecadeOfCentury","firstYearOfDecade","durationInCenturies","EMPTY_DATA","ACTIONS","PrevView","NextView","FirstInView","LastInView","CenturyViewService","lastDate","cellOffset","cellDate","isSelectedFromArray","cellTitle","isInArray","aboveMin","belowMax","isInSameView","move","lastYearOfDecade","durationInDecades","DecadeViewService","addWeeks","firstDayOfMonth","durationInMonths","MonthViewService","firstMonthDate","lastMonthDate","abbrMonthNames","wideMonthNames","prependCell","firstMonthOfYear","lastMonthOfYear","durationInYears","YearViewService","_intl","services","BusViewService","onViewChanged","configure","moveDown","moveToBottom","KEY_TO_ACTION","UpperView","LowerView","NavigationService","ScrollSyncService","monthScrolled","navScrolled","magnitude","divideByMagnitude","powerByMagnitude","sync","scrollSiblingOf","scrolledElement","siblingComponent","calculateScroll","virtualizationProp","calculateValue","CalendarWithoutContext","didNavigationChange","scrollSyncService","calendarViewList","handleNavigationChange","handleViewChange","canNavigateDown","handleMouseDown","defaultActiveView","bottomView","topView","didValueChange","sanitizedValue","calendarBody","Calendar","ToggleButton","onMouseUp","PickerWrap","PickerFloatingLabel","floatingLabelProps","dateInput","setShow","usePickerFloatingLabel","DatePickerWithoutContext","_popupId","_dateInput","shouldFocusDateInput","setCalendarRef","handleInputValueChange","handleValueChange","handleCalendarValueChange","mergeTime","showDuringOnChange","handleIconClick","handleIconMouseDown","toggleButton","pickerWrap","prevShow","nextTickId","otherPopupSettings","wrapperClassNames","popupClassNames","dateInputProps","calendarProps","datepicker","pickerWrapComp","dateInputComp","toggleButtonComp","popupComp","calendarComp","DatePicker","GridColumnMenuFilterCell","renderOperatorEditor","operatorChange","inputChange","boolDropdownChange","filterComponent","booleanValues","GridColumnMenuFilterUI","firstFilterProps","hideSecondFilter","secondFilterProps","logicData","logicValue","onLogicChange","rootFilterOrDefault","rootFilter","filterGroupByField","GridColumnMenuFilter","filterGroup","removeGroup","groupIndex","insertGroup","isControlled","onFilterExpand","onExpandChange","firstFilterChange","filterChange","secondFilterChange","filterIndex","logicChange","column","rootFilters","onCloseMenu","currentFilterGroup","submit","updatedFilter","filterUI","currentHideSecondFilter","currentOperators","firstFilterCellProps","secondFilterCellProps","filterLogic","logicProps","FilterUI","filterUIProps","isFilterValid","expandState","onSubmit","onReset","BrowserSupportService","scrollbar","getScrollbarWidth","setScrollbarWidth","fieldList","KEYBOARD_NAV_DATA_LEVEL","KEYBOARD_NAV_DATA_SCOPE","KEYBOARD_NAV_DATA_HEADER","KEYBOARD_NAV_DATA_BODY","KEYBOARD_NAV_DATA_ID","FOCUSABLE_ELEMENTS_BASE","FOCUSABLE_ELEMENTS","TABBABLE_ELEMENTS","tableKeyboardNavigationScopeAttributes","tableKeyboardNavigationHeaderAttributes","tableKeyboardNavigationBodyAttributes","getNavigatableId","dataId","isNavigatable","getHeaderElement","getBodyElement","findNextIdByRowIndex","initialRowIndex","cellIndex","elementId","matrix","isReverse","currentRowIndex","currentId","findNextIdByCellIndex","initialCellIndex","currentCellIndex","findId","navigationMatrix","cellId","tableKeyboardNavigationTools","navigationId","idPrefix","closest","activeId","focusable","selectors","elementForFocus","contextStateRef","prevElement","navigationStateRef","columnId","generateMatrix","headerRows","bodyRows","rowSpan","cellSpan","depth","maxDepth","freeSlotIndex","lastHeaderIndex","tableKeyboardNavigation","navigatable","activeElementIsFocused","prevNavigationIndexes","firstId","firstIdElement","navigationTools","focusedElement","onNavigationAction","dataLevel","navigatableElement","currentIdIndexes","idForFocus","currentIndexes","TABLE_ROW_INDEX_ATTRIBUTE","TABLE_COL_INDEX_ATTRIBUTE","closestTagName","getRowIndex","getColumnIndex","colIndex","HAS_RELATIVE_STACKING_CONTEXT","getSelectionOptions","selectable","drag","nextColumn","currentDepth","getColumnWidth","currentSum","isRtl","getIndex","originalEvent","elementFromPoint","PagerNumericButtons","handlePageChange","handleSelectPageChange","prevDots","renderDots","postDots","totalPages","prevOptionDots","renderOptionDots","postOptionDots","numerics","currentPage","buttonCount","reminder","pagerInfo","pagerFirstPage","pagerPreviousPage","pagerNextPage","pagerLastPage","pagerItemPerPage","pagerPage","pagerOf","pagerTotalPages","PagerInput","_text","pageMessage","messagesMap","ofMessage","totalPagesMessage","PagerPageSizes","pageSizeChange","sizes","pageSizes","itemPerPageMessage","Pager","onWindowResize","responsive","changer","firstPageMessage","previousPageMessage","nextPageMessage","lastPageMessage","infoMessage","previousNext","renderButton","pagerPageSizes","TableKeyboardNavigationContext","DRAG_AND_DROP_DISPATCH_ACTION","intersect","candidates","ration","targetRect","targetArea","entryArea","intersectionArea","getRatio","detectBrowser","browser","browserRxs","edge","webkit","safari","opera","mozilla","agent","DOCUMENT_NODE","scrollableRoot","support","isScrollable","getScrollableParent","root","Node","DOCUMENT_FRAGMENT_NODE","dispatchDragAndDrop","callbacks","onIsPressedChange","onIsScrollingChange","onVelocityChange","onOffsetChange","onPageOffsetChange","onClientOffsetChange","_g","onScrollOffsetChange","_h","onInitialScrollOffsetChange","autoScrollDirection","overrideScrollableParent","scrollableParent","isTouchEvent","scrollX","scrollOffset","scrollY","offsetX","offsetY","isScrollEvent","pageOffset","normalizeEvent","POINTER_DOWN","MOUSE_DOWN","ignoreMouse","TOUCH_START","START","scrollableParent_1","Window","onPress","SCROLL","initialScrollOffset","POINTER_MOVE","MOUSE_MOVE","TOUCH_MOVE","MOVE","autoScroll","document_1","scrollableParent_2","newVelocity","mouseX","mouseY","AUTO_SCROLL_AREA","autoScrollVelocity","scrollableViewPort","onDragStart","onDrag","dropElement_1","drops","isPointerInsideContainer","onDragLeave","onDragEnter","onDragOver","POINTER_UP","MOUSE_UP","TOUCH_END","END","onRelease","onDrop","onDragEnd","POINTER_CANCEL","CONTEXT_MENU","TOUCH_CANCEL","CANCEL","vel","yIsScrollable","xIsScrollable","yDelta","yInBounds","xDelta","xInBounds","useInheritedState","contextSetter","localValue","localSetter","DragContext","DropContext","DragsContext","DropsContext","Draggable","childRef","getElement","handlePress","handleRelease","handleDragStart","handleDrag","handleDragEnd","mouseOnly","_j","_k","setPressed","scrolling","setScrolling","_m","setDrag","_o","drags","registerDrag","deregisterDrag","scrollInterval","restoreMouseTimeout","initialClientOffset","supportPointerEvent","getHintElement","getScrollContainer","getAutoScrollContainer","boundaryElementRef","getState","isScrolling","handlePressedChange","handleScrollingChange","handleVelocityChange","handleOffsetChange","handleClientOffsetChange","handlePageOffsetChange","handleInitialClientOffsetChange","handleScrollOffsetChange","handleInitialScrollOffsetChange","dispatchDragEvent","onInitialClientOffsetChange","handlePointerDown","handlePointerMove","handlePointerCancel","handlePointerUp","handleMouseMove","handleMouseUp","handleContextMenu","handleTouchStart","handleTouchMove","handleTouchEnd","currentWindow","prerequisites","initialTouchAction_1","register","autoScrollElement","useDraggable","TableSelection","selectionEnabled","selectionDrag","selectionMode","selectionCell","draggableRef","overlayElementRef","dragStartRef","overlaySettings","setOverlaySettings","offsetParentRef","isDraggedRef","isPreventedRef","onPressHandler","onDragHandler","getOffset","onReleaseHandler","top_1","overlayElement","startElement","endElement","startTdElement","startTrElement","endTdElement","endTrElement","startColIndex","startRowIndex","endColIndex","endRowIndex","isDrag","tdElement","trElement","DropClue","visible","hiddenElementRef","hiddenElement","dropClue","DragClue","innerText","dragClue","GridColumn","editable","sortable","resizable","reorderable","groupable","allowUnsort","filterCell","editor","minResizableWidth","headerCell","footerCell","headerSelectionValue","headerClassName","orderIndex","columnMenu","locked","getNestedValue","flatData","dataIndex","groupDefined","maxLevel","rowType","readColumns","oldColumns","idInfo","columnProps","oldColumn","prevId","declarationIndex","isAccessible","ret_1","flat_1","pIndex","parentIndex","sanitizeColumns","kFirst","useTableKeyboardNavigation","navigationContext","GridSelectionCell","handleOnChange","selectionChange","selectedValue","navigationAttributes","defaultRendering","ariaColumnIndex","GridHierarchyCell","onKeyDownHandler","GRID_ROW_INDEX_ATTRIBUTE","GRID_COL_INDEX_ATTRIBUTE","GridEditCell","editCellClasses","columnIndex","headerWrap","syncScroll","_event","scrollableDataElement","rtl","columnResize","setIsRtl","setScrollLeft","setWidth","staticHeaders","draggable","borderWidth","colGroupHeader","headerRow","filterRow","ColumnResizer","isDragged","onDoubleClick","autofit","ColumnDraggable","pressHandler","dragHandler","releaseHandler","headerRef","containerRef","ariaRowIndex","GridColumnMenuWrapper","blurTimeout","blur","closeMenu","anchorClick","_content","ColumnMenu","others","_anchor","outline","GridHeaderCell","columnMenuWrapperProps","clickProps","HeaderThElement","ariaSort","ariaLabel","ariaSelected","sortSeqMap","true","false","ariaSortMap","HeaderRow","serviceIndex","cellKeyDown","cellClick","rowIndexes","sortDir","sortLabel","ariaAttrs","ariaDescription","onSortChange","sortChange","onGroupChange","groupChange","headerCellProps","selectionValue","cellRender","sortIcon","dblClickHandler","oldDescriptor","newDescriptor","columnsMap","GridFilterCell","FilterRow","headerCellClassName","setFilter","oldFilters","filterCells","currentActiveFilter","currentFilters","activeFilter","filterCellProps","GroupingIndicator","groupRemove","onRemove","GroupPanel","onGroupRemove","newGroups","onGroupSortChange","groupDesc","resolveTitle","refCallback","Footer","footerWrap","colGroupFooter","cached","topCacheCount","attendedSkip","propsSkip","scrollableVirtual","realSkip","heightContainer","fixedScroll","askedSkip","tableTranslate","allRows","tableBody","accumulate","syncTimeout","rowHeights","percentage","targetFloorScrollPosition","rowsCount","floatRowIndex","rowpercentage","microAdjust","rowIndexOffset","grid","ColumnResize","triggerResize","dragCue","stopImmediatePropagation","oldWidth","fixateInitialWidths","setWidths","onResize","columnIds","colGroupMain","leafsForAdjust","currentCol","leafs","indexesForAdjust","currentColumn","tables","colgroups","maxWidths","colgroup","updateColElements","affectedColumns","leafColumns","_loop_1","currentColumnFloatWidth","currentColumnFloorWidth","currentWidth","remainingCount","perCol","coef","indexInOriginal","toAdjust","more","colToAdjust","targetWidth","CommonDragLogic","columnReorder","groupReorder","columnToGroup","refDragElementClue","refDropElementClue","startColumn","startGroup","currentGroup","groupPanelDivElement","refGroupPanelDiv","getGroupIndex","invalidIndex","targetElement","updateDragElementClue","updateDropElementClue","prevColumnIndex","nextColumnIndex","prevGroupIndex","nextGroupIndex","dropElementClue","dragElementClue","this_1","state_1","GridCell","dataAsString","GridGroupCell","columnsCount","definedField","GridRow","isAltRow","isInEdit","isHidden","GridHeaderSelectionCell","GridNoRecords","FooterRow","renderCell","tdProps","hasParentFooterCell","GridDetailCell","ariaColIndex","GridDetailHierarchyCell","Grid","_columns","_columnsMap","wrapperScrollTop","tableElement","_footer","forceUpdateTimeout","_gridId","scrollIntoView","selectedRow","fitColumns","columnVirtualization","_header","dataItems","getLeafDataItems","componentId","selectedField","getArguments","rowClick","onRowClick","rowDblClick","onRowDoubleClick","itemChange","onItemChange","expandField","expandChange","onHeaderSelectionChange","selectionRelease","onSelectionChange","selectionEvent","raiseDataEvent","pagerPageChange","targetId","resetTableWidth","onColumnResize","targetColumnId","dragLogic","shuffledColumns","propsData","tableUserSelect","groupingFooter","resolvedGroupsCount","initColumns","toolbar","groupingPanel","headerCellRender","dragClueRef","filterCellRender","tableWidth","tableViewPortWidth","colSpans","hiddenColumns","widths","widthOfHiddenColumns","considerNext","totalWidth","hiddenSeqLength","updateIndex","hiddenCols","lastVisible","anyHidden","allHidden","tableColumnsVirtualization","isColHidden","hiddenRows","currentAriaRowIndex","absoluteDataIndex","rowIndexStart","dataIndex_1","detailRowCount_1","isAlt","absoluteIndex","rowId","detailRowId","rowDataIndex","currentColumnIsInEdit","editField","inEdit","dataRow","rowRender","detailColspan","pagerProps","normalizeSettings","pageable","pager","colGroups","enableDragClues","moreData","dataStateChange","onDataStateChange","dataState","getDataState","spliced","eventColumnProps","onColumnReorder","prevIndex","colElements","columnElements","groupCount","propData","itemForColumnsGen","rightBorder","autoGenerateColumns","defaultServiceProps","columnIndexOffset","colIndexByLevel","needKFirst","stickyLeftWidth","stickyRightWidth","mapColumns","scrollbarSize","recalc","scrollDiv","useWillUnmount","onUnmount","valueRef","useUpdatedRef","isWindow","isOverflowing","bodyIsOverflowing","BLACKLIST","exclude","isHidable","ariaHidden","hide","ModalManager","_ref$hideSiblingNodes","hideSiblingNodes","_ref$handleContainerO","handleContainerOverflow","modals","containers","getScrollbarSize","isContainerOverflowing","modal","containerIndexFromModal","overflowing","findIndexOf","setContainerStyle","containerState","removeContainerStyle","modalIdx","containerIdx","dialog","backdrop","hideSiblings","showSiblings","_data$modals","isTopModal","resolveContainerRef","useWaitForDOMRef","onResolved","resolvedRef","setRef","earlyRef","nextRef","useModalManager","provided","modalManager","setDialogRef","setBackdropRef","Modal","_ref$role","_ref$backdrop","_ref$keyboard","keyboard","onBackdropClick","onEscapeKeyDown","backdropTransition","_ref$autoFocus","_ref$enforceFocus","enforceFocus","_ref$restoreFocus","restoreFocus","restoreFocusOptions","renderDialog","_ref$renderBackdrop","renderBackdrop","providedManager","containerClassName","onShow","_ref$onHide","onHide","setExited","lastFocusRef","handleShow","removeKeydownListenerRef","handleDocumentKeyDown","removeFocusListenerRef","handleEnforceFocus","currentActiveElement","handleHide","_lastFocusRef$current","handleBackdropClick","dialogProps","backdropElement","BackdropTransition","_fadeStyles","Selector","BootstrapModalManager","_ModalManager","adjustAndStore","adjust","_css","actual","restore","_css2","fadeStyles","Fade","ModalDialog","contentClassName","centered","dialogClass","CloseButton","ModalHeader","closeLabel","closeButton","ModalContext","divWithClassName","dialogAs","DialogTransition","dialogClassName","Dialog","ariaLabelledby","ariaDescribedby","backdropClassName","propsManager","modalStyle","setStyle","_useState2","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","setModalRef","_modal","modalContext","getModalManager","updateDialogStyle","containerIsOverflowing","modalIsOverflowing","handleWindowResize","handleDialogMouseDown","handleStaticModalAnimation","handleStaticBackdropClick","backdropProps","baseModalStyle","BaseModal","isAppearing","Body","ModalBody","Title","ModalTitle","ModalFooter","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","tooltip","Feedback","_ref$type","_ref$tooltip","controlId","FormCheckInput","bsCustomPrefix","_ref$isValid","_ref$isInvalid","isInvalid","isStatic","_useContext","FormContext","custom","FormCheckLabel","FormCheck","_ref$inline","inline","_ref$disabled","_ref$feedbackTooltip","feedbackTooltip","feedback","_ref$title","propCustom","innerFormContext","hasLabel","Label","FormFileInput","FormFileLabel","FormFile","dataBrowse","_ref$inputAs","inputAs","FormControl","_classes","htmlSize","plaintext","_classes2","_classes3","_classes4","_classes5","FormGroup","FormLabel","srOnly","columnClass","FormText","muted","Switch","FormRow","FormImpl","validated","Group","Check","File","FormMode","AnnouncementManage","_formValue$id","_formValue$descriptio","_Moment$format","_Moment$format2","mountedRef","gridApi","setGridApi","gridColumnApi","setGridColumnApi","rowData","setRowData","formMode","setFormMode","None","formValue","setFormValue","effectiveDate","handleChange","onFormAction","messageId","actionType","setErrors","descriptionError","effectiveDateError","expirationDateError","New","resetMessage","Edit","messageService","Delete","onSave","getAnnouncementData","ColumnMenuFilter","_jsx","_jsxs","Form","_props$dataItem","_props$dataItem2","AnnouncementDisplay","announcementData","setAnnouncementData","announcementService","_Fragment","ARC","BLACK","BOTTOM","CENTER","CIRCLE","CROSS","DEFAULT_FONT","DEFAULT_PRECISION","FORMAT_REGEX","HEIGHT","INSIDE","INHERIT","LEFT","MIN_VALUE","OBJECT","OUTSIDE","RIGHT","ROUNDED_RECT","STRING","TOP","VALUE","WHITE","WIDTH","classArray","SPACE_REGEX","UNDEFINED","defined","alignPathToPixel","stroke","drawing","segments","clockwise","angle1","angle2","convertableToNumber","deepExtendOne","destination","propType","propInit","destProp","deepExtend","arguments$1","styleValue","SIZE_STYLES_REGEX","isSizeField","stylesArray","field$1","getSpacing","defaultSpacing","spacing","TemplateService","userImplementation","getTemplate","grep","hasClasses","HashMap","power","interpolateValue","TRIGGER","InstanceObserver","observer","handlerMap","trigger","callObserver","fnName","requiresHandlers","matchUserAgent","mousewheelDelta","logToConsole","arabicToRoman","roman","createPromise","resolveFn","rejectFn","_state","defId","definitionId","DEG_TO_RAD","MAX_NUM","MIN_NUM","deg","radians","KEY_STR","encodeBase64","utfInput","encodeUTF8","chr1","chr2","chr3","enc1","enc2","enc3","enc4","eventCoordinates","eventElement","initialTouch","isTransparent","limitValue","mergeSort","cmp","promiseAll","rad","degrees","bindEvents","eventNames","box","getPixels","elementSize","size$1","unbindEvents","elementPadding","paddingTop","Matrix","Class","multiplyCopy","invert","det","rotate","cos","sin","IDENTITY","matrixRegexp","transformMatrix","matrixString","members","parseMatrix","elementScale","parentMatrix","LRUCache","_size","_length","put","entry","_head","_tail","newer","older","REPLACE_REGEX","SPACE","normalizeText","objectKey","hashKey","defaultMeasureBox","baselineMarkerSize","TextMetrics","_cache","measure","baseline","cacheKey","cachedResult","measureBox","baselineMarker","_baselineMarker","cloneNode","textStr","marker","verticalAlign","measureText","FontLoader","fetchFonts","fonts","loadFonts","preloadFonts","setDefaultOptions","KI_PREFFIX","KSVG_PREFFIX","HTMLBaseIcon","addClasses","outerHTML","themeColor","stylingOptions","HTMLFontIcon","currentIconClass","_className","HTMLSvgIcon","iconNameMatch","svgIcons","svgElement","viewBox","ICON_TYPES","renderIcon","iconOptions","sparseArrayLimits","geometry","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","matchNamedColor","colorNames","namedColors","regexp","BaseColor","toHSV","toRGB","toHex","toBytes","toCss","toCssRgba","rgb","toDisplay","parseColor","c1","c2","Bytes","RGB","HSV","toHSL","HSL","alpha","hue2rgb","alphaFromHex","Color","this$1","resolvedColor","resolveColor","formatRegex","processor","channels","normalizeByte","padDigit","brightness","percBrightness","isDark","fromBytes","fromRGB","fromHSV","fromHSL","DELETED","LegacySet","_index","_values","prototypeAccessors","SetWrapper","_set","prototypeAccessors$1","createHashSet","supported","supportsSet","defaultErrorHandler","INSERT","DELETE","BACKSPACE","TAB","ENTER","ESC","UP","DOWN","HOME","SPACEBAR","PAGEUP","PAGEDOWN","F10","F12","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_DOT","autoMajorUnit","relativeValue","Point","theta","cosT","sinT","cx","cy","distanceTo","onCircle","radius","HasObservers","observers","_observers","addObserver","removeObserver","methodName","_suspended","optionsChange","geometryChange","suspend","resume","_observerField","setAccessor","getAccessor","TBase","capitalized","defineAccessors","toMatrix","transformation","staticAccessors","originPoint","translateWith","scaleCopy","transformCopy","doRound","arg0","arg1","minX","minY","maxX","maxY","minPoint","maxPoint","withAccessors","Size","Rect","cornerRadius","setOrigin","setSize","setCornerRadius","getOrigin","getCornerRadius","getSize","topLeft","bottomRight","topRight","bottomLeft","bbox","tl","bl","fromPoints","expandCopy","containsPoint","_isOnPath","rectOuter","rectInner","union","rect1","rect2","Box","x1","y1","x2","y2","wrap","targetBox","wrapPoint","arrayPoint","snapTo","alignTo","targetCenter","shrink","dw","unpad","points","getHash","overlaps","r1","rotatePoint","r3","r4","toRect","geom","hasSize","alignment","sizeFunc","Ring","innerRadius","startAngle","setRadius","newRadius","radianAngle","ax","ay","adjacentBox","sector","midAndle","midPoint","hw","endAngle","vector","startPoint","startVector","endPoint","endVector","dist","getBBox","angles","allAngles","numericComparer","startAngleIndex","endAngleIndex","Sector","PRECISION","tolerance","closeOrLess","ellipseExtremeAngles","rx","ry","extremeX","extremeY","Transformation","_matrix","_optionsChange","calculateAngle","bboxStartAngle","Arc","setCenter","radiusX","radiusY","anticlockwise","xRotation","pointAt","radian","curvePoints","_arcInterval","intervalAngle","subIntervalsCount","subIntervalAngle","currentAngle","nextAngle","_intervalCurvePoints","cp1","cp2","extremeAngles","currentAngleX","currentAngleY","currentPoint","currentPointX","currentPointY","oldStart","p1Derivative","_derivativeAt","p2Derivative","angleRad","pointRadius","intersection","p0","s1x","s2x","s1y","s2y","nx","ny","lineIntersection","inAngleRange","largeArc","swipe","arcParameters","parameters","cosine","sine","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","uX","uY","vX","vY","acos","angleCosine","signEndAngle","normalizeArcParameters","ElementsArray","_splice","_change","_add","_remove","howMany","_clearObserver","_setObserver","GeometryElementsArray","OptionsStore","_wrap","composite","parentObj","_clear","wrapped","DASH_ARRAYS","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","SOLID","BUTT","PATTERN","_initOptions","clip","createTransform","parentTransform","currentTransform","combinedMatrix","elementMatrix","clippedBBox","_clippedBBox","transformedPoint","_hasFill","_containsPoint","_hasStroke","isOutOfEndPoint","controlPoint","calculateCurveAt","t1","toCubicPolynomial","ComplexNumber","real","cNumber","addConstant","multiplyConstant","nthRoot","nthR","isReal","numberSign","solveCubicEquation","squareRoot","solveQuadraticEquation","y3","z1","z2","b3a","hasRootsInRange","rootField","polynomial","roots","lineIntersectionsCount","pointAccessor","definePointAccessors","arrayLimits","Segment","controlIn","controlOut","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","yLimits","extremes","_curveExtremes","x3","x4","t2","_intersectionsTo","rayIntersection","curveIntersectionsCount","_isOnCurveTo","endSegment","rotatedPoints","_isOnLineTo","_isOnPathTo","withPoints","pointsToCurve","pointsIn","removeDuplicates","initialControlPoint","lastControlPoint","tangent","getTangent","firstControlPoint","secondControlPoint","controlPoints","getControlPoints","cp0","controlPoints$1","controlPoints$2","tangent$2","lineFunction","xField","yField","restrict","switchOrientation","calculateFunction","isLine","monotonic","isMonotonicByField","invertAxis","secondCP","oldXField","firstCP","restrictControlPoint","cp","xValue","yValue","anonymous","newFill","IDENTITY_MATRIX_HASH","matrixHash","_bboxCache","_matrixHash","_bbox","toLineParamaters","insertPosition","reflectionPoint","third","quadraticToCubicControlPoints","scaledPoint","isRelative","lineTo","curveTo","arcTo","lastControlIn","previousCommand","cubicControlPoints","SEGMENT_REGEX","SPLIT_REGEX","pathInstance","closePath","command","parseParameters","moveTo","ShapeMap","elementsBoundingBox","applyTransform","boundingBox","elementBoundingBox","rawBBox","elementsClippedBoundingBox","Path","lineJoin","lastSegment","arc","_addArcSegments","segmentStart","segmentEnd","currentType","print","intersectionsCount","pathWidth","segmentBox","MultiPath","fromRect","curveFromPoints","fromArc","paintable","measurable","parsePath","ShapeBuilder","createRing","draw","innerEnd","PI_DIV_2","Circle","_pointAt","pointDistance","geometryAccessor","defineGeometryAccessors","GeometryCircle","_geometry","withGeometry","childrenField","traverse","childrenChange","_reparent","insert","insertAt","removeAt","newParent","traversable","swing","linear","easeOutElastic","asin","animationFrameProxy","animationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","AnimationFactory","_items","easing","setup","play","easingFunctions","finish","loop","_stopped","wallTime","easingPosition","ChartElement","initUserOptions","reflow","currentChild","getRoot","getSender","getService","sender","chartService","translateChildren","childrenCount","renderVisual","createVisual","addVisual","renderChildren","createAnimation","renderComplete","visual","chartElement","appendVisual","childVisual","noclip","clipRoot","stackRoot","stackVisual","isStackRoot","visuals","hasHighlight","highlight","createHighlight","toggleHighlight","customVisual","_highlight","highlightOptions","highlightVisualArgs","series","category","runningTotal","createGradientOverlay","gradientOptions","createGradient","supportsPointInactiveOpacity","BoxElement","shrinkToFit","hasSetSize","reflowPaddingBox","vAlign","paddingBox","contentBox","hasBox","background","visualStyle","dashType","cursor","ShapeElement","pointData","halfWidth","halfHeight","borderRadius","visualOptions","StopsArray","optionsAccessor","GradientStop","defineOptionsAccessors","withOptions","Gradient","stops","_createStops","_userSpace","userSpace","addStop","removeStop","LinearGradient","RadialGradient","_radius","_fallbackFill","fallbackFill","RADIAL","glass","sharpBevel","roundedBevel","roundedGlass","supportVML","sharpGlass","bubbleShadow","boxDiff","boxes","RootElement","rootOptions","gradients","currentBox","createBackground","drawingGradient","hashCode","gradient","GRADIENTS","usedSpace","currentStops","currentStop","innerRadialStops","cleanGradients","FloatElement","_initDirection","groupAxis","elementAxis","groupSizeField","elementSizeField","groupSpacing","elementSpacing","vSpacing","reflowChildren","groupOptions","groupsSize","maxGroupElementsSize","groupsCount","groupsStart","alignStart","groupStart","groupIdx","groupElements","elementStart","groupElementsCount","groupElementStart","elementBox","maxSize","groupElementsSize","DrawingText","rectToBox","ROWS_SPLIT_REGEX","TextBox","_initContainer","_autoReflow","floatElement","textOptions","rowIdx","visualFn","_boxReflow","visualBox","visualContext","normalBox","rotatedBox","rotationTransform","getDefaultVisual","boxCenter","_textBox","buildTitle","titleOptions","orderTitles","titles","collapseVerticalMargins","prevBox","AxisLabel","culture","click","widget","alignRotation","rotationMatrix","rotationOrigin","alignAxis","distanceAxis","axisAnchor","distanceLeft","distanceRight","alignCenter","Note","childAlias","noteTemplate","aliasFor","wrapperBox","lineStart","linePoints","createLine","defaultVisual","over","FORMAT_REPLACE_REGEX","FormatService","_intlService","localeAuto","ChartService","chart","notify","isPannable","pannable","lock","DomEventsBuilder","createAxisTick","tickOptions","tickX","tickY","createAxisGridLine","gridLine","lineEnd","Axis","labels","majorTickSize","minorTickSize","minorTicks","minorTickType","majorTicks","majorTickType","initFields","_deferLabels","createLabels","createTitle","createNotes","labelsRange","labelsCount","normalizeLabelRotation","labelOptions","clearLabels","autoRotateLabels","labelContext","createAxisLabel","clearTitle","lineBox","mirror","axisX","axisY","lineWidth","visualSize","notes","parseNoteValue","note","createPlotBands","gridLinesVisual","gridLines","_gridLines","createTicks","lineGroup","majorUnit","tickLineOptions","tickPositions","skipUnit","getMajorTickPositions","getMinorTickPositions","minorUnit","_alignLines","_lineGroup","getActualTickSize","tickSize","_backgroundPath","plotBands","plotArea","_plotbandGroup","pane","axes","slotX","slotY","getSlot","createPlotBandLabel","bandRect","textbox","labelTemplate","createGridLines","minorGridLines","majorGridLines","axisLineVisible","linePos","lineOptions","sizeFn","titleSize","space","boxSize","maxLabelSize","labelSize","arrangeTitle","arrangeLabels","arrangeNotes","getLabelsTickPositions","labelTickIndex","labelsBetweenTicks","tickIx","firstTickPosition","nextTickPosition","positionStart","positionEnd","positionLabel","labelBox","labelOffset","labelX","labelY","autoRotateLabelAngle","slotWidth","labelAngle","slot","shouldRenderNote","noteSlot","secondAxis","axisLabelText","tmpl","defaultText","maxLabelOffset","lastLabel","offsetField","startPosition","endPosition","maxStartOffset","maxEndOffset","startTick","endTick","limitRange","rangeSize","valueRange","seriesMin","seriesMax","lineDir","lineInfo","lineSize","axisDir","axisOrigin","pointOffset","scaleToDelta","rawScale","justified","prepareUserOptions","axisCrossingValue","MILLISECONDS","SECONDS","MINUTES","HOURS","DAYS","WEEKS","MONTHS","YEARS","TIME_PER_SECOND","TIME_PER_MINUTE","TIME_PER_HOUR","TIME_PER_DAY","TIME_PER_WEEK","TIME_PER_MONTH","TIME_PER_YEAR","TIME_PER_UNIT","absoluteDateDiff","addTicks","ticks","addDuration","dateValue","daysToSubtract","startOfWeek","roundedDate","tzDiff","addHours","floorDate","ceilDate","dateComparer","dateDiff","toTime","dateEquals","timeIndex","baseUnit","dateIndex","baseUnitStep","startDate","parseDates","CategoryAxis","_ticks","categoriesHash","categories","srcCategories","definedMin","definedMax","rangeIndices","totalRange","roundedRange","_seriesMax","scaleOptions","hideOutOfRangeLabels","valueAxis","firstLabel","getTicks","labelTicks","tickIndices","stepSize","indices","getTickPositions","positions","hasMinor","filterOutOfRangePositions","endIndex","slotBox","singleSlot","limitSlot","limittedSlot","categoryIndex","pointCategoryIndex","startValue","getCategory","totalIndex","categoryAt","categoriesCount","translateRange","scaleRange","limitedRangeIndices","minDelta","maxDelta","zoomRange","totalMin","totalMax","hideOutOfRangeNotes","pan","pointsRange","diffStart","diffEnd","rangeMin","rangeMax","_categoriesMap","currentRangeIndices","totalCount","totalLimit","totalRangeIndices","mapCategories","COORDINATE_LIMIT","DateLabelFormats","BASE_UNITS","FIT","categoryRange","clearCache","_range","EmptyDateRange","displayIndices","displayRange","valueIndex","valuesCount","dateAt","DateRange","roundToBaseUnit","lowerEnd","roundToTotalStep","expandEnd","justifyEnd","valueStart","displayStart","valueEnd","displayEnd","autoBaseUnit","startUnit","startStep","unitSteps","nextStep","categoryLimits","autoBaseUnitSteps","maxDateGroups","autoUnit","autoUnitIx","totalUnits","initUnit","lastCategory","minDiff","categoryIx","defaultBaseUnit","_indices","minIdx","maxIdx","upper","roundedStep","DateCategoryAxis","dataRange","_parsed","panning","userSetBaseUnit","userSetBaseUnitStep","maxDivisions","safeOptions","forecast","_forecast","before","after","divisionOptions","dataRangeOptions","divisionRange","rangeLabels","isEmpty","totalLimits","panRange","datesRange","indicesRange","autoBaseUnitStep","maxDiff","rangeDiff","baseUnitIndex","stepIndex","createRangeLabels","arrangeRangeLabels","position$1","autoRotateRangeLabels","hideOverlappingLabels","firstRangeLabel","lastRangeLabel","i$1","rangeLabel","unitFormat","createLabel","rotateLabel","dateRange","limitCoordinate","MIN_VALUE_RANGE","NumericAxis","autoOptions","narrowRange","autoMin","axisMin","autoAxisMin","autoMax","axisMax","autoAxisMax","roundToMajorUnit","remainderClose","autoAxisOptions","totalOptions","totalAxisOptions","userOptions","userSetMin","userSetMax","clearNullValues","userSetLimits","axisOptions","totalMajorUnit","getDivisions","stepValue","divisions","skipStep","endValue","isValidRange","ratio","DateValueAxis","timeUnits","baseUnitTime","userMajorUnit","actualUnits","unitsToAdd","applyDefaults","axisCrossingValues","limittedRange","LogarithmicAxis","logMaxRemainder","throwNegativeValuesError","initRange","logMin","logMax","floorMax","traverseMajorTicksPositions","tickPosition","traverseMinorTicksPositions","minorOptions","_minorIntervalOptions","minorStep","majorAngles","minorAngles","skipMajor","majorGridLineAngles","renderMajorGridLines","minorGridLineAngles","renderMinorGridLines","renderGridLines","radiusCallback","circle","gridLineAngles","skipAngles","divs","intervals","altAxisVisible","RadarCategoryAxis","reflowLabels","skipOption","stepOption","divCount","divAngle","majorIntervals","minorIntervals","minorAngle","minorRadius","band","plotBandSlot","ring","totalDivs","slotAngle","fromValue","slotStart","GridLinesMixin","PolarAxis","instanceOptions","angularDistance","polarAxis","bandStyle","plotBandPoints","innerPoints","outerPoints","innerCircle","outerCircle","radarMajorGridLinePositions","radarMinorGridLinePositions","tickRadius","angleIx","gamma","beta","axisType","RadarNumericAxis","minorSkipStep","RadarNumericAxisMixin","RadarLogarithmicAxis","CurveProcessor","dataPoints","tangent$1","ChartAxis","_axis","findAxisByName","ChartPane","chartsVisual","chartContainer","_pane","ChartPlotArea","_plotArea","backgroundVisual","_bgVisual","countNumbers","sumOrNull","avg","getField","SeriesBinder","_valueFields","_otherFields","_nullValue","_undefinedValue","seriesTypes","valueFields","otherFields","_makeValue","canonicalFields","bindPoint","pointIx","fieldData","_bindFromArray","srcValueFields","sourceFields","srcPointFields","_bindFromObject","srcFields","srcFieldName","sourceFieldName","percentRegex","standardDeviationRegex","ErrorRangeCalculator","errorValue","initGlobalRanges","deviationMatch","createValueGetter","getAverage","deviation","getStandardDeviation","errorRange","globalRange","standardError","getStandardError","binder","getErrorRange","pointValue","percentValue","isSample","squareDifferenceSum","INITIAL_ANIMATION_DURATION","FADEIN","BORDER_BRIGHTNESS","START_SCALE","ERROR_LOW_FIELD","ERROR_HIGH_FIELD","INTERPOLATE","ABOVE","BELOW","SMOOTH","STEP","AREA","BAR","BOX_PLOT","BUBBLE","BULLET","CANDLESTICK","COLUMN","DONUT","FUNNEL","PYRAMID","HEATMAP","HORIZONTAL_WATERFALL","LINE","OHLC","PIE","POLAR_AREA","POLAR_LINE","POLAR_SCATTER","RADAR_AREA","RADAR_COLUMN","RADAR_LINE","RANGE_AREA","RANGE_BAR","RANGE_COLUMN","SCATTER","SCATTER_LINE","VERTICAL_AREA","VERTICAL_BOX_PLOT","VERTICAL_BULLET","VERTICAL_LINE","VERTICAL_RANGE_AREA","WATERFALL","EQUALLY_SPACED_SERIES","TRENDLINE_LINEAR","TRENDLINE_MOVING_AVERAGE","TRENDLINE_SERIES","SERIES_CLICK","SERIES_HOVER","SERIES_OVER","SERIES_LEAVE","PLOT_AREA_HOVER","PLOT_AREA_LEAVE","DRAG","DRAG_END","DRAG_START","ZOOM_START","ZOOM","ZOOM_END","SELECT_START","SELECT","SELECT_END","SHOW_TOOLTIP","HIDE_TOOLTIP","LOGARITHMIC","CATEGORY","INSIDE_END","OUTSIDE_END","MOUSEWHEEL","DRILLDOWN_FIELD","ErrorBarBase","endCaps","valueBox","getAxis","centerBox","capsWidth","getCapsWidth","capValue","capStart","capEnd","createDefaultVisual","CategoricalErrorBar","seriesValueAxis","anyHasZIndex","appendIfNotNull","areNumbers","segmentVisible","pointVisibility","bindSegments","seriesCount","equalsIgnoreCase","evalOptions","dryRun","needsEval","excluded","filterSeriesByType","currentSeries","getDateField","hasGradientOverlay","isDateAxis","sampleCategory","dateCategory","singleItemOrArray","AREA_REGEX","findNext","pointHasValue","outPoint","hasItem","createOutOfRangePoints","hasMinPoint","hasMaxPoint","missingValues","seriesMissingValues","_outOfRangeMinPoint","_outOfRangeMaxPoint","CategoricalChart","categoryAxis","seriesCategoryAxis","valueAxisRanges","categoryPoints","seriesPoints","seriesOptions","_evalSeries","traverseDataPoints","addValue","pointOptions","seriesIx","pointType","invertAxes","plotValue","isStacked100","otherValues","categorySum","otherStack","plotRange","isStacked","positive","prevValue","isStackedBar","otherValue","categoryAxisCrossingValue","stackLimits","axisName","stackName","pIx","updateStackRange","chartSeries","limitsCache","limits","errorTotals","addErrorBar","errorBars","lowValue","highValue","seriesErrorRanges","addPointErrorBar","stackedErrorRange","updateRange","errorBar","createPoint","owner","noteText","evalPointOptions","_defaults","doEval","axisRange","namedValueAxes","categorySlots","chartPoints","categorySlot","valueSlot","pointSlot","aboveAxis","stackValue","reflowPoint","reflowCategories","limitPoints","limitPoint","limitedSlot","axisIndex","_outOfRangeCallback","seriesIx$1","currentCategory","seriesIx$2","outOfRangePoint","formatPointValue","hover","createNote","LinePoint","tooltipTracking","markers","_rendered","createMarker","labelText","markerBorder","markerBox","_childBox","childBox","reflowLabel","noteTargetBox","defaultColor","shadow","highlightVisual","halfSize","tooltipAnchor","clipBox","horizontalAlign","overlapsBox","unclipElements","PointEventsMixin","NoteMixin","LineSegment","toGeometryPoints","segmentVisual","coords","getNearestPoint","toGeometryPoint","lintPoint","stepAxis","stepDir","calculateStepPoints","previousPoint","stepPoint","StepLineSegment","StepLineMixin","SplineSegment","LineChartMixin","renderSegments","_segments","sortedPoints","sortPoints","pointCount","createSegment","_addSegment","nearestPoint","allPoints","nearestPointDistance","ClipAnimation","_setEnd","setX","transitions","clipPath","_setChildrenAnimation","animationPoints","LineChart","ClipAnimationMixin","AreaSegment","prevSegment","stackPoints","createFill","createStroke","lineCap","strokeSegments","_strokeSegments","createStrokeSegments","segmentsFromPoints","stackSegments","createStackSegments","hasStackSegment","fillSegments","hasStackSegments","fillToAxes","fillPath","crossingValue","endSlot","firstPoint","lastPoint","StepAreaSegment","SplineAreaSegment","curveProcessor","AreaChart","previousSegment","_gapStackPoints","_stackPoints","stackPoint","startIdx","endIdx","currentSeriesIx","_previousSegmentPoint","gapStackPoint","_createGapStackPoint","segmentIx","seriesIdx","AxisGroupRangeTracker","axisRanges","chartAxisRanges","chartRange","query","BarLabel","textBox","alignToClipBox","parentBox","Bar","rectVisual","createRect","getBorderColor","baseColor","_brightness","borderColor","forEachReverse","ClusterLayout","gap","slots","slotSize","StackWrap","positionAxis","BarChart","clusterType","stackType","negativeColor","cluster","getStackWrap","stackWrap","stackGroup","wraps","_stackGroup","zeroSlot","stackAxis","childrenLength","_setAnimationOptions","pointVisual","Candlestick","ocSlot","lhSlot","realBody","mid","lines","reflowNote","_mainVisual","mainVisual","createOverlay","createBody","createLines","drawLines","lineStyle","normalColor","CandlestickChart","splitValue","downColor","BoxPlot","whiskerSlot","boxSlot","q1","reflowBoxSlot","reflowWhiskerSlot","medianSlot","median","mean","meanSlot","meanPoints","calcMeanPoints","whiskerPoints","calcWhiskerPoints","medianPoints","calcMedianPoints","renderOutliers","outliers","outerFence","outlierValue","markersBorder","reflowOutliers","whiskers","VerticalBoxPlot","BoxPlotChart","filterOutliers","ScatterErrorBar","seriesAxes","ScatterChart","_initFields","xAxisRanges","yAxisRanges","valueErrorField","lowField","highField","createMissingValue","xAxisName","xAxis","yAxisName","yAxis","xAxisRange","yAxisRange","namedXAxes","namedYAxes","Bubble","highlightGroup","BubbleChart","_maxSize","negativeValues","updateBubblesSize","pointsCount","animationOptions","minR","minSize","maxR","minArea","areaRatio","Target","Bullet","targetValueSlot","targetSlotX","targetSlotY","targetSlot","bodyVisual","BulletChart","seriesItem","wrapData","bulletOptions","bullet","BaseTooltip","getStyle","pointColor","backgroundColor","paddingBottom","tooltipOptions","CrosshairTooltip","crosshair","formatService","initAxisName","showAt","stickyMode","getAnchor","ref_options","Crosshair","moveLine","getBox","dim","axisLineBox","currentAxis","ChartContainer","shouldClip","_clipBox","chartsBox","clipRect","unclipLabels","charts","Pane","ID","appendAxis","appendAxisAt","appendChart","removeAxis","removeChart","allAxes","vGridLines","hGridLines","refresh","notifyRender","axisValueField","length$1","axis$1","lineBox$1","paneIndex","PlotAreaBase","initSeries","legend","crosshairs","originalOptions","originalSeries","_bindCache","createPanes","createCrosshairs","paneDefaults","paneOptions","panes","panesLength","currentPane","crosshairOptions","currentCrosshair","removeCrosshairs","hideCrosshairs","findPane","matchingPane","findPointPane","axisToRemove","filteredAxes","chartToRemove","filteredCharts","addToLegend","inactiveItems","inactiveItemsLabels","seriesVisible","visibleInLegend","itemLabelOptions","markerColor","groupAxes","xAxes","yAxes","paneIx","paneAxes","axisIx","groupSeriesByPane","seriesByPane","seriesPaneName","filterVisibleSeries","reflowPanes","detachLabels","reflowAxes","reflowCharts","redraw","panesArray","crossingAxes","crossingValues","valuesToAdd","alignAxisTo","targetAxis","targetCrossingValue","slotEdge","targetEdge","axisBox","alignAxes","xAnchor","yAnchor","xAnchorCrossings","yAnchorCrossings","leftAnchors","rightAnchors","topAnchors","bottomAnchors","paneId","paneAnchor","anchorCrossings","_overlap","_mirrored","pane$1","paneId$1","visible$1","anchor$1","anchorCrossings$1","shrinkAxisWidth","axisGroupBox","shrinkAxisHeight","shrinked","fitAxes","paneBox","currentAxis$1","reflowPaneAxes","autoRotateAxisLabels","groupedAxes","rotated","allPaneAxes","chartPane","remainingHeight","autoHeightPanes","percents","currentPane$1","i$2","currentPane$2","backgroundBox","axesCount","axisA","axisB","chartsBoxes","addBackgroundPaths","multipath","backgroundContainsPoint","pointsByCategoryIndex","pointsBySeriesIndex","seriesIndex","filterPoints","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxisCount","labelAxis","createLabelAxis","onAxis","isTrendline","trendlineFactory","createTrendlineSeries","modifiedSeries","forSeries","seriesByName","trendlineSeries","isSingleAxis","_dispatchEvent","SeriesAggregator","defaultAggregates","seriesFields","_seriesFields","rootAggregate","_series","_binder","fieldAggregate","canonicalName","aggregatePoints","srcPoints","_bindPoints","firstDataItem","srcValues","_bindField","DefaultAggregates","seriesType","RangeBar","fromOptions","toOptions","labelFrom","_createLabel","labelTo","RangeBarChart","plotLimits","RangeLinePoint","AUTO","RangeAreaPoint","initLabelsFormat","fromPoint","toPoint","copyFields","fromBox","toBox","positionLabels","fromLabelPosition","toLabelPosition","RangeAreaSegment","toPoints","fromSegments","toPath","fromPath","SplineRangeAreaSegment","createCurveSegments","StepRangeAreaSegment","RangeAreaChart","fromSlot","toSlot","OHLCPoint","oPoints","cPoints","lhPoints","oSlot","cSlot","OHLCChart","WaterfallSegment","WaterfallChart","createSegments","totalCategories","summary","prevPoint","registry","impl","sourceValues","slope","intercept","xMin","xMax","seriesValues","calculateSlope","currentRange","categoryField","averagePoints","lastValue","trendline","calculateMovingAverage","calculatePoints","linearTrendline","movingAverageTrendline","AREA_SERIES","OUT_OF_RANGE_SERIES","CategoricalPlotArea","namedCategoryAxes","valueAxisRangeTracker","_seriesPointsCache","_currentPointsCache","stack100","createCategoryAxes","aggregateCategories","createCategoryAxesLabels","createCharts","createValueAxes","trendlineRegistry","filterSeries","trendlineAggregateForecast","srcSeries","aggregateSeries","paneSeries","visibleSeries","groupSeriesByCategoryAxis","groupIx","createChartGroup","createAreaChart","createRangeAreaChart","createBarChart","createRangeBarChart","createBulletChart","createCandlestickChart","createBoxPlotChart","createOHLCChart","createWaterfallChart","createLineChart","processedSeries","axisPane","outOfRangePoints","clearSeriesPointsCache","seriesSourcePoints","dateAxis","srcData","getFn","aggregator","categoryItem","categoryIdx","categoriesToAdd","defaultPaneName","stackableChartOptions","firstSeries","categoryAxes","unique","axisSeries","groupSeries","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","rangeAreaChart","waterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","centeredSeries","seriesAxis","aggregatedAxis","definitions","isJustified","primaryAxis","tracker","defaultRange","baseOptions","defaultAxisRange","_eventCoordinates","pointPane","updateAxisOptions","targetOptions","PlotAreaEventsMixin","Observable","one","getArray","handlersIsFunction","eventName$1","original","unbind","_defaultPrevented","Surface","_kendoExportVisual","exportVisual","_click","_handler","_mouseenter","_mouseleave","_mousemove","_visual","_enableTracking","domNode","_kendoNode","currentSize","_resize","suspendTracking","_suspendedTracking","resumeTracking","_elementOffset","_surfacePoint","coord","inverseTransform","BaseNode","childNodes","observe","removeSelf","invalidate","renderAttr","renderAllAttr","attrs","renderStyle","isWindowAvailable","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","flat","desktopBrowserRxs","mobileBrowserRxs","omini","omobile","mobilesafari","chrome","testRx","rxs","dflt","browserInfo","detectDesktopBrowser","minorVersion","os","device","majorVersion","flatVersion","PhoneGap","appMode","standalone","detectMobileOS","reComment","reDeclaration","reDoubleQuoted","reSingleQuoted","parseInlineStyles","styleString","styleObject","styleAttr","replaceStyleAttr","restoreStyleAttr","SVG_NS","renderSVG","svg","setInnerHTML","testFragment","testContainer","hasParser","DOMParser","chartDoc","parseFromString","importedDoc","adoptNode","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","htmlEncode","TRANSFORM","DefinitionMap","isDefinition","clearDefinitions","childNode","NODE_MAP","createDefinitions","attachTo","domElement","setElement","nodes","childElement","updateDefinition","attr","removeAttr","accessibilityOptionsChange","allAttr","toggleAttr","allCss","mapTransform","renderTransform","transformChange","mapStyle","renderOpacity","renderId","renderClassName","renderRole","renderAriaLabel","renderAriaRoleDescription","ariaRoleDescription","renderAriaChecked","ariaChecked","hasDefinitions","definitionChange","refUrl","renderDefinitions","mapDefinitions","skipBaseHref","baseHref","baseUrl","hashIndex","GradientStopNode","renderOffset","GradientNode","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","LinearGradientNode","RadialGradientNode","PatternNode","getWidth","getHeight","ClipNode","renderClipRule","DefinitionNode","definitionMap","addDefinitions","removeDefinitions","createDefinition","addDefinition","mapItem","removeDefinition","RootNode","defs","ATTRIBUTE_MAP","PathNode","renderData","mapFill","mapStroke","renderLinecap","renderDashType","renderStroke","dashArray","renderFill","ArcNode","CircleNode","GroupNode","ImageNode","mapPosition","mapSource","renderPosition","renderSource","MultiPathNode","RectNode","ENTITY_REGEX","decodeEntities","TextNode","setY","renderContent","renderTextAnchor","renderPaintOrder","paintOrder","Image","BaseSurface","_root","_template","_rootElement","ctm","getScreenCTM","alignToScreen","mouseover","mouseout","svgStyles","initClip","clearClip","setClip","beginPath","renderPoints","setTransform","loadElements","cors","setOpacity","globalAlpha","opactity","renderTo","save","lastExecTime","throttled","elapsed","FRAME_DELAY","canvas","getContext","invalidateHandler","_invalidate","_rescale","_devicePixelRatio","fixedScale","clearRect","QuadRoot","shapes","_quadNode","pointShapes","QuadNode","inBounds","nodeRect","nodeBottomRight","inserted","_initChildren","ROOT_SIZE","ShapesQuadTree","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","zIndexComparer","levelWeight","_zIndex","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","SurfaceCursor","surface","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","renderPath","prevOut","bezierCurveTo","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","setPatternFill","fillStyle","createLinearGradient","createRadialGradient","addColorStop","addGradientStops","patternCanvas","patternContext","createPattern","strokeStyle","mozDash","webkitLineDash","onLoad","crossOrigin","complete","drawImage","textAlign","strokeText","fillText","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","image","rootElement","loadingStates","resolveDataURL","toDataURL","currentShape","_currentShape","hasDocument","SurfaceFactory","SVGSurface","CanvasSurface","hasFeature","preferred","Highlight","_points","arrayPoints","togglePointHighlight","toggleHandler","isHighlighted","acceptKey","mouseKey","toChartAxisRanges","ranges","Pannable","_active","_panAxes","updatedAxes","ZoomSelection","marquee","_marquee","marqueeColor","removeElement","setStyles","zoomPane","_zoomPane","_zoomPaneClipBox","_selectionPosition","_updateAxisRanges","startLocation","MousewheelZoom","rate","updateRanges","sizeField","alignStartReverse","alignContent","justifyContent","alignItems","orientation","lineSpacing","revers","Layout","_rect","_fieldMap","_initMap","fieldMap","groupsSizeField","groupsAxis","justifyAlign","groupBox","_initGroups","groupOrigin","elementOrigin","arrangeElements","transofrm","translateToPoint","bboxes","scaledStart","newStart","_newGroup","addGroup","_addToGroup","LegendLayout","legendItem","LegendItem","createContainer","markerOptions","eventSink","_itemOverlay","_legendItemHover","pointIndex","_unsetActivePoint","HORIZONTAL","CUSTOM","Legend","createContainers","createLegendTitle","createItems","userAlign","hasTitle","itemsContainer","innerElement","hasItems","legendBox","containerCustomReflow","containerReflow","alignTarget","containerBox","createTitleLayout","appendTitleLayoutContent","layout","PlotAreaFactory","_registry","trendlines","createDiv","closestHandle","Selection","_dateAxis","initOptions","createElements","onPane","leftMask","rightMask","leftHandle","rightHandle","selectionStyles","leftHandleHeight","rightHandleHeight","borderRightWidth","mousewheel","_mousewheelHandler","_mousewheel","_domEvents","_move","_end","tap","_tap","press","_press","gesturestart","_gesturestart","gesturechange","_gesturechange","gestureend","_gestureend","_mwTimeout","_rangeEventArgs","_pointInPane","modelCoords","_toModelCoordinates","bodyRect","inBody","moveTarget","oldRange","rightClick","_slot","leftMaskWidth","rightMaskWidth","toValue","zDir","relative","Tooltip","SharedTooltip","tooltipPoints","_slotAnchor","_defaultAnchor","categoryText","categoryFormat","slotCenter","BarChartAnimation","fromScale","BubbleAnimation","FadeInAnimation","fadeTo","PieAnimation","ScatterLineChart","missingValue","scatterValueGetter","samplingInterval","scatterRegistry","scatterLinearTrendLine","scatterMovingAverageTrendline","XYPlotArea","xAxisRangeTracker","yAxisRangeTracker","filteredSeries","createScatterChart","createScatterLineChart","createBubbleChart","createAxes","createXYAxis","inferredDate","namedAxes","isLog","typeSamples","seriesAxisName","firstPointValue","xAxesOptions","yAxesOptions","xValues","yValues","scatterTrendlineRegistry","PieSegment","autoTextColor","themeLabels","theme","seriesDefaults","animationDelay","labelsOptions","labelsDistance","lp","labelHeight","labelWidth","createSegmentVisual","borderOptions","singleSegment","tooltipAlignment","RAD_30","RAD_60","createLegendItem","legendOptions","pointVisible","legendItems","PieChart","seriesColors","colorsCount","anglePerValue","constantAngle","explode","evalSegmentOptions","segmentOptions","seriesConfigs","minWidth","halfMinWidth","defaultPadding","newBox","newBoxCenter","leftSideLabels","rightSideLabels","seriesConfig","labelComparator","leftLabelsReflow","rightLabelsReflow","distances","distanceBetweenLabels","distributeLabels","lr","firstBox","secondBox","_takeDistance","amount","available","boxX","labelDistance","boxY","hAlignLabel","connectors","_connectorLines","connectorsColor","connectorLine","centerPoint","sr","crossing","pointInCircle","autoFit","pieCenter","bboxBottom","reverseValue","originalX","sector_center","a1","a2","b1","b2","uat","PieChartMixin","PiePlotArea","createPieChart","pieChart","DonutSegment","DonutChart","holeSize","totalSize","seriesWithoutSize","currentSeries$1","DonutPlotArea","createDonutChart","donutChart","PolarPlotAreaBase","createPolarAxis","createValueAxis","axisDefaultRange","valueAxisOptions","valueAxisBox","heightDiff","PolarScatterChart","valueRadius","PolarLineChart","SplinePolarAreaSegment","_polarAxisCenter","PolarAreaSegment","centerSegment","xComparer","PolarAreaChart","_hasMissingValuesGap","PolarPlotArea","scatterChart","RadarLineChart","seriesSegments","groupBySeriesIx","isFirstDataPoint","isLastDataPoint","SplineRadarAreaSegment","RadarAreaSegment","RadarAreaChart","RadarSegment","RadarClusterLayout","slotSector","RadarStackLayout","childSector","RadarBarChart","RadarPlotArea","_hasBarCharts","_isStacked100","chartOptions","FunnelSegment","chartBox","createPath","FunnelChart","labelPadding","dynamicSlopeReflow","firstSegment","maxSegment","lastUpperSide","previousOffset","previousHeight","nextSegment","nextPercentage","dynamicHeight","segmentSpacing","constantSlopeReflow","decreasingWidth","neckRatio","finalNarrow","dynamicSlope","PyramidChart","FunnelPlotArea","createChart","chartType","minLightnessOffset","hsl","HeatmapPoint","labelColor","isRoundRect","halfBorderWidth","HeatmapChart","setRange","colorScale","indexX","indexY","xRange","yRange","ref$2","xIndex","yIndex","xIn","yIn","HeatmapPlotArea","bindCategories","createAxisLabels","xCategories","yCategories","createHeatmapChart","xAxisOptions","yAxisOptions","firstCategory","COLOR","FIRST","MAX","MIN","NOTE_TEXT","errorLow","errorHigh","AXIS_NAMES","MOUSEMOVE","CONTEXTMENU","MOUSELEAVE","Chart","themeOptions","_initElement","_originalOptions","_theme","_initTheme","_initHandlers","_initSurface","fontLoaded","_destroyed","_redraw","_attachEvents","_setElementClass","seriesCopies","resolveAxisAliases","applySeriesColors","chartArea","_selections","_destroySelections","_setupSelection","_noTransitionsRedraw","paneName","_model","findPaneByName","findPaneByIndex","seriesName","categoryName","pointByCategoryName","togglePointsHighlight","showTooltip","_sharedTooltip","_tooltip","hideTooltip","_surfaceWrap","renderAs","_destroySurface","_surfaceMouseenterHandler","_surfaceMouseleaveHandler","_getModel","_destroyView","_createTooltip","_createPannable","_createZoomSelection","_createMousewheelZoom","triggerPaneRender","_navState","_cancelDomEvents","exportOptions","currentOptions","clearMissingValues","_pannable","zoomable","_zoomSelection","_mousewheelZoom","_toggleDragZoomEvents","allowDrag","allowZoom","_dragZoomEnabled","_touchAction","_toggleDomEvents","toggleDrag","toggleZoom","_createSharedTooltip","axisDefaults","themeAxisDefaults","mapAxisOptions","axisColor","applyAxisDefaults","seriesLength","commonDefaults","themeSeriesDefaults","commonThemeDefaults","cleanupNestedSeriesDefaults","applySeriesDefaults","colors","seriesColor","_createPlotArea","_modelOptions","subtitle","skipSeries","selections","select","_selectStart","_selectEnd","_clickHandler","_mouseleaveHandler","_mouseover","_mouseout","_toDocumentCoordinates","_updateDrilldownPoint","_resetDrilldownPoint","_startDrilldown","obj$1","_shouldAttachMouseMove","_hoveredPoint","_plotAreaHovered","_hasInactiveOpacity","_activeChartInstance","_applySeriesOpacity","_updateSeriesOpacity","_stopChartHandlers","_gestureDistance","_zooming","mousewheelZoom","previousGestureDistance","scaleDelta","_drawingChartElement","leave","_startNavigation","_suppressHover","ranges$1","_endNavigation","_mousewheelZoomRate","totalDelta","chartEvent","_getChartElement","coordinates","_elementPadding","_padding","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","handlingTap","_showInactiveOpacity","_displayTooltip","_displayInactiveOpacity","activePoint","multipleSeries","highlightPoints","chartInstance","_chartInstanceFromPoint","inactivePoints","_getInactivePoints","_getInactiveOpacityForSeries","_getAllPointsOfType","_updateHoveredPoint","hoveredPoint","drilldown","_drilldownState","resetOpacity","currSeries","defaultOpacity","_getDefaultOpacityForSeries","inactiveOpacity","activeSeries","_activePoint","hasInactiveOpacity","_hideInactiveOpacity","hasDefaultInactiveOpacity","defaultInactiveOpacity","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","_trackCrosshairs","overPlotArea","_tooltipCategoryIx","_sharedHighlight","pointArgs","hoverArgs","hideElements","keepTooltipOpen","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","autoBind","bindCategoryAxisFromSeries","uniqueCategories","bindable","dataIx","srcDates","sortDates","uniqueDates","rowCount","rowIx","colCount","colIx","transpose","_isBindable","transitionsState","updateMouseMoveHandler","applyOptions","setDirection","setIntlService","noTransitionsRedraw","bar","rangeColumn","verticalLine","pie","donut","verticalArea","scatter","scatterLine","candlestick","ohlc","boxPlot","verticalBullet","polarArea","polarLine","radarArea","radarLine","waterfall","DATA_FIELDS","fieldValue","originalValue","nullValue","ChartSharedTooltip","NO_CROSSHAIR","wrapNumber","Sparkline","_initialWidth","stage","displayState","_autoWidth","_calculateWidth","currentChart","pointWidth","normalizeOptions","FadeOutAnimation","_initialOpacity","NavigatorHint","chartPadding","minPos","clearHideTimeout","_visible","tooltipStyle","_hideTimeout","_hideAnimation","hideDelay","NAVIGATOR_PANE","NAVIGATOR_AXIS","DEFAULT_PANE","ClonedObject","Navigator","chartObserver","clean","_redrawSelf","initSelection","axisClone","selectStart","selectEnd","filterAxes","silent","redrawSlaves","slavePanes","_drag","navigatorAxis","naviRange","inNavigator","liveDrag","showHint","_dragEnd","readSelection","ref_selection_options","_zoom","fromIx","toIx","_zoomEnd","__navi","naviOptions","attachAxes","attachSeries","valueAxes","justifyAxis","_collapse","autoBindElements","navigatorSeries","dateField","StockChart","stockDefaults","destroyNavigator","_fullRedraw","_dirty","partialRedraw","dirty","_seriesCount","copyNavigatorCategories","ANGULAR_SPEED","ARROW_POINTER","BAR_POINTER","DEFAULT_LINE_WIDTH","DEGREE","LINEAR","RADIAL_POINTER","RADIAL_RANGE_POINTER","buildLabelElement","geo","styleGeometry","styleBox","getRange","Gauge","contextService","surfaceElement","pointerValue","pointer","_setValueOptions","_draw","_visuals","allValues","arrayValues","_toggleTransitions","_surfaceSize","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","currentTheme","areaGeometry","_surfaceElement","_getSize","defaultSize","_defaultSize","renderAxisTick","tickRenderOptions","renderTicks","tickGroup","LinearScale","renderLabels","scaleLine","renderLine","scaleTicks","renderRanges","linePath","Pointer","_oldValue","repaint","LinearPointer","pointerBox","pointerRangeBox","trackBox","trackSize","pointerHalfSize","getElementOptions","_margin","ArrowLinearPointerAnimation","toScale","translateX","translateY","ArrowLinearPointer","pointerShape","elementOptions","BarLinearPointerAnimation","newPoints","oldPoints","speed","BarLinearPointer","minSlot","sizeAxis","pointerPath","oldShape","renderTrack","trackOptions","LinearGauge","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","scaleElements","plotAreaBox","scaleBox","GeometryArc","GEO_ARC_ADJUST_ANGLE","drawTicks","tickAngles","getRadiusX","tickStart","tickEnd","rangeSegment","RadialScale","renderArc","labelElements","repositionRanges","hasRanges","ticksSize","labelsGroup","rangeDistance","isInside","hasLabelElements","setRadiusX","setRadiusY","paddingWidth","paddingHeight","labelPos","labelElement","prevLabelPos","labelTransform","rangeRadius","getRangeRadius","rangeSegments","segmentsCount","rangeGeom","rangePlaceholderColor","tickArc","majorTickAngles","allTicks","_tickDifference","minorTickAngles","normalizeTickAngles","tickCount","repositionTicks","minor","newPoint","xDiff","yDiff","RadialPointerAnimation","newAngle","oldAngle","RadialPointer","setAngle","_renderNeedle","_renderCap","capSize","cap","needleColor","needlePath","capColor","RadialGauge","_initialPlotArea","fitScale","alignScale","_buildPointers","midDiff","oldDiff","getDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","ArcScale","rangeLineCap","placeholderRangeAngle","setEndAngle","setStartAngle","RangePointerAnimation","startColor","currentColor","RangePointer","rangeColor","ArcGauge","centerLabelPosition","yLimit","CircularGauge","Encoding","initProperties","quietZoneLength","addQuietZone","convertedValue","initValue","addData","invalidCharacterError","addCheckSum","Code11","characterMap","cCheckSumTotal","kCheckSumTotal","kCheckSumMinLength","checkSumMod","DASH_VALUE","DASH","STOP","addPattern","addCharacter","setBaseUnit","cValue","getWeightedSum","checksum","kValue","weightedSum","weightedValue","Code39Base","minBaseUnitLength","addStart","pushCheckSum","prepareValues","characterData","addBase","Code39","minRatio","maxRatio","gapWidth","splitCharacter","patternMappings","patternString","minBaseUnit","minHeight","getBaseUnit","getBaseWidth","characterLength","addCharacterGap","Code39ExtendedBase","addExtended","extendedMappings","patternIndex","shiftCharacters","dataCharacter","specialAsciiCodes","shiftValuesAsciiCodes","Code39Extended","SHIFT0","SHIFT1","SHIFT2","SHIFT3","Code93","TERMINATION_BAR","charData","checkValues","_getCheckValues","_findCharacterByValue","wightedSum","Code93Extended","characterByValue","Postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","checkSum","alphanumericRegex","State128","encoding","pushState","State128AB","states","_initMoves","FNC4","SHIFT","encodingState","_moves","maxLength","numberMatch","_moveFNC","_shiftState","_moveState","fnc","previousState","shifted","states128","State128A","State128B","State128C","next4","getSubstring","State128FNC4","_initSubStates","dependentStates","subState","_getSubState","_initSubState","_pushStart","pushData","subStates","_getAll","FNC1","States128FNC1","startState","startAI","endAI","applicationIdentifiers","multiKey","nextStart","separatorLength","regexSeparators","getBySeparator","getByLength","applicationIdentifier","getApplicationIdentifier","unsupportedAIError","Code128Base","_initStates","getNextState","Code128a","Code128b","Code128c","Code128","CodeGS1128","MsiBase","checkSumType","checkSums","checkSumLength","MsiMod10","MsiMod11","MsiMod1010","MsiMod1110","Modulo10","evenSum","oddSum","odd","Modulo11","checkValue","Modulo11Modulo10","mod11Value","Modulo10Modulo10","mod10Value","Ean13","keyTable","valueAsString","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","arrToAdd","limitedHeight","even","Ean8","Encodings","code11","code39","code39extended","code93","code93extended","code128","code128a","code128b","code128c","surfaceSize","surfaceType","msimod10","msimod11","msimod1010","msimod1110","postnet","ean8","ean13","Barcode","errorHandler","_setOptions","_initSurfaceElement","_createSurface","_destroySurfaceElement","encodedValue","textToDisplay","textMargin","barHeight","_getBackground","_getText","_bandsGroup","_getBands","value$1","stepX","patternItem","_textbox","splitInto","chunkLength","toBitsString","bitString","toDecimal","FreeCellVisitor","getNextCell","getNextRemainderCell","EncodingResult","dataString","IsoEncoder","getEncodingResult","errorCorrectionLevel","modes","previousMode","chooseMode","initMinNumericBeforeAlpha","initMinNumericBeforeByte","initMinAlphaBeforeByte","modeString","nextMode","minNumericBeforeAlpha","minNumericBeforeByte","minAlphaBeforeByte","getModes","dataCodewordsCount","DataModeInstances","getStringBitsLength","getDataCodewordsCount","getDataString","QRDataMode","modeIndicator","bitsInCharacterCount","getVersionIndex","getBitsCharacterCount","getModeCountString","NumericQRDataMode","inputLength","mod3","AlphaNumericQRDataMode","characters","ByteQRDataMode","Utf8Encoder","encodingMode","utfBOM","initialModeCountStringLength","encodeCharacter","bytesCount","getBytesCount","significantOnes","VersionsCodewordsInformation","totalDataCodewords","errorCodewordsPerBlock","terminator","NUMERIC","ALPHA_NUMERIC","BYTE","powersOfTwo","powersOfTwoResult","irregularAlignmentPatternsStartDistance","finderPattern","alignmentPattern","errorCorrectionPatterns","paddingCodewords","maskPatternConditions","alphaPattern","alphaRegex","alphaNumericRegex","byteRegex","generatorPolynomials","fillFunctionCell","matrices","bit","fillDataCell","xorPolynomials","multiplyPolynomials","multiplyByConstant","generateErrorCodewords","errorCodewordsCount","generator","generatorPolynomial","errorCodewords","numericMatch","alphaMatch","alphaNumeric","alphaNumericMatch","encodeBCH","codeLength","generatorNumber","polynomialLength","valueNumber","valueString","numberX","numberY","yLength","xLength","dividePolynomials","getNumberAt","addFormatInformation","addVersionInformation","quotient","modules","addCentricPattern","addFinderSeparator","nextX","nextY","scoreFinderPatternOccurance","scores","rowColumn","scoreAdjacentSameBits","previousBits","adjacentBits","calculateDarkModulesRatioScore","darkModules","mod5","encodeData","createQRCodeDataEncoder","encodingResult","versionInformation","blocks","dataStream","versionCodewordsInformation","dataBlock","blockCodewordsCount","groupBlocksCount","messagePolynomial","codeword","codewordStart","dataBlocks","errorBlocks","versionGroups","blockIdx","codewordIdx","getBlocks","initialDataString","dataBitsCount","terminatorIndex","paddingCodewordIndex","padDataString","initMatrices","addFinderPatterns","startDistance","addAlignmentPatterns","addTimingFunctions","cellVisitor","fillData","adjacentSameBits","modulesLength","matrixIndex","scoreMaskMatrixes","optimalMatrix","encodeVersionInformation","encodedString","encodeFormatInformation","generatePowersOfTwo","firstPolynomial","secondPolynomial","generateGeneratorPolynomials","crossPattern","squarePattern","QRCodeDefaults","QRCode","quietZoneSize","contentSize","errorCorrection","_calculateBaseUnit","_renderBackground","_renderMatrix","_hasCustomLogo","_renderLogo","_isSwiss","_renderSwissCode","qrSize","imageRect","logoSize","_getLogoSize","logoUrl","crossSize","crossOffset","_renderShape","matrixSize","newOptions","defautLogoSize","datums","WGS84","toSquare","math","atan","Location","lat","lng","DISTANCE_ITERATIONS","DISTANCE_CONVERGENCE","DISTANCE_PRECISION","FORMAT","loc","datum","greatCircleTo","initialBearing","initialDatum","bearing","fromLat","fromLng","dToR","initialDest","azimuthFrom","azimuthTo","prevLambda","sinLambda","cosLambda","sino","cosA2","coso","cos2om","sigma","U1","sinU1","cosU1","U2","sinU2","cosU2","lambda","converged","sinA","u2","deltao","fromLngLat","lngAndLat","fromLatLng","PI_DIV_4","Mercator","MAX_LNG","MAX_LAT","INVERSE_ITERATIONS","INVERSE_CONVERGENCE","forward","proj","lng0","centralMeridian","_projectLat","ecc","ts","con","inverse","_inverseY","ecch","phi","dphi","SphericalMercator","Equirectangular","EPSG3857","_proj","_tm","_itm","toLocation","EPSG3395","EPSG4326","convertToHtml","removeChildren","prepend","originElement","toHyphens","toPixels","detectOS","formFactorRxs","tablet","testRegex","getEventMap","eventMap","getSupportedFeatures","mobileOS","msPointers","mobileChrome","crios","mouseAndTouchPresent","eventCapture","hasTransitions","lowPrefix","delayedClick","proxy","useCapture","eventFilter","closestMatchingTarget","applyEventMap","setDefaultEvents","renderPos","FUNCTION","_setEvents","Attribution","extent","_extent","newItem","_itemText","appendHtml","showElement","hideElement","inZoomLevel","_inZoomLevel","minZoom","maxZoom","inArea","_inArea","newMin","newMax","directionsMap","createButton","navigateUpButton","icons","navigateRightlButton","navigateDownButton","navigateLeftButton","_keyroot","_tabindex","_keydownHandler","_keydown","dispose","TABINDEX","tabindex","_pan","panStep","CHANGE","ZoomControl","zoomInButton","zoomOutButton","zoomStep","Extent","initialNw","initialSe","nw","World","containsAny","locs","include","includeAll","edges","sw","CENTER_CHANGE","widgetService","documentPoint","Layer","_beforeReset","_reset","_panEnd","_activate","_updateAttribution","_deactivate","_applyExtent","_setVisibility","matchMinZoom","matchMaxZoom","inside","attribution","_readData","_hasData","_layerIndex","layers","compileTemplate","roundPoint","renderSize","newSize","TileLayer","subdomains","_viewType","_view","locationToLayer","viewOrigin","_updateView","TileView","extentToPoint","tileSize","urlTemplate","pool","TilePool","center$1","_center","extent$1","_viewOrigin","zoom$1","pointToTileIndex","tileCount","firstTileIndex","indexToPoint","subdomainText","subdomainIndex","tile","createTile","currentIndex","tileOptions","wrapIndex","subdomain","errorUrlTemplate","wrapValue","ImageTile","urlResult","urlOptions","errorUrl","quadkey","_create","maxDist","TapCapture","_release","captureNext","cancelCapture","PaneDimension","forcedEnabled","scrollSize","makeVirtual","_virtualMin","_virtualMax","virtualSize","outOfBounds","forceEnabled","getTotal","rescale","scaledTotal","minScale","PaneDimensions","forcedMinScale","maxScale","newScale","centerCoordinates","PaneAxis","movable","dragMove","dragDelta","resistance","translateAxis","elastic","dimensions","userEvents","closestAnchor","previousGesture","previousCenter","scaleWith","Movable","transformStyle","webkitTransformOrigin","_saveCoordinates","by","scaleTo","moveAxis","newCoordinates","ShapeLayer","_initRoot","_markers","_translateSurface","_load","geometries","_clearMarkers","_loader","GeoJsonLoader","shapeCreated","cancelled","renderPointsAsMarkers","_createMarker","layer","featureCreated","_panning","locationToView","_eventArgs","layerIndex","shapeIndex","_tooltipAnchor","_tooltipContext","eventOffset","_panHandler","panHandler","locator","unwrap","_loadGeometryTo","_featureCreated","_shapeCreated","_loadPolygon","_setLineFill","_loadPoint","_loadShape","rings","_buildPolygon","viewToLocation","BubbleLayer","newData","scaleType","_scaleType","getLocation","locationField","_createSymbol","_drawSymbol","Scales","Symbols","SqrtScale","_domain","domainRange","outputRange","_ratio","rel","CLICK","MOUSE_ENTER","MOUSE_LEAVE","MARKER_CLASS_NAME","MARKER_CLASS","MarkerLayer","_markerClickHandler","_markerClick","_addOne","Marker","titleField","markerIndex","_markerMouseEnter","_createMarkerEventArgs","_markerMouseLeave","_mouseEnterHandler","_mouseEnter","_mouseLeaveHandler","_mouseLeave","templateHtml","_compileTemplate","templateFn","templateElement","svgIcon","_createEventArgs","paramName","useWithBlock","_tickProxy","_tick","_started","onEnd","onCancel","timePassed","_easeProxy","ease","easeOutExpo","DEFAULT_MIN_HOLD","DEFAULT_THRESHOLD","PRESS","HOLD","TAP","DOUBLETAP","RELEASE","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","api","TouchAxis","invalidZeroEvents","_updateLocationData","timeDelta","initialDelta","client","screen","Touch","touchInfo","useClickAsTap","pressEvent","_clicks","supportDoubleTap","_moved","_finished","_holdTimeout","_hold","minHold","_trigger","_clickTimeout","preventMove","_shouldNotMove","_withinIgnoreThreshold","UserEvents","endTime","activeTouches","activeTouchIndex","isMoved","jQueryEvent","withEachUpEvent","downEvents","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","enableGlobalSurface","global","_surfaceMoveHandler","_surfaceEndHandler","_elementStartHandler","_elementClickHandler","defaultAction","preventDragEvent","_elementDragStartHandler","_elementSelectHandler","preventIfMovingProxy","preventIfMoving","_isMoved","_disposeAll","_isMultiTouch","touch1","touch2","touchDelta","_apiCall","_maxTouchesReached","_eachTouch","matchingTouch","dict","defaultThreshold","ZoomSnapBack","tapCapture","DragInertia","freeze","_moveTo","paneAxis","_snapBack","velocityMultiplier","friction","snapBack","AnimatedScroller","_updateCoordinates","setCoordinates","setCallback","ScrollBar","scrollMovable","alwaysVisible","paneSize","sizeRatio","Scroller","hasScrolling","hasNativeScrolling","_native","useNative","scrollHeader","fixedContainer","wrapInner","inner","avoidScrolling","horizontalSwipe","originatedFromFixedContainer","ownsElement","verticalSwipe","zoomSnapBack","animatedScroller","mousewheelScrolling","_wheelScrollHandler","_wheelScroll","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","_wheelTimeout","VERTICAL_AXIS","contentResized","_scale","zoomOut","disable","animatedScrollTo","pullHandled","_paneChange","scrollBar","visibleScrollHints","pullOffset","pullTemplate","releaseTemplate","refreshTemplate","MapService","MARKER","LOCATION","layersMap","scroller","zoomControl","markerLayer","initObserver","_notifyObserver","crs","_getOrigin","_initScroller","_initMarkers","_initControls","_initLayers","mousewheelThrottled","_setExtent","_getExtent","wraparound","locationObject","_layerSize","layerToLocation","pointObject","pointResult","eventToView","eventToLayer","eventToLocation","viewSize","_setOrigin","originLocation","newExtent","raw","layerWidth","layerHeight","_zoomAround","pivot","controls","_createAttribution","_createNavigator","_createZoomControl","_createControlElement","defaultPosition","posSelector","div$1","_navigatorPan","_navigatorCenter","bounds","_virtualSize","_scrollEnd","_zoomControlChange","_scroll","_scaleStart","_doubleTap","_createLayer","layerDefaults","layerOptions","markerDefaults","layerConstructor","markerLayers","_scrollOffset","_panComplete","_panEndTimestamp","_scaleToZoom","gestureCenter","centerLocation","tiles","_resetScroller","xBounds","yBounds","_renderLayers","newZoom","toZoom","fromZoom","BAR_GAP","BAR_SPACING","SANS","SANS11","SANS12","SANS16","TRANSPARENT","boxPlotSeries","outliersField","meanField","bulletSeries","waterfallSeries","funnelSeries","pyramidSeries","rangeArea","verticalRangeArea","heatmap","funnel","pyramid","horizontalWaterfall","rangeBar","verticalBoxPlot","baseTheme","flag","getTouch","domEvent","shouldBindGroup","groupNames","eventGroups","DomEvents","hammerInstance","eventHandlers","panstart","panmove","panend","pinchstart","pinchmove","pinchend","previousArgs","xLocation","yLocation","pointer1","pointer2","eventGroup","nameIdx","name_1","HAMMER","BaseEvent","AxisLabelClickEvent","PreventableEvent","DragEvent","DragEndEvent","DragStartEvent","LegendItemHoverEvent","LegendItemClickEvent","LegendItemLeaveEvent","NavigatorFilterEvent","NoteClickEvent","NoteHoverEvent","PlotAreaClickEvent","PlotAreaHoverEvent","RenderEvent","SelectEvent","SelectEndEvent","SelectStartEvent","SeriesClickEvent","SeriesHoverEvent","ZoomEvent","ZoomEndEvent","EVENT_MAP","axisLabelClick","dragEnd","dragStart","legendItemHover","legendItemClick","legendItemLeave","navigatorFilter","noteClick","noteHover","plotAreaClick","plotAreaHover","seriesClick","seriesHover","zoomEnd","zoomStart","ZoomStartEvent","DomEvent","toDomEvent","fontSize","fontFamily","computedBackgroundColor","seriesTemplate","ThemeService","setColors","mapColor","queryStyle","setInactiveOpacity","setFonts","defaultFont","titleFont","paneTitleFont","labelFont","setSeriesColors","unsetColor","seriesPos","varName","THROTTLE_MS","reducer","timerId","optionsReducer","currentState","chartCollectionIdxKey","reducers","collectionConfigurationItem","chartKey","configurationItem","themeReducer","themeItem","observersReducer","inCollection","collectionName","collectionIdx","collection","nextStore","TooltipPoint","xLow","xHigh","yLow","yHigh","SharedTooltipContent","colorMarker","colspan","nameColumn","ChartContext","COLLISION","TOOLTIP_CLASS","TooltipPopup","onChartMouseLeave","childrenObserver","observersStore","popupShown","popupOffset","popupStyles","popupContent","wrapperClass","SeriesTooltip","popupContext","tooltipProps","tooltipContent","findRenderFunction","seriesRenderer","findRenderFunctionByIndex","popupContainerClassName","onShowTooltip","createSharedTooltipContext","createTooltipContext","onHideTooltip","optionsStore","popupContend","AXES","mapTooltips","tooltips","axesCrosshairTooltipOptions","tooltipIdx","CrosshairTooltipContainer","storeUnsubscriber","subscriber","childrenMap","BaseChart","optionsUnsubscriber","themeStore","themeUnsubscriber","suppressTransitions","onRender","onLegendItemClick","seriesByIndex","pv","onChildMouseLeave","createStore","chartBaseTheme","loadTheme","instantiateCoreChart","spreadProps","currentIntlService","localeChanged","entries","keyValue","chartStyles","getChartOptions","deriveOptionsFromParent","onRefresh","chartConstructor","eventObject","getTarget","ChartDomEventsBuilder","DonutCenter","donutCenterStyles","_baseChart","donutCenterRender","baseChartProps","baseChart","KendoChart","CollectionConfigurationComponent","_chartKey","_parentStore","collectionItemProps","_chartCollectionIdxKey","ConfigurationComponent","childStore","configurationItemProps","ChartSeriesItem","ChartSeries","childType","prop_1","validateChildren","ChartLegend","CheckIfNYCDOELicense","licenseModel","schoolLicenseUsage","isDOELicense","vendorModel","schoolLicenseUsageChartData","kind","share","quantityAssigned","MAX_SAFE_INTEGER","quantityAllocated","labelContent","Tdata","getCourses","schoolDBN","schoolYear","pageNumber","getStarsCourses","sharedCourseUniqueId","searchStarsCourseByName","searchCourseName","filterCourses","searchCourseStatus","searchCourseType","searchUnpublishedStudents","getCourseDetail","courseId","getCourseStatus","getUnassignedVendorContentData","getVendorContentUnassignedCourses","vendorContentId","vendorId","getVendorContentData","GetCourseStatusChart","getAllocatedVendorsDetail","getAllocatedVendorDetailById","GetSchoolLicenseUsageChart","GetSchoolLicenseUsageReport","getNonAllocatedVendors","getAllocatedVendors","Dashboard","courseStatusList","setcourseStatusList","schoolLicenseUsageList","setSchoolLicenseUsage","courseService","licenseAllocationService","accumulator","courseCount","CourseChartContainer","vendor","vendorName","getSchoolsFromDaap","SchoolDropDown","orginalSchoolList","setOrginalSchoolList","schoolList","setSchoolList","_LocalStorageService$","_LocalStorageService$2","schoolService","dropDownData","sl","schoolName","_LocalStorageService$3","_LocalStorageService$4","_LocalStorageService$5","selectedSchool","filterData","getCurrentSchoolYear","SchoolYearDropDown","setCurrentYear","orginalSchoolYearList","setOrginalSchoolYearList","schoolYearService","schoolYearRange","selectedYear","axiosInstance","isAbsolute","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","invariant","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createLocation","searchIndex","decodeURI","URIError","resolvePathname","createTransitionManager","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","nextKeys","replaceState","goBack","goForward","unblock","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","pushHashPath","nextPaths","lowerBound","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","contextProp","getUniqueId","emitter","changedBits","createEventEmitter","objectIs","_Provider$childContex","_React$Component2","onUpdate","_Consumer$contextType","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","cache$1","cacheCount$1","matchPath","_options$exact","_options$strict","_options$sensitive","pathCache","compilePath$1","_compilePath","Route","context$1","computedMatch","isEmptyChildren","createURL","staticHandler","useHistory","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","_onClick","ex","isModifiedEvent","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","ariaCurrent","_ref$ariaCurrent","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","menuData","setMenuData","menuService","navigationURL","displayText","SchoolBanner","schoolData","getSchoolData","locationName","address","principalFullName","schoolInfoService","VendorDetail","vendorDetailData","setvendorDetailData","vendorDescription","licenseType","VendorContentDisplay","setCourseContentData","LicenseAllocationService","RadioButtonPropsContext","RadioButton","labelPlacement","inputProps","radioButtonLabel","radio","DialogTitleBar","onCloseButtonClick","closeIcon","DialogActionsBar","DATA_DIALOGS_ID","getMaxZIndex","currentWindowId","maxZindex","allWindows","zIndexChanged_1","KRwindow","computedStyle","zIndexValue","DialogWithoutContext","titleId","generateTitleId","onCloseDialog","kDialog","focusableContent","firstFocusableElement","lastFocusableElement","contentStyle","getActionBar","dialogElement","getAllSetupSchool","VendorCrudContent","originalSchoolList","setOriginalSchoolList","schoolListTo","setSchoolListTo","vendorList","setVendorList","vendorAllocatedList","setVendorAllocatedList","fromLocationCode","toLocationCode","quantityCap","formmode","schoolListService","vendorlist","vendorAllocatedlist","vendorChange","toLocationCodeError","vendorNameError","licenseQuantityError","Transfer","onSchoolSearch","VendorEditContent","datasource","totalLicenses","availableLicenses","assignedLicense","onVendorEditClose","GridHierarchyExpand","IconGear","xmlns","VendorContent","_userProfile$role","_userProfile$role2","editData","setEditData","ignored","getVendorDetail","nonAllocatedVendor","responseArray","nonAllocatedVendorDropDownData","vl","allocatedVendorDropDownData","onGridExpand","onVendorSave","VendorManageContent","isEditable","IconBrowserGear","MAX_DELAY_MS","setChainedTimeout","handleRef","timeoutAtMs","delayMs","useTimeout","Overlay","outerRef","_props$containerPaddi","_props$popperConfig","_useCallbackRef2","_usePopper","mountOverlay","rootClose","rootCloseDisabled","_PropTypes$func","_excluded2","outerProps","actualTransition","BaseOverlay","overlayProps","aRef","__wrapped","wrapRefs","outOfBoundaries","RefHolder","handleMouseOverOut","relatedNative","related","OverlayTrigger","propsShow","_ref$defaultShow","propsDelay","_ref$flip","triggerNodeRef","hoverStateRef","normalizeDelay","handleMouseOver","handleMouseOut","triggers","triggerProps","onMouseOver","onMouseOut","primaryPlacement","CardImg","DivStyledAsH5","DivStyledAsH6","CardBody","CardTitle","CardSubtitle","CardLink","CardText","CardHeader","CardFooter","CardImgOverlay","Card","Img","Subtitle","ImgOverlay","InputGroupAppend","InputGroupPrepend","InputGroupText","InputGroup","hasValidation","Radio","Checkbox","Append","Prepend","IconCourseEnvelop","courseType","courseOrginType","SplashScreen","SharedCoursesList","sharedCourses","itemProps","itemChildren","initialDataState","IndividualCourses","courseProps","isLoading","setIsLoading","errorMsg","setErrorMsg","assignedCourses","setAssignedCourses","checkedCourses","setCheckedCourses","starsCourses","setStarsCourses","showAddIndividualCoursesDialog","setShowAddIndividualCoursesDialog","setSelectedSchool","deletedCourse","setDeletedCourse","setPage","CoursesService","courseUniqueId","selectedCourse","toggleDialog","addIndividualCourses","getSchoolLocations","_userProfile$role2$lo","setSearchCourseName","_addIndividualCourse$","addIndividualCourse","individualCoursesUniqueId","courseTeachers","totalStudentEnrolled","updateCourseInfo","deleteIndividualCourse","individualCourseUniqueId","newCourseTeachers","studentCount","_selectedSchool$id2","getCourseByCourseName","_selectedSchool$id3","school","getDefaultValue","getElementById","_selectedSchool$id","selectedCourses","onGridCheckBoxClick","courseStatus","courseName","courseCode","starsSharedCourses","_item$firstName","_item$lastName","teacherId","firstName","lastName","teacherInitial","_courseProps$courseSt","sectionUniqueId","GetUnassignedTeachersBySchoolDBN","GetUnassignedTeacherById","IconPersonCircle","AssignedTeachers","setCourseTeachers","courseAdditionalStaff","setCourseAdditionalStaff","dataCopy","setRowCopyData","deleteTeacherId","setDeleteTecherId","getTeachers","TeacherService","CourseId","isSharedCourse","teacherData","courseSource","assignedTeachersVisible","setAssignedTeachersVisible","toggleAssignedTeachersDialog","setHeaderCheckBox","addTeacher","headerCheckBoxValue","searchTeacherEin","setSearchTeacherEin","_addCourseTeachers$te","addCourseTeachers","teachers","teacherIds","addedTeachers","currentTeacherList","onAssignTeachers","updateCourseStatus","courseteacherList","onDeleteTeacher","getTeacherById","isValidResponse","teacher","onHeaderCheckBoxClick","_dataItem$mainCourses","_dataItem$manageCours","mainCourses","teacherCourse","manageCourses","sectionName","changeTeacherCanManage","_teacher","_teacher2","teacherManageSection","_item$manageCourses","canManage","_prop$dataItem","_prop$dataItem2","_prop$dataItem2$cours","_prop$dataItem3","_prop$dataItem3$cours","GetUnassignedStaffBySchoolDBN","additionalStaffId","initialFilter","AssingedAdditionalStaff","deleteAdditionalStaffId","getAdditionalStaffBySchoolDBN","AdditionalStaffService","additionalStaffData","additionalStaffVisible","setAdditionalStaffVisible","addAdditionalStaff","addCourseAdditionalStaff","additionalStaff","additionalStaffIds","addedAdditionalStaff","currentAdditionalStaffList","courseAdditionalStaffList","_props$dataItem$cours","AddVendorContent","coursesService","addVendorCourseContentRecords","vendorConentId","courseVendorContent","vendorContentName","statusCode","closeCourseVendorContentModal","studentId","StudentId","IconStudentOutline","subItemsField","subItems","callbackfn","mapTree","tree","GROUP_ID_FIELD","GROUP_SUBITEMS_COLLECTION","setGroupId","parentValue","getGroupIds","groupIds","setExpandedState","propsToExtend","extendDataItem","collapsedIds","groupId","initialState","processWithGroups","newDataState","setGroupIds","EnrolledStudent","studentProps","courseStudent","setCourseStudent","deleteStudentId","setDeleteStudent","resultState","setResultState","collapsedState","setCollapsedState","gridData","setGridData","getStudent","StudentService","students","gradeLevelCode","studentData","dataResult","studentVisible","setStudentVisible","toggleStudentDialog","addStudent","searchStudentId","setSearchStudentId","addCourseStudent","courseSchoolDBN","student","studentIds","addedStudent","currentStudentList","onChangeStudentCount","courseStudentList","getStudentById","IconStudnetOutline","coursePurpose","_props$dataItem2$cour","AddNewCourse","_formValue$courseName","courseDetail","setSelectedValue","setCourseType","courseTypes","isDefaultSelected","purposeList","setPurposeList","purpose","contentTypeList","setContentTypeList","handleRadioChange","excludeDemoPurpos","purposList","defaultTeacher","teacherOfRecord","courseTitleError","purposeError","courseContentTypeError","teacherOfRecordError","startDateError","endDateError","courseNameDublicateError","courseSaveErrorMessage","courseContentType","endDate","isMerged","mergeCourses","createdBy","createdOn","oldTeacherId","mergedOn","mergedBy","setCourseSaveErrorMessage","changeCourseType","purposeOptions","originalTeacherList","onSearch","onTeacherSearch","teacherById","MergeCourses","mergeData","setMergeData","mergeCourseData","setMergeCourseData","courses","onMerge","Merge","mergeError","onMergeClose","MergeError","mergeMessage","LicenseSummary","trProps","hasNotEnoughLicense","availableLicense","cellContent","CourseDetail","_courseDetailData$mer","_props$sharedCourses","dataSource","setCourseDetailData","courseDetailData","course","courseinfo","lastSubmittedOnLMS","_courseDetailData$mer2","_courseDetailData$mer3","mergedCourse","_props$sharedCourses2","_props$sharedCourses3","AddCoursesForVendorContent","vendorContentDefault","setVendorContentDefault","unassignedCourses","setUnassignedCourses","selectedVendorContent","setSelectedVendorContent","vendorContentList","setVendorContentList","originalVendorContentList","setOriginalVendorContentList","vendorContentService","vendorcontent","vendorCourseCode","vendorCourseContentName","TotalCourses","TotalStudents","modifiedBy","_addMultipleCoursesVe","addMultipleCoursesVendorContent","multipleCoursesVendorContent","closeCourseForVendorContentModal","CheckboxPropsContext","labelOptional","touched","modified","stateChecked","setStateChecked","setStateValue","valueIsBoolean","isCheckedControlled","isValueControlled","currentChecked","useValueAsChecked","checkedProp","valueProp","indeterminateProp","localizeMessage","defaultValidationMessage","optionalMessage","currentVal","initialDir","setDir","rtlCandidate","useDir","checkboxClasses","onKeyUp","checkboxInput","checkboxLabel","initialDataSort","initialCourseTypes","initialCourseFilters","Courses","_userProfile$role5","_userProfile$role6","_userProfile$role7","setDefaultExpand","sortValue","filterCourseTypes","filterCourseStatus","setFilterCourseStatus","defaultSortValue","courseFilters","setCourseFilters","isPublishedSelected","setIsPublishedSelected","isUnpublishedStudentsChecked","setIsUnpublishedStudentsChecked","isUnpublishedStudentsValue","courseIdSelected","setCourseId","vendorContentIdSelected","setVendorContentId","refreshSubGrid","setRefreshSubGrid","tomorrow","setCourseDetail","pageAlert","setPageAlert","originalTeacherOfRecordList","setOriginalTeacherOfRecordList","teacherOfRecordList","setTeacherOfRecordList","setDefaultTeacher","CourseService","finally","deleteCourseSaveErrorMessage","courseNameSearch","setCourseNameSearch","clearCourseNameSearch","searchByCourseName","courseStatusFilter","courseArray","courseIndex","getNewCourseTeachers","newTeachers","courseTeacher","oldTeacher","newTeacher","SubGridHost","AssignedAdditionalStaff","showVendorContent","setShowVendorContent","showCoursesForSelectedVendorContent","setShowCoursesForSelectedVendorContent","courseNameChangeError","setCourseNameChangeError","courseNameError","teacherList","codesetService","codeSetName","cl","onCourseSave","onTeacherById","teacherEin","teacherExist","onMergeSave","vendorContents","deleteVendorContent","deleteCourseVendorContent","vendorContentArray","vendorContentIndex","ContentArray","ContentIndex","vendorInfo","xs","setIsEditable","setOnChangeName","onEditClick","editCourseName","totalStudentUnpublished","CourseNameBadge","TeacherBadge","buttonText","_userProfile$role4","onAddVendorContent","VendorContentBadge","_value$statusCode","_userProfile$role3","VendorContentId","_props$dataItem$vendo2","_props$dataItem$stars","_props$dataItem$vendo3","_props$dataItem$stars2","overlayTarget","showConfirmation","setShowConfirmation","canShow","onConfirmation","onCourseAction","getBySchoolDBN","PurchaseOrder","_formCascade$vendor","_formCascade$product","_formValue$purchaseOr","_formValue$purchaseOr2","_formValue$quantityPu","orginalVendorList","setOrginalVendorList","vendorListCopy","setVendorListCopy","productList","setProductList","setProduct","productSKU","price","priceType","formCascade","setFormCascade","vendors","products","vendorService","vendorDropDownData","quantityPurchased","unitPrice","purchaseOrderNumber","productNameError","quantityPurchasedError","purchaseOrderNumberError","serverSideError","purchaseOrder","purchaseOrderService","getPurchaseOrder","productService","productDropDownData","pl","productId","orderID","purchaseDate","GetLicenseUsageReport","GetDailyReport","GetAllReports","canDownload","saveAsBlob","blob","msSaveBlob","saveAsDataURI","dataURI","URL","createObjectURL","fileSaver","download","initMouseEvent","revokeObjectURL","postToProxy","proxyURL","proxyTarget","proxyData","defaultGroupHeaderTemplate","createArray","defaultItemId","ExcelExporter","_trimColumns","allColumns","_leafColumns","_prepareColumn","_visibleColumns","hierarchy","hasGroupHeaderColumn","groupHeaderColumnTemplate","collapsible","workbook","sheets","_hierarchyRows","_rows","freezePane","_freezePane","_filter","groupHeaderTemplate","groupFooterTemplate","footerTemplate","_depth","_createPaddingCells","paddingCellOptions","_dataRow","_groupHeaderCells","_dataRows","dataCells","cellIdx","_cell","groupHeaderCellOptions","previousItemId","itemLevel","itemId","hasFooter","_hasFooterTemplate","previousLevel","_hierarchyFooterRows","parentId","_hierarchyFooter","_prependHeaderRows","currentLevel","footerCellOptions","templateData","groupFooterCellOptions","_isColumnVisible","exportable","excel","visibleInExport","visibleInExportOnly","_headerRow","firstCell","headerPaddingCellOptions","_prepareHeaderRows","parentCell","parentRow","childRow","totalColSpan","headerCellOptions","_headerDepth","colSplit","rowSplit","cellOptions","autoWidth","Z_STREAM_ERROR","_has","sources","shrinkBuf","buf","fnTyped","arraySet","src_offs","dest_offs","flattenChunks","chunks","chunk","Buf8","Buf16","Buf32","Int32Array","fnUntyped","typedOK","strApplyOK","strApplyUintOK","utf8len","string2buf","m_pos","str_len","buf_len","_buf2binstring","buf2string","c_len","utf16buf","utf8border","adler32","adler","s1","s2","crcTable","makeTable","crc32","crc","inflate_fast","strm","_in","_out","beg","dmax","wsize","whave","wnext","s_window","hold","bits","lcode","dcode","lmask","dmask","here","from_source","next_in","avail_in","next_out","avail_out","lencode","distcode","lenbits","distbits","dolen","dodist","sane","MAXBITS","lbase","lext","dbase","dext","inflate_table","lens","lens_index","codes","table_index","work","incr","here_bits","here_op","here_val","sym","used","huff","base_index","offs","extra","extra_index","Z_STREAM_ERROR$1","TYPE$1","BAD$1","zswap32","InflateState","havedict","wbits","ncode","nlen","ndist","have","lendyn","distdyn","back","was","inflateReset","total_in","total_out","inflateResetKeep","inflateInit2","windowBits","inflateReset2","lenfix","distfix","virgin","fixedtables","updatewindow","inflate","flush","last_bits","last_op","last_val","hbuf","inf_leave","xflags","extra_len","comment","hcrc","data_type","inflateSetDictionary","dictionary","dictLength","ZStream","GZheader","Inflate","ended","inflateGetHeader","_mode","next_out_utf8","utf8str","allowBufError","binstring2buf","onData","inflateEnd","zero","static_ltree","static_dtree","_dist_code","_length_code","base_length","base_dist","static_l_desc","static_d_desc","static_bl_desc","LITERALS","L_CODES","D_CODES","MAX_BITS","extra_lbits","extra_dbits","extra_blbits","bl_order","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","pending_buf","send_bits","bi_valid","bi_buf","send_code","bi_reverse","gen_codes","bl_count","next_code","init_block","dyn_ltree","dyn_dtree","bl_tree","END_BLOCK","opt_len","static_len","last_lit","bi_windup","smaller","_n2","_m2","pqdownheap","heap","heap_len","compress_block","ltree","dtree","lx","d_buf","l_buf","build_tree","stree","heap_max","xbits","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","_tr_init","MAX_MATCH","LENGTH_CODES","tr_static_init","l_desc","d_desc","bl_desc","_tr_stored_block","stored_len","copy_block","_tr_align","STATIC_TREES","bi_flush","_tr_flush_block","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","BL_CODES","build_bl_tree","lcodes","dcodes","blcodes","rank","send_all_trees","_tr_tally","lit_bufsize","MAX_MATCH$1","MIN_LOOKAHEAD","HCRC_STATE","BUSY_STATE","FINISH_STATE","errorCode","zero$1","flush_pending","pending_out","flush_block_only","block_start","strstart","put_byte","putShortMSB","read_buf","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","_w_size","window_size","hash_size","ins_h","hash_shift","hash_mask","deflate_stored","max_block_size","pending_buf_size","max_start","deflate_fast","hash_head","bflush","match_length","max_lazy_match","MIN_MATCH$1","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","configurationTable","DeflateState","gzhead","gzindex","last_flush","w_bits","hash_bits","HEAP_SIZE$1","MAX_BITS$1","deflateReset","deflateResetKeep","lm_init","deflate","old_flush","bstate","deflate_huff","deflate_rle","toString$1","Deflate","memLevel","gzip","deflateInit2","avail","tmpDict","deflateSetDictionary","_dict_set","deflateEnd","external","nodebuffer","nodestream","arraybuffer","uint8array","_keyStr","stringToArrayLike","stringifyByChunk","fromCharCodeSupportsTypedArrays","arrayLikeToString","getTypeOf","canUseApply","resultStr","stringifyByChar","applyFromCharCode","arrayLikeToArrayLike","arrayFrom","arrayTo","transformTo","outputType","checkSupport","MAX_VALUE_16BITS","MAX_VALUE_32BITS","prepareContent","isBinary","isOptimizedBinaryString","FileReader","reader","readAsArrayBuffer","dataType","resultIndex","dataUrlPrefix","totalLength","decode","GenericWorker","streamInfo","generatedError","extraStreamInfo","isPaused","isFinished","isLocked","cleanUp","registerPrevious","mergeStreamInfo","processChunk","pause","withError","withStreamInfo","_utf8len","utf8encode","utf8decode","Utf8DecodeWorker","leftOver","previousData","nextBoundary","usableData","Utf8EncodeWorker","ConvertWorker","destType","transformZipOutput","mimeType","newBlob","remainingBytes","helper","updateCallback","dataArray","chunkType","_internalType","resultType","_outputType","_mimeType","StreamHelper","worker","internalType","_worker","updateCb","evt","createFolders","binary","compression","compressionOptions","dosPermissions","unixPermissions","DataWorker","dataP","dataIsReady","_tickScheduled","_tickAndRepeat","DataLengthProbe","crc32wrapper","crc32str","Crc32Probe","CompressedObject","compressedSize","uncompressedSize","compressedContent","getContentWorker","uncompressWorker","getCompressedWorker","createWorkerFrom","uncompressedWorker","compressWorker","ZipObject","_dataBinary","internalStream","askUnicodeString","_decompressWorker","isUnicodeString","_compressWorker","magic","arrayType","resolved","Uint32Array","FlateWorker","_pako","_pakoAction","_pakoOptions","_createPako","this$1$1","compressions","STORE","DEFLATE","LOCAL_FILE_HEADER","CENTRAL_FILE_HEADER","CENTRAL_DIRECTORY_END","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","decToHex","dec","bytes","generateZipParts","streamedContent","streamingEnded","platform","encodeFileName","dosTime","dosDate","file","useCustomEncoding","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","dataInfo","bitflag","extFileAttr","versionMadeBy","isDir","generateUnixExternalFileAttr","fileRecord","dirRecord","generateDataDescriptors","ZipFileWorker","streamFiles","bytesWritten","zipComment","zipPlatform","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","currentFilePercent","remainingFiles","openedSource","record","closedSource","localDirLength","centralDirLength","dirEnd","generateCentralDirectoryEnd","prepareNextSource","e$1","generateWorker","zip","zipFileWorker","relativePath","fileCompression","zipCompression","compressionName","getCompression","DataReader","checkOffset","checkIndex","setIndex","byteAt","readInt","readString","readData","lastIndexOfSignature","sig","readAndCheckSignature","readDate","dostime","ArrayReader","sig0","sig1","sig2","sig3","StringReader","Uint8ArrayReader","readerFor","ZipEntry","loadOptions","isEncrypted","bitFlag","useUTF8","readLocalPart","localExtraFieldsLength","fileNameLength","compressionMethod","findCompression","decompressed","readCentralPart","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","localHeaderOffset","readExtraFields","parseZIP64ExtraField","fileComment","processAttributes","madeBy","fileNameStr","extraReader","extraFieldId","extraFieldLength","extraFieldValue","handleUTF8","decodeParamType","fileCommentStr","upath","findExtraFieldUnicodePath","fileNameByteArray","decodeFileName","ucomment","findExtraFieldUnicodeComment","commentByteArray","upathField","ucommentField","ZipEntries","files","checkEntryCRC32","zipEntry","checkCRC32","optimizedBinaryString","zipEntries","unsafeName","safeName","unsafeOriginalName","checkSignature","expectedSignature","signature","isSignature","askedIndex","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","decodeContent","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","extraDataSize","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","readCentralDir","zip64","readEndOfCentral","endOfCentralDirOffset","expectedEndOfCentralDirOffset","extraBytes","prepareReader","fileAdd","forceTrailingSlash","parentFolder","folderAdd","zipObjectContent","lastSlash","createFolders$1","isRegExp","JSZip","newObj","filename","folder","newFolder","kids","generateInternalStream","generateAsync","loadAsync","dateToJulianDays","BASE_DATE","dateToSerial","packDate","MIME_TYPE","DATA_URL_PREFIX","DATA_URL_OPTIONS","BLOB_OPTIONS","ARRAYBUFFER_OPTIONS","toDataURI","parseJSON","foreach","XMLHEAD","RELS","WORKSHEET","frozenColumns","frozenRows","mergeCells","autoFilter","showGridLines","hyperlinks","validations","defaultCellStyleId","legacyDrawing","lastRow","lastCol","hasDisabledCells","skipCustomHeight","columnWidth","toWidth","formula","writeFormula","spreadsheetFilters","sqref","showErrorMessage","allowBlank","showDropDown","errorTitle","formula1","formula2","rId","DRAWINGS_RELS_XML","rels","numChar","$ref","filterRowIndex","px","Worksheet","sharedStrings","borders","_strings","_styles","_borders","_validations","_comments","_drawings","drawings","_hyperlinks","countData","relsToXML","comments","sheetIndex","WORKSHEET_RELS","toXML","mergedCells","rowsByIndex","indexRows","sorted","sortByIndex","fillCells","_readCells","defaultCellStyle","_hasDisabledCells","_lookupStyle","_getLastRow","_getLastCol","commentsXML","COMMENTS_XML","drawingsXML","images","main","drw","parseRef","topLeftCell","colOffset","pixelsToExcel","imageId","_lookupString","indexes","uniqueCount","json","_lookupBorder","cellData","EMPTY_CELL","borderLeft","borderRight","borderTop","borderBottom","dBorders","diagonal","defStyle","borderId","displayValue","stripFunnyChars","cellName","validation","_addValidation","MAP_EXCEL_TYPE","MAP_EXCEL_OPERATOR","comparerType","allowNulls","showButton","messageTemplate","titleTemplate","greaterThanOrEqualTo","lessThanOrEqualTo","convertColor","maybeRGB","$0","$1","Workbook","_images","_imgId","_sheets","borderSideTemplate","borderStyle","borderTemplate","diag","imageFilename","toZIP","docProps","creator","lastModifiedBy","CORE","sheetCount","sheet","APP","WORKBOOK_RELS","media","sheetIds","filterNames","userNames","localSheetId","quoteSheet","WORKBOOK","sheetName","def","localName","worksheets","drawingsRels","sheetRels","commentFiles","drawingFiles","sheetXML","relsXML","name$1","hasFont","underline","bold","italic","fontInPt","fontInPx","convertFontSize","fills","fontId","fillId","numFmtId","indent","SHARED_STRINGS","CONTENT_TYPES","toBlob","getSpan","upperStr","getcol","insertCell","topLeftRef","spanCell","nextRow","insertCellAt","appendCell","SPREADSHEET_FILTERS","generators","SPREADSHEET_CUSTOM_FILTER","criteria","customOperator","customValue","SPREADSHEET_DYNAMIC_FILTER","dynamicFilterType","SPREADSHEET_TOP_FILTER","SPREADSHEET_VALUE_FILTER","blanks","dynamic","doesnotmatch","esc","quarter1","quarter2","quarter3","quarter4","january","february","march","april","may","june","july","august","september","october","november","december","Template","updateContext","templateResult","ReactDOMServer","updateGroupHeaderContext","$implicit","updateGroupFooterContext","updateFooterContext","ExporterColumn","groupFooter","groupHeader","workbookOptions","sourceColumns","exporterColumns","addColumns","exporterColumn","toExporterColumns","ExcelExport","saveFile","dataURL","forceProxy","saveAs","extractColumns","extractChild","getExportData","exportData","onExportComplete","externalColumns","currentData","gridColumns","initialSort","LicenseUsageReport","setSort","_export","ReportsService","changeExcelRef","selectedReport","toDateString","filterReportData","LicenseAllocationReport","unlimittedQuantityAllocated","PublishedCoursesReport","TotalCountsReport","allData","stars","manual","manualCourses","sharedInstructionCourses","totalCourses","totalStarsTeachers","totalManualTeachers","totalSharedInstructionTeachers","totalTeachers","totalStarsStudents","totalManualStudents","totalSharedInstructionStudents","totalStudents","totalStarsUniqueTeachers","totalManualUniqueTeachers","totalSharedInstructionUniqueTeachers","totalUniqueTeachers","totalStarsUniqueStudents","totalManualUniqueStudents","totalSharedInstructionUniqueStudents","totalUniqueStudents","CourseStatusReport","LicenseTransferHistoryReport","DailyReport","MissingTORReport","ExcelExportColumn","ListGroupItem","ListGroup","horizontalVariant","TeacherCreatedCourseReport","reportsService","ein","teacherEmail","iLearnFlag","SharedInstructionCourseReport","getReportData","sharedCourseCreationDate","sharedCourseStatus","assignedStarsCourses","starsCourseName","assignedStarsCoursesTeachers","teacherName","teacherEIN","teacherDBN","starsCourseLocationCode","studentsCount","CourseEnrollmentSummaryReport","Report","setLicenseType","allReports","setAllReports","reportName","reportValue","setSelectedReports","excelRef","setExcelRef","defaultSelectedReport","_reports$find","reports","excelExport","headerOptions","teacherIdx","KendoOoxml","dataUrl","ele","sharedCourseName","sharedCourseLocationCode","teacherofRecordEIN","teacherofRecordName","starsCourseCode","starsMappingId","termId","ProfileMenu","onMenuClick","menuName","onNavigation","VendorContentManagement","_formValue$vendorCour","_formValue$vendorCour2","VendorContentService","childFormMode","vendorContentCourseNameError","vendorCourseCodeError","vendorContent","vendorContentReset","updateCourseCount","Product","_formValue$productNam","_formValue$productSKU","_formValue$price","codesetData","setCodeSetData","priceTypeList","setpriceTypeList","productDescription","priceTypeId","productSKUError","priceError","priceTypeError","productReset","selectedVendorId","productResponse","getProductData","priceTypeOptions","VendorManage","_formValue$vendorName","_formValue$vendorShor","_formValue$addressLin","_formValue$addressLin2","_formValue$city","_formValue$zip","_formValue$phoneNumbe","_formValue$vendorEmai","_formValue$vendorDesc","_formValue$licenseMod","_formValue$licenseTyp","getVendorData","VendorService","setChildFormMode","stateCodes","setStateCodes","setLicenseModelList","setLicenseTypeList","vendorShortName","phoneNumber","vendorEmail","addressLine1","addressLine2","city","licenseModelId","licenseTypeId","assignedContent","totalContent","vendorCourseAssignedCount","_licenseModel$find","_licenseModel$find2","licenseTypeList","_licenseType$find","NonTransferrableLicense","licenseModelError","licenseTypeError","licenseModelList","vendorDetails","currentFormMode","vendorArray","vendorIndex","IconWindowGear","_props$dataItem4","_props$dataItem3","_props$dataItem5","stateCodesOptions","stateCode","licenseModelOptions","licenseTypeOptions","SchoolManage","_formValue$principalN","_formValue$districtNu","_formValue$boroughCod","principalInfo","setPrincipalInfo","principalEmail","schoolsFromDaap","setSchoolsFromDaap","schoolsDaap","setSchoolsDaap","checkedTeachers","setCheckedTeachers","schoolLeadersFilter","setSchoolLeadersFilter","setTeacherList","setVisible","districtNumber","boroughCode","principalName","principalTitle","schoolLeaderVisible","setSchoolLeaderVisible","toggleSchoolLeaderDialog","schoolLeaderService","principalUpdateVisible","setPrincipalUpdateVisible","togglePrincipalUpdateDialog","schoolLeaderListVisible","setSchoolLeaderListVisible","schoolLeaderList","setSchoolLeaderList","toggleSchoolLeaderListDialog","schoolDetails","districtCode","learningEnvironmentID","schoolLeadersCount","getSchoolDataFromDaap","handlePrincipalChange","Column","addSchoolDetails","onPrincipalSave","principal","staffID","pmsId","doeEmail","actionCode","loginID","schoolLeader","associatedLocation","getStudentByLocationCode","getStaffByLocationCode","SearchStudentByLocationCode","SearchStaffByLocationCode","getStudentCoursesById","getStaffCoursesById","StudentCoursesDetails","studentAndStaffService","Student","searchForData","setSearchForData","setSearch","getStudentDataByLocationCode","replaceAll","searchNameOrId","emailId","StaffCoursesDetails","Staff","getStaffDataByLocationCode","StudentAndStaff","setSearchNameOrIdValue","clearSearch","searchData","ErrorDisplay","_errorContext$errorMe","errorContext","IconDOELogo","IconSchool","IconHome","SchoolYearManage","schoolYears","setSchoolYears","isSchoolYearChanging","setIsSchoolYearChanging","pageError","setPageErrors","schoolYearName","schoolYearStartDate","addNewSchoolYear","SchoolYearService","canAddNewSchoolYear","newYear","validateFormValues","ILearnLayout","isManageActivated","isManageRouteEnabled","setIsManageRouteEnabled","currentPath","setCurrentPath","onBack","PublicHeader","GlobalMenu","ManageHeader","onNavaigationProfile","Login","setUser","loggedOut","setLoggedOut","URLSearchParams","Home","loadingStatus","setloadingStatus","isSuccess","RbacService","rbacUser","jwt_decode","userProfileFromClaim","LocalStoreService","onILearn","gradientUnits","gradientTransform","SigninCallback","onRedirectError","isAuth","AuthConsumer","SilentRenew","App","isTokenExpired","refreshToken","getIntervalTime","ProtectedRoute","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","isLocalhost","registerValidSW","swUrl","serviceWorker","registration","onupdatefound","installingWorker","installing","onstatechange","controller","reportWebVitals","fetch","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"sourceRoot":""}